MySQL 核心命令行工具:mysql 命令超详细教程(连接 / 执行 SQL / 脚本全解)

📅 2026/7/23 1:54:22 👁️ 阅读次数 📝 编程学习
MySQL 核心命令行工具:mysql 命令超详细教程(连接 / 执行 SQL / 脚本全解)

一、命令简介

mysql 是 MySQL 关系型数据库管理系统最核心的官方命令行客户端工具。它允许用户通过终端或命令行界面连接到 MySQL 服务器,执行 SQL 语句、管理数据库、查看数据以及进行各种数据库操作。该工具是数据库管理员和开发人员进行交互式操作和脚本化任务的基础工具。

二、语法格式

plaintext

mysql [options] [database_name]

基本语法说明:

  • [database_name]: 可选的数据库名称。如果在此指定,连接成功后会自动 USE 该数据库。

三、常用选项及说明

mysql 客户端提供了丰富的选项,以下分类列出最常用和关键的部分。

连接选项

这些选项用于建立与 MySQL 服务器的连接。

表格

选项简写说明
--host=host_name-h指定要连接的 MySQL 服务器主机名或 IP 地址。默认是 localhost。
--user=user_name-u指定用于连接服务器的 MySQL 用户名。
--password[=password]-p提示输入连接密码。为了安全,建议不在命令后直接输入密码,而是使用 -p 后回车,在提示符下输入(输入不可见)。若直接在 -p 后跟密码(如 -pMyPass),存在密码泄露到历史记录的风险。
--port=port_num-P指定 TCP/IP 连接的端口号。默认是 3306。
--socket=path-S对于本地连接,指定要使用的 Unix 套接字文件或 Windows 命名管道的路径。
--database=db_name-D指定连接后要使用的初始数据库。等同于在命令末尾直接写数据库名。

执行与输出选项

这些选项控制 SQL 语句的执行方式和结果的显示格式。

表格

选项说明
--execute=statement-e执行指定的 SQL 语句(或语句块)并退出。非常适合在 Shell 脚本中非交互式地使用 MySQL。可以多次使用此选项执行多个语句。
--batch-B使用制表符作为列分隔符打印结果,每行占一行。此模式输出更易于被其他程序(如 awk, cut)解析。
--silent-s沉默模式。减少输出信息,与 -B 结合使用时效果更佳。
--vertical-E垂直输出结果。将查询结果的每一行以键值对(每列一行)的形式打印,当查询结果很宽(列很多)时非常有用。
--table-t以表格形式输出结果(默认的交互模式输出格式)。在非交互式脚本中(如使用 -e 时),默认输出是简化的,此选项可强制表格输出。
--xml-X将输出生成 XML 格式。
--html-H将输出生成 HTML 格式。
--skip-column-names-N在结果中不显示列名。
--wait-w如果无法建立连接,等待并重试,而不是直接退出。

客户端行为选项

表格

选项说明
--help-?显示帮助信息并退出。
--version-V显示版本信息并退出。
--defaults-file=file_name仅从给定的配置文件中读取选项。常用于指定自定义的 .cnf 文件。
--prompt=format将提示符设置为指定格式。例如 --prompt="\u@\h [\d]>"。
--auto-rehash启用自动补全(默认)。使用 --disable-auto-rehash 来禁用它,以加快连接速度,尤其是在数据库对象很多时。

四、示例用法

交互式连接到本地 MySQL 服务器

plaintext

mysql -u root -p

连接后,会进入 mysql> 提示符,可以输入 SQL 命令。

连接到远程服务器并指定数据库

plaintext

mysql -h 192.168.1.100 -P 3307 -u appuser -p mydatabase

连接到主机 192.168.1.100 端口 3307 上的 mydatabase 数据库。

执行单条 SQL 语句后退出(非交互式)

plaintext

mysql -u root -p -e "SHOW DATABASES;"

执行多条 SQL 语句(来自字符串)

plaintext

mysql -u root -p -e "USE test; SHOW TABLES; SELECT COUNT(*) FROM users;"

执行 SQL 脚本文件

plaintext

mysql -u root -p mydatabase < /path/to/script.sql

使用批处理模式输出,便于脚本处理

plaintext

mysql -u root -p -s -B -e "SELECT id, name FROM products" > output.tsv

结果将以制表符分隔,保存到 output.tsv 文件。

垂直显示复杂的查询结果

plaintext

mysql -u root -p -E -e "SHOW ENGINE INNODB STATUS\G"

\G 是交互式命令中的垂直输出快捷键,在 -e 中需要用 -E 选项替代。

从特定配置文件读取连接参数

plaintext

mysql --defaults-file=/etc/mysql/my_client.cnf

my_client.cnf 内容可能包含:

plaintext

[client] host=localhost user=myuser password=mypassword database=mydb

五、注意事项

  • 密码安全:避免在命令行、Shell 脚本中明文指定密码(如 -pmypassword)。优先使用 -p 交互输入,或使用安全的配置文件(如通过 mysql_config_editor 工具创建的 .mylogin.cnf 文件)来存储登录凭据。
  • 连接失败:如果遇到连接问题,请依次检查网络连通性、主机地址、端口号、用户名和密码是否正确,并确认 MySQL 服务正在运行且允许来自客户端的连接。
  • 字符集:如果查询或返回的数据包含非 ASCII 字符(如中文),可能需要通过 --default-character-set=utf8mb4 等选项确保客户端和服务端的字符集设置一致,以避免乱码。
  • 脚本化使用:在 Shell 脚本中非交互式调用 mysql 时,建议结合 --silent (-s) 和 --batch (-B) 选项,使输出格式更稳定、易于后续处理。