mysql安装后配置远程访问权限的步骤

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

确认 MySQL 服务已运行且本地可登录

远程访问失败,往往不是权限问题,而是 MySQL 根本没起来,或者你连本地都登不进去。先用

mysql -u root -p
尝试登录,输入密码后能进命令行才算基础正常。如果报错
Can't connect to local MySQL server
,说明服务未启动,需先执行
sudo systemctl start mysqld
(CentOS/RHEL)或
sudo service mysql start
(Ubuntu/Debian)。

修改 root 用户的 host 值为 % 或指定 IP

MySQL 的用户权限由

user
表中的
host
字段控制,默认安装后
root@localhost
只允许本机连接。远程访问需要新增或更新一条记录,让 root(或其他用户)能从非本地地址登录。

登录 MySQL 后执行:

USE mysql;
UPDATE user SET host='%' WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;

⚠️ 注意:

host='%' 
表示允许任意 IP 连接,生产环境建议替换为具体 IP,如
'192.168.1.100'
;如果该记录不存在,应改用
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
+
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

检查并关闭防火墙或放行 3306 端口

即使 MySQL 允许远程连接,系统防火墙也可能拦截 3306 端口。常见错误是「能 ping 通服务器,但 telnet ip 3306 超时」。

CentOS 7+/RHEL:运行
sudo firewall-cmd --permanent --add-port=3306/tcp
,再
sudo firewall-cmd --reload
Ubuntu/Debian(ufw):执行
sudo ufw allow 3306
云服务器(如阿里云、腾讯云):还需在安全组中手动添加入方向规则,开放 TCP:3306

验证端口是否监听:运行

sudo netstat -tlnp | grep :3306
,输出中应含
0.0.0.0:3306
*:3306
;若只显示
127.0.0.1:3306
,说明 MySQL 绑定到了本地回环,需修改配置文件。

确认 bind-address 配置未限制监听范围

MySQL 默认可能只监听

127.0.0.1
,导致即使开了远程权限也无法响应外部请求。检查配置文件(通常为
/etc/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
)中的
bind-address
设置:

[mysqld]
bind-address = 0.0.0.0

改成

0.0.0.0
表示监听所有 IPv4 接口;设为
::
则同时监听 IPv6;注释掉该行有时也生效,但显式声明更可靠。改完必须重启服务:
sudo systemctl restart mysqld

实际调试时最容易漏掉这一项——权限、密码、防火墙全对,就卡在 bind-address 没放开。

相关推荐