mysql如何配置远程访问_mysql网络权限设置

来源:这里教程网 时间:2026-02-28 20:44:47 作者:

bind-address 限制了谁也连不上

MySQL 默认只监听

127.0.0.1
,哪怕你改了用户权限、开了防火墙,远程连接照样失败——因为请求根本没进 MySQL 进程。关键配置在
/etc/mysql/my.cnf
(或
/etc/my.cnf
)里,找到这一行:

bind-address = 127.0.0.1

把它注释掉(加

#
),或者改成
bind-address = 0.0.0.0
(监听所有 IPv4 地址)。改完必须重启服务:
systemctl restart mysql
(Ubuntu/Debian)或
systemctl restart mysqld
(CentOS/RHEL)。

user 表 host 字段决定“能不能登录”

即使网络通了,MySQL 还会查

mysql.user
表:只有
user
host
同时匹配,才允许登录。默认的
'root'@'localhost'
只认本机,远程来的
'root'@'192.168.1.100'
'root'@'%'
是完全不同的账号。

不要直接
UPDATE user SET host='%' WHERE user='root'
—— 这会覆盖原有记录,可能引发权限混乱
推荐用
GRANT
创建新账号或扩权:
GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED BY 'your_strong_password';
执行后务必
FLUSH PRIVILEGES;
,否则变更不生效

MySQL 8.0 的 plugin 加密方式导致 Navicat 报 2059 错误

MySQL 8.0 默认用

caching_sha2_password
插件,但很多客户端(Navicat、旧版 JDBC 驱动)只认
mysql_native_password
。现象是:密码没错,但报
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded

解决方法是显式指定插件并重设密码:

ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';<br>FLUSH PRIVILEGES;

注意:不是改

authentication_string
字段,而是用
IDENTIFIED WITH
语法;如果用户不存在,先
CREATE USER
ALTER

别忘了云服务器的安全组和本地防火墙

本地改完,远程还是连不上?大概率卡在中间层:

腾讯云/阿里云/AWS 等都有「安全组」,默认关闭
3306
端口,必须手动放行(源 IP 可设为
0.0.0.0/0
或限定具体 IP 段)
Linux 本机防火墙也要开:
firewall-cmd --permanent --add-port=3306/tcp
+
firewall-cmd --reload
检查是否误启了
skip-grant-tables
(配置文件里有这行就全关权限校验,但也会导致授权失效)

真正能连上的链路是:远程客户端 → 云安全组 → 服务器防火墙 → MySQL bind-address → user 表 host+plugin+密码校验。漏掉任意一环,都是 “Access denied” 或 “Connection refused”。

相关推荐