开启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'










