加油
努力

如何使用Xshell连接阿里云的MySQL数据库?

使用 Xshell 连接阿里云 MySQL 数据库,实际上是通过 SSH 隧道(端口转发) 将本地 Xshell 的某个端口映射到阿里云 ECS 实例上的 MySQL 端口,再通过本地客户端(如 Navicat、DBeaver 或命令行)连接。Xshell 本身不直接连接 MySQL,而是建立安全的 SSH 通道。

以下是详细步骤:


✅ 前提条件

  1. 阿里云 ECS 已安装并运行 MySQL(建议版本 5.7/8.0+)。
  2. MySQL 允许远程访问
    • 修改 my.cnf(通常位于 /etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf):
      [mysqld]
      bind-address = 0.0.0.0  # 监听所有 IP(生产环境慎用,可限制为特定安全组 IP)
    • 重启 MySQL:sudo systemctl restart mysqld
  3. 创建允许远程登录的用户(以 root 为例,推荐用专用用户):
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  4. 阿里云安全组规则放行
    • 登录阿里云控制台 → 云服务器 ECS → 实例详情 → 安全组 → 配置规则
    • 添加入方向规则:协议 TCP,端口 3306,授权对象设为 你的公网 IP0.0.0.0/0(测试可用,生产建议限 IP)。

⚠️ 注意:若仅通过 SSH 隧道访问,无需开放 3306 到公网!只需在安全组中放行 22(SSH)你自定义的隧道端口(如 3307)


🔧 步骤一:在 Xshell 中建立 SSH 会话(连接到 ECS)

  1. 打开 Xshell → 新建会话
  2. 主机填:ECS 的公网 IP
  3. 用户名:root(或其他有 sudo 权限的用户)
  4. 认证方式:密码 或 密钥(推荐密钥)
  5. 保存并连接成功

🔧 步骤二:配置本地端口转发(Port Forwarding)

在已连接的 Xshell 会话中:

  1. 右键会话名称 → 属性(Properties)
  2. 左侧选择 SSH → 隧道(Tunneling)
  3. 点击 添加(Add)
    • 类型:Local Port Forwarding
    • 源地址localhost(或 127.0.0.1
    • 源端口3307(自定义,避免冲突)
    • 目标地址127.0.0.1(ECS 内网的 localhost)
    • 目标端口3306(ECS 上 MySQL 的实际端口)
  4. 勾选 启用(Enable)
  5. 确定保存

✅ 此时:本地 localhost:3307 → SSH 隧道 → ECS 127.0.0.1:3306


🔧 步骤三:用本地 MySQL 客户端连接

现在你可以用任意 MySQL 客户端连接:

方法 A:命令行(Linux/macOS/Windows PowerShell)

mysql -h 127.0.0.1 -P 3307 -u remote_user -p
# 输入密码后进入 MySQL

方法 B:Navicat / DBeaver / MySQL Workbench

  • 主机:127.0.0.1
  • 端口:3307(你设置的本地转发端口)
  • 用户名:remote_user
  • 密码:StrongPassword123!
  • 协议:MySQL

✅ 连接成功!


🔐 安全建议

  • ❌ 不要长期开放 3306 到公网(0.0.0.0/0
  • ✅ 优先使用 SSH 密钥 + 端口转发
  • ✅ 限制 MySQL 用户权限(最小权限原则)
  • ✅ 定期更新密码,监控异常登录

需要我提供:

  • 一键脚本生成 Xshell 隧道配置?
  • Docker 部署 MySQL + 自动转发示例?
  • 如何验证隧道是否生效?

欢迎告诉我你的具体场景,我可以进一步定制方案 😊

云服务器