在我的docker实例中,有一个图像mysql / mysql-server:latest,我通过它运行它:
# docker run - name=mysql1 -e MYSQL_ROOT_HOST=% -p 3306:3306 -d <Image-ID>
我也运行以下内容:
# docker logs mysql1 | grep GENERATED
以获取root密码。然后我运行:# docker exec -it mysql1 mysql -uroot -p
然后:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';
此外,我在iptables中打开端口3306:
-A INPUT -p tcp -m tcp - dport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp - dport 3306 -j ACCEPT
但是我无法远程访问MySQL。显然,当我从另一台机器运行以下内容时:
> mysql -uroot -p -h 192.168.xxx.xxx
我看到以下错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.xxx.xxx' (10060 "Unknown error")
最佳做法是禁止远程root登录,我想这个Docker镜像紧随其后。
您可以执行以下两项操作之一:
允许以root用户身份进行远程登录(不理想)
使用mysql;
更新用户SET主机='%',用户='root';
使用适当的权限创建另一个用户。(首选选项)