直接装 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"' >> ~/.zshrcWindows:直接下载 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();"过一遍基础链路。
