我的MySQL镜像版本是8.0
记录一下出现的意外情况:
我是以下面的命令来进行安装:
sudo docker run --name mysql_2 -d --restart always -p 5002:3306 -e MYSQL_ROOT_PASSWORD=yourpasswd -v $PWD/db2/data:/var/lib/mysql -v $PWD/db2/logs:logs mysql/mysql-server
这里的yourpasswd改为自己的密码
创建成功!
尝试连接,但是提示错误
Host 'XXX' is not allowed to connect to this Mysql server.
由此我们可以看出,客户端确实完成了通信,但是却由于权限的原因连接失败(不是网络原因)
根据搜索资料,得知mysql默认不支持远程登录,我们需要把"mysql.user" 表里的 "host" 项,从"localhost"改称"%"
即,允许任意IP访问。
这里进入docker,并连接mysql数据库。
执行修改语句:
保存,退出,再用mysql客户端连接试试。
尝试连接,却出现了新的错误:
可以看出是本地客户端不支持服务端的验证协议。在不能升级客户端的情况下,我们选择修改mysql服务端的验证协议。
alter user 'root'@'%' identified with mysql_native_password by 'yourpasswd'
再次尝试连接,就可以连接上了。