4.2.2.1 在命令行上使用选项

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

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

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

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

  • 某些选项在选项名称后带有一个值。例如,-h localhost--host=localhosttable 示 Client 端程序的 MySQL 服务器主机。选项值告诉程序运行 MySQL 服务器的主机的名称。

  • 对于采用值的长期权,请使用=符号将期权名称和值分开。对于带有值的短期期权,期权价值可以紧随期权字母之后,或者之间可以有空格:-hlocalhost-h localhost是等效的。该规则的 exception 是用于指定 MySQL 密码的选项。该选项的长格式可以为--password=pass_val--password。在后一种情况下(未提供密码值),程序以交互方式提示您 Importing 密码。密码选项也可能以-ppass_val-p的形式给出。但是,对于简写形式,如果给出了密码值,则必须在选项字母后加上不得插入空格:如果在选项字母后加上空格,则程序无法判断是否应该使用以下参数密码值或其他类型的参数。因此,以下两个命令具有两个完全不同的含义:

mysql -ptest
mysql -p test

第一条命令指示mysql使用密码值test,但未指定默认数据库。第二个命令mysql提示 Importing 密码值,并使用test作为默认数据库。

  • 在选项名称中,破折号(-)和下划线(_)可以互换使用。例如,--skip-grant-tables--skip_grant_tables是等效的。 (但是,前划线不能作为下划线.)

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

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

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

  • 对于采用数字值的选项,该值可以带有KMG后缀(大写或小写),以 table 示乘数 1024、10242 或 10243.例如,以下命令告诉mysqladmin ping 服务器 1024 次,每次 ping 之间睡眠 10 秒:
mysqladmin --count=1K --sleep=10 ping
  • 在将文件名指定为选项值时,请避免使用~ shell 元字符。可能未按您预期的方式解释它。

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

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+------------+
| VERSION()  |
+------------+
| 5.7.29     |
+------------+
+---------------------+
| NOW()               |
+---------------------+
| 2019-09-03 10:36:28 |
+---------------------+
shell>

Note

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

要在语句中使用带引号的值,您必须转义内部的引号,或者在语句内使用与引号本身不同的引号。命令处理器的功能决定了您是可以使用单引号还是双引号以及转义引号字符的语法的选择。例如,如果命令处理器支持使用单引号或双引号引起来的引用,则可以在语句周围使用双引号,并对语句内的所有带引号的值使用单引号。