讲解

mysql 是官方自带的命令行客户端,装数据库就自带它,是管理 MySQL 的基本功。最常用的连接参数是四个:-h 主机(默认 localhost)、-P 端口(默认 3306)、-u 用户名、-p 密码。注意 -p 后面直接跟密码虽然方便但不安全(密码会留在 shell 历史里),推荐只写 -p 让客户端交互式提示输入。参数和值之间可以没有空格,-uroot 和 -u root 等价。

除了交互模式,mysql 还支持用 -e 参数直接执行一条语句并退出,这在写脚本、做检查时极其有用:mysql -uroot -p密码 -e "SELECT 1" 常用于健康检查。配合 --vertical 可以把宽行竖排显示(等效于交互模式里语句末尾用 \G 代替分号),查看 SHOW ENGINE INNODB STATUS 这类宽输出时特别好用。

交互模式里还有一批以反斜杠或关键字开头的客户端内置命令:status 查看连接状态、use 切换数据库、source 执行 SQL 文件、help 查看全部。退出用 exit 或 \q。图形客户端(MySQL Workbench、DBeaver、DataGrip)适合浏览数据,但管理操作的本质都是发 SQL,把命令行练熟走到哪里都不慌。

示例

用 -e 非交互地执行一条语句,适合脚本和健康检查:

# 非交互执行:-e 后面直接跟 SQL 语句
mysql -uroot -p -e "SELECT VERSION();"

默认表格输出与 --vertical 竖排输出的对比(竖排适合列很多或内容很长的行):

# 表格输出(默认)
mysql -uroot -p -e "SELECT user, host, plugin FROM mysql.user;"

# 竖排输出:每列一行,等效于交互模式里的 \G
mysql -uroot -p --vertical -e "SELECT 1 AS one, '你好' AS greeting;"

交互模式里确认当前连接身份与时间(USER() 含客户端来源,CURRENT_USER() 是实际认证的账号):

SELECT NOW() AS server_time, USER() AS current_login, CURRENT_USER() AS auth_account;

常见坑

  • -p 后面直接写密码:密码会留在 shell 历史、进程列表和 CI 日志里。交互时用裸 -p,脚本里用 mysql_config_editor 配置的 login-path,别用明文。
  • 把客户端版本当服务器版本:mysql --version 显示的是客户端工具的版本,服务器版本要连上后 SELECT VERSION()。两者可以不同。
  • 忘记 -h 连错机器:多台数据库环境间切换时,不带 -h 默认连本机,一张表「怎么查不到」往往是连错了实例。status 命令可以看到当前连的是谁。
  • -e 里引号打架:SQL 里的字符串用单引号、外层 shell 用双引号,反过来或混用会被 shell 截断,报错信息常常是莫名其妙的语法错误。

小结

mysql 客户端的四个连接参数是 -h/-P/-u/-p;-e 非交互执行适合脚本;--vertical 和 \G 竖排宽行。下一章开始管理数据库本身:创建、查看与删除。