只需安装 mysql-client 即可使用命令行工具连接远程数据库,无需安装完整 MySQL 服务器;各系统安装方式不同,推荐通过 ~/.my.cnf 或更安全的 mysql_config_editor 配置免密登录。

直接装 mysql-client 就够了,不用装完整 MySQL 服务器
如果你只想要 mysql 命令行工具(比如连远程数据库、执行 SQL、导出数据),根本不需要安装 MySQL 服务器(mysqld)。装完整包反而浪费磁盘、多开端口、增加维护负担。
不同系统安装方式略有差异:
- Ubuntu/Debian:
sudo apt install mysql-client(注意不是mysql-server) - CentOS/RHEL 8+:
sudo dnf install mysql(这个包默认只含客户端) - macOS(Homebrew):
brew install mysql-client,然后把mysql加入 PATH:echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc - Windows:直接下载 MySQL Installer,自定义安装时只勾选
MySQL Client和MySQL Shell即可
配置 ~/.my.cnf 避免每次输密码和 host
mysql 命令本身不读取环境变量或全局配置文件,但会自动加载用户家目录下的 ~/.my.cnf(权限必须是 600,否则忽略)。这是最安全、最常用的免密登录方式。
示例内容(保存为 ~/.my.cnf):
[client] host = 192.168.1.100 port = 3306 user = myuser password = mypass database = mydb
注意几点:
- 文件权限必须设为
chmod 600 ~/.my.cnf,否则mysql会报错Warning: World-writable config file is ignored -
[client]段生效于所有客户端命令(mysql、mysqldump、mysqladmin) - 密码明文存储有风险,生产环境建议用
mysql_config_editor加密存储(见下一条)
用 mysql_config_editor 存加密登录信息(推荐用于生产)
mysql_config_editor 是 MySQL 官方提供的凭据加密工具,生成的 ~/.mylogin.cnf 文件用 AES 加密,比明文 ~/.my.cnf 更安全。
操作步骤:
- 存一组登录信息:
mysql_config_editor set --login-path=prod --host=prod-db.example.com --user=admin --password(执行后会交互式输入密码) - 连接时直接用:
mysql --login-path=prod - 查看已存配置(不显示密码):
mysql_config_editor print --all - 删除某组:
mysql_config_editor remove --login-path=prod
注意:mysql_config_editor 生成的文件权限自动设为 600,且只对当前用户有效;它不兼容旧版 MySQL(~/.my.cnf。
常见连接失败原因和快速排查项
运行 mysql -u user -p 后卡住或报错,大概率不是配置问题,而是网络或权限层面被拦住了:
-
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx' (111)→ TCP 连接被拒,检查:telnet host port是否通、防火墙(ufw/firewalld)、云厂商安全组是否放行 3306 -
ERROR 1045 (28000): Access denied for user→ 用户不存在、密码错、或该用户没授权从当前 host 连接(比如只授权了'user'@'localhost',但你是从远程连) -
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded→ MySQL 8.0 默认认证插件不兼容老客户端,临时解决:建用户时指定IDENTIFIED WITH mysql_native_password,或升级客户端 - 连上后执行 SQL 报
Access denied→ 不是登录失败,是当前用户对目标库/表没SELECT/INSERT权限,用SHOW GRANTS FOR current_user();查看
客户端工具本身极轻量,真正麻烦的是网络策略、权限模型和版本兼容性。配完别急着写脚本,先用 mysql --version 和 mysql -h your-host -u test -p -e "SELECT VERSION();" 过一遍基础链路。










