要通过命令行连接远程MySQL数据库,需要确保远程服务器已开启MySQL服务,并正确配置了访问权限,以下是详细步骤和注意事项:

确认远程MySQL服务配置
登录远程服务器,检查MySQL是否允许远程连接,编辑MySQL配置文件my.cnf
(通常位于/etc/mysql/
或/etc/my.cnf
),找到bind-address
参数,默认值可能是0.0.1
(仅本地连接),需修改为0.0.0
(允许所有IP)或指定远程IP,修改后重启MySQL服务:
sudo systemctl restart mysql
创建远程用户并授权
登录MySQL(本地或远程),为远程用户创建账号并授权,创建用户remote_user
,密码为YourPassword!
,允许从任意IP访问test_db
数据库:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'YourPassword!'; GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
若需限制IP,可将替换为具体IP(如'192.168.1.100'
)。
检查防火墙和端口
确保远程服务器的防火墙允许MySQL默认端口3306
通过,以Ubuntu为例:

sudo ufw allow 3306/tcp
若使用云服务器(如阿里云、AWS),还需在安全组规则中开放3306
端口。
使用命令行连接
本地终端通过以下命令连接远程MySQL:
mysql -h 远程服务器IP -u remote_user -p -P 3306
参数说明:
-h
:远程服务器IP地址或域名。-u
:已授权的用户名。-p
:提示输入密码(密码不会明文显示)。-P
:指定端口(默认3306
可省略)。
常见问题解决
- 连接被拒绝:检查用户权限、防火墙设置及
bind-address
配置。 - 无响应:确认网络连通性(
ping 远程IP
)和MySQL服务状态(systemctl status mysql
)。 - 字符集问题:添加
--default-character-set=utf8
参数避免乱码。
高级选项
通过mysql
命令的选项可优化连接,

mysql -h 192.168.1.100 -u remote_user -p --connect-timeout=10 -e "SHOW DATABASES;"
--connect-timeout
:设置连接超时时间(秒)。-e
:直接执行SQL命令后退出,适合脚本自动化。
安全建议
- 避免使用
'root'@'%'
,创建低权限专用用户。 - 通过SSH隧道加密连接:
ssh -L 3307:localhost:3306 user@远程服务器IP
本地通过
mysql -h 127.0.0.1 -P 3307 -u remote_user -p
连接,数据经SSH加密传输。
验证连接
成功登录后,执行以下命令测试:
SELECT VERSION(); SHOW DATABASES;
相关问答FAQs
Q1: 连接远程MySQL时提示“Host is not allowed to connect”,如何解决?
A1: 此错误通常因用户权限不足,需登录远程MySQL,执行GRALL PRIVILEGES ON *.* TO '用户名'@'允许的IP'
,并确保bind-address
配置为允许远程连接(如0.0.0
),最后执行FLUSH PRIVILEGES
刷新权限。
Q2: 如何通过命令行批量导出远程数据库?
A2: 使用mysqldump
命令,
mysqldump -h 远程IP -u remote_user -p 数据库名 > backup.sql
输入密码后,数据将导出为backup.sql
文件,若需压缩,可添加| gzip > backup.sql.gz
。