菜鸟科技网

MySQL命令行如何登录远程服务器?

要通过MySQL命令行登录远程服务器,首先需要确保远程MySQL服务已开启远程访问权限,并且网络防火墙允许3306端口的连接,以下是详细步骤和注意事项:

MySQL命令行如何登录远程服务器?-图1
(图片来源网络,侵删)

检查远程MySQL服务配置

登录远程服务器后,编辑MySQL配置文件(通常为/etc/mysql/mysql.conf.d/mysql.cnf/etc/my.cnf),找到bind-address参数,将其值改为0.0.0(允许所有IP连接)或指定允许的IP地址,保存后重启MySQL服务:

sudo systemctl restart mysql

创建远程用户并授权

登录本地MySQL后,执行以下命令为远程用户授权(假设用户名为remote_user,密码为password):

CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 表示允许任意IP连接,可替换为特定IP(如168.1.100)增强安全性。

检查防火墙和网络

确保远程服务器防火墙允许3306端口访问:

sudo ufw allow 3306  # Ubuntu/Debian
sudo firewall-cmd --permanent --add-port=3306/tcp  # CentOS/RHEL

同时检查云服务器安全组(如AWS、阿里云)是否开放3306端口。

MySQL命令行如何登录远程服务器?-图2
(图片来源网络,侵删)

本地登录远程MySQL

使用以下命令格式登录:

mysql -h 远程服务器IP -u remote_user -p
mysql -h 192.168.1.100 -u remote_user -p

输入密码后即可进入MySQL命令行。

常见问题排查

  • 连接超时:检查远程服务器防火墙、MySQL服务状态及bind-address配置。
  • Access denied:确认用户权限(SHOW GRANTS FOR 'remote_user'@'%')及密码是否正确。
  • 网络问题:使用telnet 远程IP 3306测试端口连通性。

安全建议

  • 避免使用root@直接远程登录,限制用户权限(如GRANT SELECT, INSERT ON db.* TO 'user'@'%')。
  • 通过VPN或SSH隧道连接,避免直接暴露MySQL端口。

相关问答FAQs

Q1: 登录时提示“Host 'xxx' is not allowed to connect to MySQL server”怎么办?
A: 这是因为远程用户未授权当前IP,需登录远程MySQL执行:

CREATE USER 'remote_user'@'当前IP' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'当前IP';
FLUSH PRIVILEGES;

或修改用户授权范围为(不推荐,降低安全性)。

MySQL命令行如何登录远程服务器?-图3
(图片来源网络,侵删)

Q2: 如何通过SSH隧道安全连接远程MySQL?
A: 在本地终端执行:

ssh -L 3307:localhost:3306 user@远程服务器IP

然后本地连接:

mysql -h 127.0.0.1 -P 3307 -u remote_user -p

这样流量会通过SSH加密,无需开放公网3306端口。

分享:
扫描分享到社交APP
上一篇
下一篇