Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.2 使用 MySQL 程序  / 4.2.2 指定程序选项  /  4.2.2.1 在命令行上使用选项

4.2.2.1 在命令行上使用选项

在命令行上指定的程序选项遵循以下规则:

  • 选项在命令名称之后给出。

  • 选项参数以一个破折号或两个破折号开头,具体取决于它是选项名称的短格式还是长格式。许多选项同时具有短格式和长格式。例如,-?and--help 是指示 MySQL 程序显示其帮助消息的选项的短格式和长格式。

  • 选项名称区分大小写。-v并且 -V都是合法的并且具有不同的含义。(它们是 --verbose--version 选项的相应缩写形式。)

  • 一些选项在选项名称后面取一个值。例如,-h localhost--host=localhost向客户端程序指示 MySQL 服务器主机。选项值告诉程序运行 MySQL 服务器的主机名。

  • 对于带值的长选项,用=符号分隔选项名称和值。对于带值的短选项,选项值可以紧跟在选项字母之后,或者之间可以有一个空格:-hlocalhost-h localhost是等价的。此规则的一个例外是用于指定 MySQL 密码的选项。此选项可以以长格式作为 或作为。在后一种情况下(没有给出密码值),程序会以交互方式提示您输入密码。密码选项也可以以缩写形式给出 as 或 as --password=pass_val--password-ppass_val-p. 但是,对于缩写形式,如果给出密码值,则它必须跟在选项字母后面,中间没有空格:如果选项字母后面有空格,程序无法判断后面的参数是否应该是密码值或其他某种参数。因此,以下两个命令具有两个完全不同的含义:

    mysql -ptest
    mysql -p test

    第一个命令指示mysql使用密码值test,但不指定默认数据库。第二个指示 mysql提示输入密码值并test用作默认数据库。

  • 在选项名称中,破折号 ( -) 和下划线 ( _) 在大多数情况下可以互换使用,但前导破折号 不能作为下划线给出。例如,--skip-grant-tables--skip_grant_tables 是等价的。

    在本手册中,我们在选项名称中使用破折号,下划线很重要的地方除外。例如,--log-bin和 就是这种情况--log_bin,它们是不同的选项。我们鼓励您也这样做。

  • MySQL 服务器有某些只能在启动时指定的命令选项,以及一组系统变量,其中一些可以在启动时、运行时或两者都设置。系统变量名使用下划线而不是破折号,并且在运行时引用时(例如,使用 SETSELECT语句),必须使用下划线编写:

    SET GLOBAL general_log = ON;
    SELECT @@GLOBAL.general_log;

    在服务器启动时,系统变量的语法与命令选项的语法相同,因此在变量名称中,破折号和下划线可以互换使用。例如,--general_log=ON--general-log=ON是等价的。(对于在选项文件中设置的系统变量也是如此。)

  • 对于采用数值的选项,该值可以带有后缀K, MG以指示乘数 1024、1024 2或 1024 3。从 MySQL 8.0.14 开始,后缀也可以是T, PE来表示 1024 4、1024 5或 1024 6的乘数。后缀字母可以是大写或小写。

    例如,以下命令告诉 mysqladmin对服务器执行 1024 次 ping,每次 ping 之间休眠 10 秒:

    mysqladmin --count=1K --sleep=10 ping
  • 将文件名指定为选项值时,避免使用~shell 元字符。它可能不会像您预期的那样被解释。

在命令行中给出包含空格的选项值时必须用引号引起来。例如, --execute(or -e) 选项可以与mysql一起使用,以将一个或多个以分号分隔的 SQL 语句传递给服务器。当使用该选项时,mysql执行选项值中的语句并退出。语句必须用引号括起来。例如:

$> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+------------+
| VERSION()  |
+------------+
| 8.0.19     |
+------------+
+---------------------+
| NOW()               |
+---------------------+
| 2019-09-03 10:36:48 |
+---------------------+
$>
笔记

长格式 ( --execute) 后跟一个等号 ( =)。

要在语句中使用带引号的值,您必须转义内部引号,或者在语句中使用与用于引用语句本身的引号不同类型的引号。命令处理器的功能决定了您是否可以使用单引号或双引号以及转义引号字符的语法。例如,如果您的命令处理器支持用单引号或双引号引起来,您可以在语句两边使用双引号,而在语句中的任何引用值使用单引号。