原因: MySQL8.0以上版本,远程访问还需要开启所有IP可以访问的权限
我遇到的报错:
正文:
· 1.首先运行MySQL :
docker run -p 3306:3306 --name mysqlLinux(随便) -e MYSQL_ROOT_PASSWORD=XXX(对应密码) -d mysql
· 2.进入MySQL:
docker exec -it mysql bash
·3. 接下我以命令合集表述(一些命令我进行了注释解释含义,以//XXX格式,注释内容不要放Linux执行)
//查看
ls
//进入bin
cd bin
//进入MySQL监视器
mysql -u root -p
//要求输入密码,输入密码即可
XX (你的对应密码)
//显示所有数据库,正确相应一个图形化的表格
show databases;
//下面这句无分号结尾
use mysql
//SQL语句字面含义,正确相应为一个图形化表格
select host,user,plugin from user;
//上句产生的图形化表格若有host:% ,user root 则不需要执行下面的句子,否则执行,执行结果就是使得有这么一条数据
//这里表示开启远程登录(%为任意,即任何host都可以通过root登录,即开启远程)
update user set host = ‘%’ where user = ‘root’;
//最关键的最后一步;更改加密策略
ALTER USER 'root(连接名)'@'%' IDENTIFIED WITH mysql_native_password BY 'XXX(你设置的密码)';
//注意上面这条语句中(连接名)(你设置的密码) 是解释,实际运行命令取出这些例如下面将给出一条正确输入样式:
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
·4 可能需要注意的事项(我没遇到如下问题):
我到这里通过Navicat已经可以正常连接了,这里列举几个还是无法远程连接的可能原因:
·4.1无法正常连接是否是没有刷新权限的问题(我没遇到,只是看到有人会使用如下语句)
解决方法:在上述流程后面追加如下语句刷新权限:
FLUSH PRIVILEGES;
·4.2 是否是因为Linux防火墙问题(我没遇到)