要访问远程 MySQL 数据库,通常涉及两个主要步骤:配置 MySQL 服务器允许远程连接,在客户端建立连接。
以下是详细的操作指南,涵盖 Linux 服务器端配置和常见客户端连接方式。
第一步:配置 MySQL 服务器(服务端)
默认情况下,MySQL 只允许本地(localhost)连接,你需要修改配置以允许远程访问。
修改 MySQL 配置文件
登录到你的 MySQL 服务器(通常通过 SSH),编辑配置文件。
- Ubuntu/Debian:
/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/my.cnf - CentOS/RHEL:
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf
找到 bind-address 行:
# 默认值 bind-address = 127.0.0.1 # 修改为允许所有 IP 访问(生产环境建议指定具体 IP) bind-address = 0.0.0.0
注意:如果你使用的是 MySQL 8.0+ 或 MariaDB,也可能需要检查
skip-networking是否被启用,如果被启用,请注释掉该行。
重启 MySQL 服务
# Ubuntu/Debian sudo systemctl restart mysql # CentOS/RHEL sudo systemctl restart mysqld
创建/授权远程用户
登录 MySQL:
mysql -u root -p
执行以下 SQL 语句(以 MySQL 8.0+ 为例):
-- 1. 创建一个新用户(如果已存在可跳过) CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password'; -- 2. 授权该用户访问特定数据库(推荐) GRANT ALL PRIVILEGES ON your_database_name. TO 'your_username'@'%'; -- 或者授权所有数据库(不推荐用于生产环境) -- GRANT ALL PRIVILEGES ON . TO 'your_username'@'%'; -- 3. 刷新权限 FLUSH PRIVILEGES;
说明:
'your_username'@'%'中的 表示允许从任何 IP 地址连接,为了安全起见,建议将 替换为具体的客户端 IP 地址,'your_username'@'192.168.1.100'。
配置防火墙
确保服务器的防火墙允许 MySQL 默认端口(3306)的入站流量。
- UFW (Ubuntu):
sudo ufw allow 3306/tcp sudo ufw reload
- Firewalld (CentOS):
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload - 云服务商安全组:
如果你使用的是简米云、酷番云、AWS 等云服务器,必须在云控制台的安全组规则中,添加一条允许 TCP 3306 端口入站的规则。
第二步:客户端连接
使用命令行连接
mysql -h <服务器IP地址> -P 3306 -u your_username -p
输入密码后即可连接。
使用图形化工具(推荐)
- Navicat
- DBeaver
- MySQL Workbench
- DataGrip
在工具中新建连接,填写:
- 主机/Host: 服务器公网 IP
- 端口/Port: 3306
- 用户名/Username: 你创建的用户名
- 密码/Password: 你设置的密码
- 数据库/Database: 可选,指定默认数据库
⚠️ 安全重要提示
- 不要使用 root 用户远程连接:务必创建一个具有最小权限的新用户。
- 使用强密码
:确保密码复杂度高。
- 限制 IP 访问:在创建用户时,将 替换为具体的客户端 IP,避免任何 IP 都能连接。
- 启用 SSL/TLS:如果可能,配置 MySQL 使用 SSL 加密连接,防止数据在传输过程中被窃听。
- 定期更新:保持 MySQL 版本最新,以修复已知安全漏洞。
常见问题排查
- Connection refused (连接被拒绝):
- 检查防火墙是否开放 3306 端口。
- 检查云服务商安全组是否放行。
- 检查 MySQL 是否监听 0.0.0.0(
netstat -tlnp | grep 3306)。
- Access denied for user (访问被拒绝):
- 检查用户名、密码是否正确。
- 检查用户是否被授权从该 IP 地址连接( 或
@'具体IP')。 - 检查是否执行了
FLUSH PRIVILEGES;。
- Host ‘xxx’ is not allowed to connect:
这是 MySQL 权限问题,确认用户创建时的主机部分是否正确。
按照以上步骤操作,你应该能够成功访问远程 MySQL 数据库,如有具体问题,欢迎提供错误信息进一步排查。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/482468.html



