Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Using Options on the Command Line

6.2.2.1 在命令行中使用选项

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

  • 选项在命令名称后指定。

  • 选项参数以一个或两个破折号开头,取决于选项名称的短形式或长形式。许多选项都有短形式和长形式。例如,-?--help 是显示帮助信息的选项的短形式和长形式。

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

  • 一些选项需要在选项名称后跟随一个值。例如,-h localhost--host=localhost 指示客户端程序连接到哪个 MySQL 服务器主机。

  • 对于需要值的长选项,使用 = 符号分隔选项名称和值。对于需要值的短选项,选项值可以紧跟在选项字母后面,或者可以有一个空格:-hlocalhost-h localhost 是等效的。唯一的例外是指定 MySQL 密码的选项。这可以以长形式 --password=pass_val 或以短形式 -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 是等效的。(这也适用于在选项文件中设置的系统变量。)

  • 对于需要数字值的选项,可以使用 KMG 后缀来表示 1024、10242 或 10243 的乘数。从 MySQL 8.0.14 开始,还可以使用 TPE 后缀来表示 10244、10245 或 10246 的乘数。后缀字母可以是大写或小写。

    例如,以下命令告诉 mysqladmin 服务器 1024 次,睡眠 10 秒钟之间每个 ping:

    mysqladmin --count=1K --sleep=10 ping
  • 在指定文件名作为选项值时,避免使用 ~ shell 元字符。它可能不会按您期望的方式解释。

包含空格的选项值必须在命令行上加引号。例如,--execute(或-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 |
+---------------------+
$>
Note

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

要在语句中使用带引号的值,您必须要么转义内部引号,要么在语句中使用不同的引号类型,而不是用于引号语句本身的引号。您的命令处理器的功能将决定您是否可以使用单引号或双引号,以及转义引号字符的语法。例如,如果您的命令处理器支持使用单引号或双引号引号,您可以使用双引号括住语句,并在语句中的引号值中使用单引号。