MySQL Shell 可直接连接远程 MySQL 实例,但前提是远程服务已开放网络访问:需配置 bind-address=0.0.0.0、授权用户(如 'user'@'%')、放行 3306 端口;安装命令为:Ubuntu/Debian 执行 wget + dpkg -i;CentOS/RHEL 执行 yum install mysql-shell;macOS 用 brew install mysql-shell;Windows 需下载 MSI 或 DMG 并安装至纯英文路径。

MySQL Shell 能直接连接远程实例,但必须确保远程 MySQL 服务本身已开放网络访问权限——Shell 只是客户端,不解决服务端的 bind-address、用户授权、防火墙三重限制。
安装 MySQL Shell 的实际命令(按系统区分)
别用官网文档里模糊的“下载安装包”话术,直接执行对应命令:
- Ubuntu/Debian:
wget https://dev.mysql.com/get/mysql-shell_8.0.33-1ubuntu22.04_amd64.deb→sudo dpkg -i mysql-shell_*.deb→ 若报依赖错误,补一句sudo apt --fix-broken install - CentOS/RHEL:
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm→sudo yum install mysql-shell - macOS:
brew install mysql-shell(前提是已装 Homebrew;若提示 command not found,请先装/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)") - Windows:下载
mysql-shell-8.0.33-macos-x86-64bit.dmg或.msi后双击安装,路径含空格或中文会触发mysqlsh: command not found,务必选纯英文路径(如C:\mysqlsh)
\connect 和 --uri 两种连接方式的区别与风险
用错连接语法会导致认证失败或密码明文泄露,尤其在共享终端或脚本中:
-
\connect root@192.168.1.100:3306:安全。Shell 会交互式提示输入密码,不记录到历史命令中 -
\connect root:password@192.168.1.100:3306:危险。密码出现在命令行中,history、ps aux、审计日志均可看到 -
mysqlsh --uri root:password@192.168.1.100:3306:同上,明文密码暴露风险更高,仅限测试环境临时使用 - 若远程 MySQL 启用了 SSL,必须加参数:
\connect root@192.168.1.100:3306 --ssl-mode=REQUIRED,否则连接会被拒绝(错误信息:SSL connection error: protocol version mismatch)
连不上?先确认这三件事而不是反复重试
90% 的“连接被拒绝”问题出在服务端配置,不是 Shell 本身:
- 远程 MySQL 的
my.cnf或my.ini中是否设置了bind-address = 0.0.0.0?如果是127.0.0.1或注释掉该行,Shell 永远连不上局域网 IP - 远程 MySQL 是否创建了允许外部访问的用户?仅执行
CREATE USER 'root'@'%' IDENTIFIED BY 'xxx';不够,还必须GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; - 远程服务器防火墙是否放行 3306 端口?Linux 执行
sudo ufw status或sudo firewall-cmd --list-ports;Windows 检查“高级安全 Windows 防火墙”入站规则里有无 3306 规则
真正卡住的地方,往往不是 Shell 怎么装、怎么连,而是远程 MySQL 的 host 字段写成了 localhost 却没意识到它只接受 Unix socket 连接——这个细节在错误信息里不会明说,只会报 Access denied for user,容易误判为密码错。


















