开启 MySQL 远程连接需五步:一、修改用户 host 为 % 并刷新权限;二、将 bind-address 设为 0.0.0.0;三、重启 MySQL 服务;四、防火墙放行 3306 端口;五、推荐创建专用远程用户并授权。

如果您尝试从其他主机连接 MySQL 服务器,但连接被拒绝,则可能是由于 MySQL 默认仅允许本地连接。以下是开启 MySQL 远程连接的步骤:
一、修改 MySQL 用户权限
MySQL 通过用户账户的 host 字段控制允许连接的来源地址,将对应用户的 host 值从 localhost 改为 % 可使其接受任意 IP 的连接请求。
1、使用 root 账户登录 MySQL 命令行:mysql -u root -p
2、切换到 mysql 系统数据库:USE mysql;
3、查询当前 root 用户的 host 设置:SELECT host, user FROM user WHERE user=’root’;
4、更新 root 用户的 host 为 %(允许所有 IP):UPDATE user SET host=’%’ WHERE user=’root’ AND host=’localhost’;
5、刷新权限表使更改生效:FLUSH PRIVILEGES;
二、检查并修改 MySQL 绑定地址
MySQL配置文件 中的 bind-address 参数限制了服务监听的网络接口,默认值 127.0.0.1 仅响应本地请求,需将其更改为 0.0.0.0 或具体服务器 IP 以启用外部访问。
1、定位 MySQL 配置文件,常见路径为/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu/Debian)或/etc/my.cnf(CentOS/RHEL)
2、用文本编辑器打开该文件:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
3、查找包含 bind-address 的行
4、将其值修改为:bind-address = 0.0.0.0
5、保存并退出编辑器
三、重启 MySQL 服务
配置更改后必须重启 MySQL 服务,使新绑定地址和权限设置生效。
1、在 Ubuntu/Debian 系统上执行:sudo systemctl restart mysql
2、在 CentOS/RHEL 系统上执行:sudo systemctl restart mysqld
3、验证服务状态是否为 active:sudo systemctl status mysql(或 mysqld)
四、配置 防火墙 放行 3306端口
操作系统 防火墙可能拦截来自外部的 TCP 3306 端口连接请求,需显式添加规则允许该端口通信。
1、在使用 UFW 的系统上运行:sudo ufw allow 3306
2、在使用 firewalld 的系统上运行:sudo firewall-cmd –permanent –add-port=3306/tcp
3、重载 firewalld 配置:sudo firewall-cmd –reload
4、确认端口已开放:sudo ufw status verbose 或 sudo firewall-cmd –list-ports
五、创建专用远程访问用户(推荐)
直接开放 root 远程访问存在安全风险,建议新建具有最小必要权限的专用用户,并限定其可访问的数据库与来源 IP。
1、登录 MySQL 后执行:CREATE USER ‘remote_user’@’%’ IDENTIFIED BY ‘StrongPass123!’;
2、授予该用户对指定数据库的全部权限:GRANT ALL PRIVILEGES ON mydb.* TO ‘remote_user’@’%’;
3、刷新权限:FLUSH PRIVILEGES;
4、如需限制仅特定 IP 访问,将 % 替换为具体 IP,例如:‘remote_user’@’192.168.1.100’






























