目录
前言:
关于使用Docker之后,用mysql进行远程连接,报了两个连接时的错误,一个是2003和2059
一、mysql远程连接报2003
一、查看报错原因:
Mysql数据库的默认配置文件my.cnf(linux、docker下)中的bind-address默认为127.0.0.1
二、解决报错:
1、先进入到docker的mysql容器中,输入密码
命令如下:
进入mysql容器:
docker exec -it mysql bash
登录mysql
mysql -uroot -p;(注意一定要打分号,分号是终止命令符号)
2、授权
GRANT ALL ON . TO ‘root’@’%’;
3、刷新权限
flush privileges;
4、更改加密规则
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
5、更新root用户密码
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;(密码是自己定义的)
6、刷新权限
flush privileges;
执行以上命名,一步一步来,2003错误就可以解决了
二、mysql远程连接报2059
一、分析原因:
错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password
二、解决步骤:
一、进入到mysql容器中
二、更改加密方式
注意:括号中是远程连接时要写%,不是远程连接就写localhost
ALTER USER 'root'@'localhost'('%') IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
三、更新用户密码
ALTER USER 'root'@'localhost' ('%')IDENTIFIED WITH mysql_native_password BY 'password';
四、刷新权限
FLUSH PRIVILEGES;