上一篇
场景引入:
凌晨两点,你正窝在沙发里调试公司官网的数据库,突然发现本地测试的数据和服务器不同步,同事在微信里催:"赶紧连上生产环境改个数据!" 但当你输入mysql -u root -p
后猛然意识到——这台新电脑根本没配置远程访问权限,别慌,10分钟后你就能像黑客电影里一样,优雅地远程操控数据库了。
注意:开放远程连接会带来安全风险,务必看完本文的「安全防护」章节
在服务器上执行:
systemctl status mysql # Ubuntu/CentOS 7+ # 或 service mysql status # 旧版系统
看到active (running)
才算通关
服务器防火墙:
sudo ufw allow 3306/tcp # Ubuntu # 或 firewall-cmd --add-port=3306/tcp --permanent # CentOS firewall-cmd --reload
云平台安全组(以阿里云为例):
控制台 → 云服务器ECS → 安全组 → 添加3306端口入方向规则
找到MySQL配置文件(不同系统位置不同):
/etc/mysql/mysql.conf.d/mysqld.cnf
(Ubuntu) /etc/my.cnf
(CentOS) 用nano/vim编辑:
[mysqld] bind-address = 0.0.0.0 # 允许所有IP访问 # 或指定特定IP bind-address = 192.168.1.100
登录MySQL后执行:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
把换成具体IP可限制访问来源
sudo systemctl restart mysql # 或 sudo service mysql restart
在另一台电脑运行:
mysql -h 服务器IP -u remote_user -p
输入密码后看到mysql>
提示符即成功
port=3307
,记得同步修改防火墙规则 UPDATE mysql.user SET Host='192.168.1.%' WHERE User='remote_user';
[mysqld] ssl-ca=/etc/mysql/ca.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
SELECT host FROM mysql.user WHERE user='remote_user'; # 如果显示localhost而非%,执行: UPDATE mysql.user SET host='%' WHERE user='remote_user';
netstat -tuln | grep 3306
是否监听 在my.cnf添加:
[mysqld] skip-name-resolve # 禁用DNS反向解析
终极提示:完成配置后,建议用mysql_secure_installation
加固数据库,并定期检查/var/log/mysql/error.log
,现在你可以喝着咖啡远程处理数据了,但千万别在星巴克连生产环境——除非你想请全场喝咖啡。
本文由 聂小谷 于2025-08-01发表在【云服务器提供商】,文中图片由(聂小谷)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/501473.html
发表评论