5.7版本(centos7 里测试)
1、忘记密码,跳过检测
第一种,用docker安装的,进入容器/etc/mysql 和外部挂载的直接修改文件
[root@wjy mysqlconfig]
root@97ca731b5ff4:/
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root@97ca731b5ff4:/
root@97ca731b5ff4:/
[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
如果容器里没有vi指令,也不愿意安装,也可以从挂载出来的路径里去修改,我这里用docker-compose安装的
[root@wjy ~]
version: "2.1"
services:
mysql:
image: mysql:5.7.20
restart: unless-stopped
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- /data/docker/mysql/mysql:/var/lib/mysql
- /data/docker/mysql/mysqlconfig:/etc/mysql
[root@wjy ~]
[root@wjy conf.d]
/data/docker/mysql/mysqlconfig/conf.d
[root@wjy conf.d]
[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
如果这里也没有,就再用docker run运行一个测试用的mysql,然后用docker cp 去复制出来容器内部的/etc/mysql目录,注意不要把目录挂载出来,要不然白玩 例子: 注意这里要把整个目录弄出来,在我试验过程中,文件不齐全的情况下,容器是起不来的
[root@wjy tmp]# docker cp 97ca731b5ff4:/etc/mysql .
这里是正式运行环境的mysql容器挂载目录,上边提到过
[root@wjy tmp]# cp mysql/* /data/docker/mysql/mysqlconfig/
第二种,直接将mysql安装在主机的,我没做测试,网上说修改/etc/mysql/my.cnf 文件,也是增加skip-grant-tables
2、清空密码
root@97ca731b5ff4:/
Enter password:
mysql> use mysql
mysql> update user set authentication_string='' where user = 'root';
3、写入新密码
mysql> use mysql
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update mysql.user set authentication_string=password('123456') where user='root';
4、刷新权限
mysql> flush privileges;
5、赋予root用户所有数据库的所有权限
mysql> grant all privileges on *.* to root@'%' identified by '123456';
mysql> flush privileges;
8.0版本(Ubuntu 20.04.3里做的,别人的机器,不好做太多试验)
1、默认安装自动生成账密
在安装过程中,直接安装在了主机里,使用的自动生成的账号密码,所以不知道root密码 自动生成的账号密码 账号:debian-sys-maint 密码:BcJnVUVx3JlY0Vq5 因为有这个密码,所以直接登录后重置了root密码,没有做设置免密登录那一步
2、清空密码(与5.7有区别)
zsw@ubuntu:~$ mysql -udebian-sys-maint -pBcJnVUVx3JlY0Vq5
mysql> update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';
mysql> select user ,plugin from mysql.user;
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | mysql_native_password |
| debian-sys-maint | caching_sha2_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session | caching_sha2_password |
| mysql.sys | caching_sha2_password |
| root | mysql_native_password |
| zsw | caching_sha2_password |
+------------------+-----------------------+
7 rows in set (0.00 sec)
mysql> use mysql
mysql> update user set authentication_string='' where user='root';
mysql> show fields from user;
| plugin | char(64) | NO | | caching_sha2_password | |
| authentication_string | text | YES | | NULL | |
3、写入新密码
mysql> use mysql
mysql> update user set authentication_string='123456#Abc' where user='root';
4、刷新权限
mysql> flush privileges;
5、赋予root用户所有数据库的所有权限
mysql> grant all privileges on *.* to root@'%' identified by '123456#Abc';
mysql> flush privileges;
补充: // 删除用户。
mysql>use mysql;
mysql>delete from user where User="test" and Host="localhost";
mysql>flush privileges;
// 删除用户的数据库
mysql>drop database test;
|