mysql如何安装mysql客户端工具_mysql命令行配置方法

2次阅读

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

mysql如何安装mysql客户端工具_mysql命令行配置方法

直接装 mysql-client 就够了,不用装完整 MySQL 服务器

如果你只想要 mysql 命令行工具(比如连远程数据库、执行 SQL、导出数据),根本不需要安装 MySQL 服务器(mysqld)。装完整包反而浪费磁盘、多开端口、增加维护负担。

不同系统安装方式略有差异:

  • ubuntu/debiansudo 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 ClientMySQL 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] 段生效于所有客户端命令(mysqlmysqldumpmysqladmin
  • 密码明文存储有风险,生产环境建议用 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 --versionmysql -h your-host -u test -p -e "SELECT VERSION();" 过一遍基础链路。

text=ZqhQzanResources