答案是配置MySQL用户权限、修改绑定地址为0.0.0.0、开放防火墙3306端口。具体需创建允许远程连接的用户,编辑mysqld.cnf配置文件,重启服务并设置ufw防火墙规则,最后通过mysql -h IP -u用户-p连接,生产环境应限制IP以确保安全。

要实现Linux下MySQL数据库的远程访问,关键在于正确配置MySQL用户权限和服务器网络设置。默认情况下,MySQL只允许本地连接,需手动调整才能让外部主机访问。
开启MySQL远程访问权限
MySQL通过用户账户的主机名限制登录来源。要允许远程连接,需创建或修改用户,使其可以从非本地IP连接。
操作步骤:
- 登录MySQL:使用root账户进入数据库
mysql -u root -p - 授权远程用户:
允许特定用户从任意主机连接(不推荐生产环境)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
或仅允许来自某个IP的连接(更安全)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100' IDENTIFIED BY 'password'; - 刷新权限:
FLUSH PRIVILEGES;
修改MySQL绑定地址
MySQL默认监听127.0.0.1,需更改配置文件以监听公网或所有接口。
编辑配置文件:
- 打开MySQL配置文件(路径可能为 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - 找到 bind-address 行,将其改为:
bind-address = 0.0.0.0
这表示监听所有网络接口。 - 保存并重启MySQL服务:
sudo systemctl restart mysql
配置防火墙允许3306端口
即使MySQL允许远程连接,系统防火墙也可能阻止外部访问。
使用ufw开放端口:
- 允许MySQL默认端口:
sudo ufw allow 3306 - 更安全的做法是仅允许特定IP:
sudo ufw allow from 192.168.1.100 to any port 3306 - 查看规则是否生效:
sudo ufw status
完成上述配置后,即可从远程主机使用客户端连接MySQL:
mysql -h your_server_ip -u username -p
基本上就这些。只要权限、配置文件和防火墙都设置正确,远程访问就能正常工作。注意生产环境应避免使用 % 通配符开放所有IP,尽量限定具体来源IP,保障数据安全。










