MySQL8.0.24
如果是删除了root账号的话,是一个比较麻烦的事情,不同版本可能有不同的解决方式,但是此种方式是我亲自实验过的,可以借鉴参考
docker exec -it 容器id /bin/bash
此文件不管有没有编辑就对了
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
skip-grant-tables
skip-grant-tables 是跳过权限验证的,这个东西一定要加上
加上上面的内容重启容器进入容器再进入MySQL的时候可能会报错,根据提示的信息可能会说没有/var/run/mysqld/mysqld.sock路径,注释掉
socket = /var/run/mysqld/mysqld.sock这一行就行了
进入容器输入MySQL即可进入MySQL
use mysql;
insert into mysql.user(Host,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Execute_priv,Create_view_priv,Show_view_priv,ssl_cipher,x509_issuer,x509_subject) values ('%','root',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y','0x','0x','0x');
如果插入失败先 flush privileges;再插入
插入成功再flush privileges;
SET PASSWORD FOR 'root'@'%' = '123456(这里改成自己的密码)';
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
删掉skip-grant-tables重启容器即可