docker 安装报错 ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)解决方法

以下操作针对mysql8.0.11版本:

第一步:安装mysql服务时

docker run -d -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d --name mysql -e MYSQL_ROOT_PASSWORD=mysql123 -p 3306:3306 -d mysql:latest

需要将 -v /data/mysql/conf:/etc/mysql/conf.d 这句话加上。这样的话mysql安装目录/etc/mysql/conf.d 会加载到docker 容器/data/mysql/conf目录下。

进入docker容器,在/data/mysql/conf目录下面新建my.cnf文件,名字可以随便起,但必须是.cnf结尾的文件。

vi my.cnf文件,加入下面的内容。

[mysqld]
skip-grant-tables

重启mysql服务。即可以mysql -u用户名 -p  登录进去。


第二步:更新root密码
select user,authentication_string from user;
update user set authentication_string=''  where user='root';

第三步:注释掉my.cnf 文件中的 skip-grant-tables
alter user'root'@'%' IDENTIFIED BY 'Mysql@123'; 
alter user'root'@'localhost' IDENTIFIED BY 'Mysql@123'; 

flush privileges;

发现用mysql客户端SQLyog连接,报 连不上。

MYSQL 8.0内新增加mysql_native_password函数,通过更改这个函数密码来进行远程连接。更改ROOT用户的native_password密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'Mysql@123';

执行完成。既可以连接了。

查看变量值:

SHOW VARIABLES LIKE 'lower%'; 

 

你可能感兴趣的:(开发工具)