问题:
root账号本地登录mysql失败:
进入docker容器,登录mysql,mysql -uroot -p
忘记密码或者登录失败情况报错:
Access denied for user 'root'@'localhost' (using password: YES)
解决
1.跳过数据库权限验证
编辑mysql 配置文件my.cnf
进入容器内部,cd /etc/mysql/my.cnf
vim my.cnf
在[mysqld]下添加一行配置:
[mysqld]
skip-grant-tables
2.重启mysql
docker restart mysql8
3.进入mysql
进入容器内部,进入mysql
mysql -uroot -p 不用输密码,直接回车,进入mysql.
4.授权
‘root’@‘localhost’;这个是本地root登录的密码。
‘root’@‘%’;这个是远程root账号的登录密码。
密码尽量避免过于简单。
FLUSH PRIVILEGES;
-- 删除原来用户
DROP USER 'root'@'localhost';
DROP USER 'root'@'%';
-- 新增用户并设置密码
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'DW2Qn5vRBqpE';
CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'DW2Qn5vRBqpE';
-- 授权所有数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;
5. 移除skip-grant-tables
编辑mysql 配置文件my.cnf
移除 skip-grant-tables
重启容器。