docker 容器内mysql 无法远程连接?

234 阅读1分钟

1. 测试能否打通服务器3306端口

在win10 打开cmd 窗口,使用telnet 测试, 如果能打通说明服务器3306端口是开放的。

如果没有打通,则看 步骤 2. (附:windows telnet 安装与使用)

telnet 192.168.88.151 3306

2. 查看防火墙是否开放3306端口

进入服务器,注意如果防火墙关闭,则需要启动防火墙

# 查看防火墙是否启动
systemctl status firewalld
# 如果没有启动,则启动防火墙
systemctl start firewalld
# 开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙使配置生效
firewall-cmd --reload

3. 判断 mysql 是否开启远程连接权限

-- 查看权限
SELECT host, user, plugin, authentication_string FROM mysql.user;

-- 开放远程连接权限
GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'%' IDENTIFIED BY 'yourpassword' with grant option;

-- 刷新权限
FLUSH privileges;

4. 判断 mysql 配置绑定ip是否正确

# 修改 /etc/my.cnf 绑定地址为 0.0.0.0
bind-address=0.0.0.0

5. 判断 mysql 用户名密码端口是否正确

-- 修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new_password';