### 4.2.2 指定程序选项

[4.2.2.1 在命令行中使用选项](command-line-options.html)
[4.2.2.2 使用选项文件](option-files.html)
[4.2.2.3 影响选项文件处理的命令行选项](option-file-options.html)
[4.2.2.4 程序选项修饰符](option-modifiers.html)
[4.2.2.5 使用选项设置程序变量](program-variables.html)
[4.2.2.6 选项默认值、选项期望值和 = 符号](option-defaults-equals.html)

有几种方法可以为 MySQL 程序指定选项：

-   在程序名称后面的命令行上列出选项。这对于适用于特定程序调用的选项很常见。

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

-   列出环境变量中的选项（请参阅[第 4.2.9 节，“设置环境变量”](setting-environment-variables.html)）。此方法对于您希望在每次程序运行时应用的选项很有用。在实践中，选项文件更常用于此目的，但[第 5.8.3 节，“在 Unix 上运行多个 MySQL 实例”](multiple-unix-servers.html), 讨论了环境变量非常有用的一种情况。它描述了一种方便的技术，该技术使用这些变量来指定服务器和客户端程序的 TCP/IP 端口号和 Unix 套接字文件。

    选项按顺序处理，因此如果多次指定一个选项，则最后一次出现优先。以下命令导致[**mysql**](mysql.html)连接到运行的服务器`本地主机`：


```
mysql -h example.com -h localhost
```

有一个例外：对于[**mysqld**](mysqld.html)， 这*第一的*的实例[`- 用户`](server-options.html#option_mysqld_user)选项用作安全预防措施，以防止在命令行上覆盖选项文件中指定的用户。

如果给出了冲突或相关的选项，则后面的选项优先于前面的选项。以下命令运行[**mysql**](mysql.html)在“无列名”模式下：

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

[](<>)[](<>)

MySQL 程序首先通过检查环境变量来确定哪些选项，然后通过处理选项文件，然后检查命令行。因为后面的选项优先于前面的选项，所以处​​理顺序意味着环境变量的优先级最低，命令行选项的优先级最高。

[](<>)[](<>)

对于服务器，有一个例外：**mysqld-auto.cnf**最后处理数据目录中的选项文件，因此它甚至优先于命令行选项。

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