问题:

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

重启容器。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐