在我的 docker 实例中,有一个图像 mysql/mysql-server:latest我运行它:
# docker run - name=mysql1 -e MYSQL_ROOT_HOST=% -p 3306:3306 -d <Image-ID>
我还运行以下内容:
# docker logs mysql1 | grep GENERATED
以获取根密码。然后我跑:# 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")
最佳做法是禁止远程根登录,我想这个 Docker 映像已经遵循了这一点。
您可以执行以下两项操作之一:
-
允许以 root 身份远程登录(不理想(
使用mysql;
更新用户设置主机='%' 其中用户='根';
-
创建另一个具有适当权限的用户。.(首选选项(