4.2.2 指定程序选项

有几种方法可以指定 MySQL 程序的选项:

  • 在程序名称后的命令行上列出选项。这对于应用于程序的特定调用的选项来说很常见。

  • 在程序启动时读取的选项文件中列出选项。这对于希望程序每次运行都使用的选项来说很常见。

  • 列出环境变量中的选项(请参阅第 4.2.7 节“设置环境变量”)。对于每次程序运行时要应用的选项,此方法很有用。实际上,选项文件通常用于此目的,但是第 5.7.3 节“在 Unix 上运行多个 MySQL 实例”讨论了一种环境变量可能非常有用的情况。它描述了一种方便的技术,该技术使用此类变量为服务器和 Client 端程序指定 TCP/IP 端口号和 Unix 套接字文件。

选项是按 Sequences 处理的,因此,如果多次指定选项,则最后出现的选项优先。以下命令使mysql连接到在localhost上运行的服务器:

mysql -h example.com -h localhost

有一个 exception:对于mysqld--user选项的* first *实例用作安全预防措施,以防止在命令行中覆盖选项文件中指定的用户。

如果给出了冲突或相关的选项,则后面的选项优先于前面的选项。以下命令以“无列名”模式运行mysql

mysql --column-names --skip-column-names

MySQL 程序首先通过检查环境变量,然后通过处理选项文件,然后通过检查命令行来确定给出哪些选项。由于较早的选项优先于较早的选项,因此处理 Sequences 意味着环境变量的优先级最低,而命令行选项的优先级最高。

通过在选项文件中为程序指定默认选项值,可以利用 MySQL 程序处理选项的方式。这样一来,您可以避免在每次运行程序时都键入它们,同时可以根据需要使用命令行选项覆盖默认值。

Note

在旧版本的 MySQL 中,程序选项可以完整或以任何明确的前缀指定。例如,可以将--compress选项作为--compr给予mysqldump,但不能将--comp给予--comp,因为后者不明确。在 MySQL 5.7 中,不再支持选项前缀。仅接受完整选项。这是因为在为程序实现新选项时,前缀可能会引起问题,而当前明确的前缀将来可能会变得模棱两可。此更改的一些含义:

  • 现在必须将--key-buffer选项指定为--key-buffer-size

  • 现在必须将--skip-grant选项指定为--skip-grant-tables