OpenEuler 24.02 -mysql 8.0.6远程连接失败解决方案
·
OpenEuler 24.02 -mysql 8.0.6远程连接失败解决方案
排查步骤
-
确定
mysql真的能在Linux上运行ps aux | grep mysql # 可能是 mysqld、mariadbd 等
-
检查root密码(是否为空)及认证插件
SELECT user, host, plugin, authentication_string FROM mysql.user WHERE user='root';查看 root@% 是否有密码(authentication_string 不能为空),以及插件类型
- 如果插件时 auto_scoket ,则远程连接必失败
- 如果插件时
caching_sha2_password,老客户端可能需要更换插件为mysql_native_password
检查网络监听端口:
ss -tlnp | grep 3306
或者
netstat -tlnp | grep 3306

- 输出
0.0.0.0:3306或::3306→ 正常(监听所有接口) - 输出
127.0.0.1:3306→ 只监听了本地,需要在/etc/my.cnf中将bind-address改为0.0.0.0或服务器 IP,然后重启 MySQL。
检查MySQL用户权限
检查远程连接是否成功,不仅仅时localhost
SELECT user, host FROM mysql.user WHERE user = '要连接的用户名';
- 如果host列只有localhost 或127.0.0.1 -> 只允许本地连接
解决方法:
授权任意用户远程连接并刷新用户权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
检查本地防火墙权限
防火墙需要放行mysql端口
firewalld系统
firewall-cmd --list-all #查看当前防火墙规则
firewall-cmd --permanent --add-port=3306/tcp #添加规则,放行3306端口'
firewall-cmd --reload #重启防火墙
iptables 直接管理:
iptables -L INPUT -n --line-numbers | grep 3306 # 查是否有 ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # 无则添加
如果嫌防火墙干扰测试,可临时关闭:
systemctl stop firewalld
iptables -P INPUT ACCEPT # 慎用,清空规则或改为全放
检查云服务商的安全组(如果是云主机)
阿里云/腾讯云/AWS 等控制台里的安全组规则是独立于服务器的外层防火墙。
- 入方向必须放行
TCP:3306 - 务必检查源 IP 是否为你的公网出口(也可先设
0.0.0.0/0测试,通过后收紧)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)