4.6.6 mysql_config_editor-MySQL 配置 Util
mysql_config_editorUtil 使您可以将身份验证凭据存储在名为.mylogin.cnf
的模糊登录路径文件中。文件位置在 Windows 上是%APPDATA%\MySQL
目录,在非 Windows 系统上是当前用户的主目录。稍后,MySQLClient 端程序可以读取该文件,以获得用于连接到 MySQL Server 的身份验证凭据。
.mylogin.cnf
登录路径文件的清晰格式由选项组组成,类似于其他选项文件。 .mylogin.cnf
中的每个选项组称为“登录路径”,该组仅允许某些选项:host
,user
,password
,port
和socket
。将登录路径选项组视为一组选项,用于指定要连接到哪个 MySQL 服务器以及要作为身份验证的帐户。这是一个清晰的示例:
[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
当您调用 Client 端程序以连接到服务器时,Client 端将.mylogin.cnf
与其他选项文件结合使用。它的优先级高于其他选项文件,但低于 Client 端命令行上显式指定的选项。有关使用选项文件的 Sequences 的信息,请参见第 4.2.2.2 节“使用选项文件”。
要指定备用登录路径文件名,请设置MYSQL_TEST_LOGIN_FILE
环境变量。 mysql_config_editor,标准 MySQLClient 端(mysql,mysqladmin等)和 mysql-test-run.pl 测试 Util 均可识别此变量。
程序使用登录路径文件中的组,如下所示:
-
如果您未指定--login-path=name选项以明确指示要使用的登录路径,则默认情况下mysql_config_editor在
client
登录路径上运行。 -
如果没有--login-path选项,则 Client 端程序将从登录路径文件读取的选项组与从其他选项文件读取的选项组相同。考虑以下命令:
shell> mysql
默认情况下,mysqlClient 端从其他选项文件中读取[client]
和[mysql]
组,因此也从登录路径文件中读取它们。
- 使用--login-path选项,Client 端程序还从登录路径文件中读取命名的登录路径。从其他选项文件读取的选项组保持不变。考虑以下命令:
shell> mysql --login-path=mypath
mysqlClient 端从其他选项文件读取[client]
和[mysql]
,从登录路径文件读取[client]
,[mysql]
和[mypath]
。
- 即使使用--no-defaults选项,Client 端程序也会读取登录路径文件。即使存在--no-defaults,这也允许以比在命令行上更安全的方式指定密码。
mysql_config_editor对.mylogin.cnf
文件进行了模糊处理,因此无法将其读取为明文,并且在 Client 端程序未对其进行模糊处理时,其内容仅在内存中使用。这样,可以将密码以非明文格式存储在文件中,并在以后使用,而无需在命令行或环境变量中公开。 mysql_config_editor提供了print
命令来显示登录路径文件的内容,但是即使在这种情况下,密码值也会被屏蔽,以便永远不会以其他用户可以看到的方式出现。
mysql_config_editor所使用的混淆处理可防止密码以明文形式出现在.mylogin.cnf
中,并通过防止无意中暴露密码来提供安全性措施。例如,如果您在屏幕上显示一个普通的,未混淆的my.cnf
选项文件,则任何人都可以看到它包含的所有密码。对于.mylogin.cnf
,那是不正确的。但是使用的混淆不会阻止坚定的攻击者,因此您不应认为它是坚不可摧的。可以在您的计算机上获得系统 Management 特权以访问您的文件的用户可以不费吹灰之力使.mylogin.cnf
文件模糊。
登录路径文件对当前用户必须是可读和可写的,其他用户不可访问。否则,mysql_config_editor将忽略它,并且 Client 端程序也不会使用它。
像这样调用mysql_config_editor:
shell> mysql_config_editor [program_options] command [command_options]
如果登录路径文件不存在,则mysql_config_editor创建它。
命令参数如下:
-
program_options
*由常规mysql_config_editor选项组成。
-
command
table 示要对.mylogin.cnf
登录路径文件执行的操作。例如,set
将登录路径写入文件,remove
删除登录路径,print
显示登录路径内容。 -
command_options
*table 示该命令特定的任何其他选项,例如登录路径名和在登录路径中使用的值。
命令名称在程序参数集中的位置很重要。例如,这些命令行具有相同的参数,但产生不同的结果:
shell> mysql_config_editor --help set
shell> mysql_config_editor set --help
第一个命令行显示一条常规的mysql_config_editor帮助消息,而忽略set
命令。第二个命令行显示特定于set
命令的帮助消息。
假设您要构建一个定义默认连接参数的client
登录路径,以及一个用于连接到主机remote.example.com
的 MySQL 服务器的名为remote
的附加登录路径。您要登录如下:
-
默认情况下,使用用户名和密码
localuser
和localpass
到本地服务器 -
用户名和密码分别为
remoteuser
和remotepass
的远程服务器
要在.mylogin.cnf
文件中设置登录路径,请使用以下set
命令。在一行中 Importing 每个命令,并在出现提示时 Importing 适当的密码:
shell> mysql_config_editor set --login-path=client
--host=localhost --user=localuser --password
Enter password: enter password "localpass" here
shell> mysql_config_editor set --login-path=remote
--host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here
mysql_config_editor默认使用client
登录路径,因此可以在不更改其效果的情况下从第一个命令中省略--login-path=client
选项。
要查看mysql_config_editor写入.mylogin.cnf
文件的内容,请使用print
命令:
shell> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com
print
命令将每个登录路径显示为一组行,以组标题开头,该组标题在方括号中指示登录路径名称,后跟登录路径的选项值。密码值被屏蔽,不会显示为明文。
如果您未指定--all
显示所有登录路径,或者未指定--login-path=name
显示命名的登录路径,则print
命令默认会显示client
登录路径(如果有)。
如前面的示例所示,登录路径文件可以包含多个登录路径。这样,mysql_config_editor可以轻松设置多个“个性”以连接到不同的 MySQL 服务器,或使用不同的帐户连接到给定的服务器。稍后调用 Client 端程序时,可以使用--login-path
选项通过名称来选择其中任何一个。例如,要连接到远程服务器,请使用以下命令:
shell> mysql --login-path=remote
在这里,mysql从其他选项文件中读取[client]
和[mysql]
选项组,并从登录路径文件中读取[client]
,[mysql]
和[remote]
组。
要连接到本地服务器,请使用以下命令:
shell> mysql --login-path=client
由于mysql默认情况下会读取client
和mysql
登录路径,因此--login-path选项在这种情况下不会添加任何内容。该命令等效于以下命令:
shell> mysql
从登录路径文件读取的选项优先于从其他选项文件读取的选项。从登录路径文件中较晚出现的登录路径组中读取的选项优先于从文件中较早出现的组读取的选项。
mysql_config_editor按照创建 Sequences 将登录路径添加到登录路径文件中,因此您应该首先创建更通用的登录路径,然后再创建更特定的路径。如果需要在文件内移动登录路径,可以将其删除,然后重新创建以将其添加到末尾。例如,client
登录路径更通用,因为所有 Client 端程序都将读取它,而mysqldump
登录路径仅由mysqldump读取。稍后指定的选项将覆盖先前指定的选项,因此将登录路径设置为client
,mysqldump
可使mysqldump特定的选项覆盖client
选项。
当您将set
命令和mysql_config_editor一起使用来创建登录路径时,无需指定所有可能的选项值(主机名,用户名,密码,端口,套接字)。仅将给定的那些值写入路径。当您调用 Client 端路径以连接到 MySQL 服务器时,可以在其他选项文件中或在命令行中指定以后需要的所有缺失值。命令行上指定的任何选项都将覆盖登录路径文件或其他选项文件中指定的选项。例如,如果remote
登录路径中的凭据也适用于主机remote2.example.com
,请按以下方式连接到该主机上的服务器:
shell> mysql --login-path=remote --host=remote2.example.com
mysql_config_editor 常规选项
mysql_config_editor支持以下常规选项,这些常规选项可以在命令行上命名的任何命令之前使用。有关命令特定选项的说明,请参见mysql_config_editor 命令和特定于命令的选项。
table4.21 mysql_config_editor 常规选项
Option Name | Description |
---|---|
--debug | 编写调试日志 |
--help | 显示帮助信息并退出 |
--verbose | Verbose mode |
--version | 显示版本信息并退出 |
- --help,
-?
显示一般帮助消息并退出。
要查看特定于命令的帮助消息,请按以下方式调用mysql_config_editor,其中* command
*是help
以外的命令:
shell> mysql_config_editor command --help
- --debug[=debug_options],
-# debug_options
编写调试日志。典型的* debug_options
*字符串是d:t:o,file_name
。默认值为d:t:o,/tmp/mysql_config_editor.trace
。
仅当使用WITH_DEBUG构建 MySQL 时,此选项才可用。使用此选项不是构建 Oracle 提供的 MySQL 发行版二进制文件。
- --verbose,
-v
详细模式。打印有关程序功能的更多信息。如果操作无法达到预期效果,则此选项可能有助于诊断问题。
- --version,
-V
显示版本信息并退出。
mysql_config_editor 命令和命令特定的选项
本节描述了允许的mysql_config_editor命令,以及每个命令中在命令行中命令名称之后允许的特定于命令的选项。
此外,mysql_config_editor支持可在任何命令之前使用的常规选项。有关这些选项的说明,请参见mysql_config_editor 常规选项。
mysql_config_editor支持以下命令:
help
显示一般帮助消息并退出。此命令没有以下选项。
要查看特定于命令的帮助消息,请按以下方式调用mysql_config_editor,其中* command
*是help
以外的命令:
shell> mysql_config_editor command --help
print [options]
以清晰的形式打印登录路径文件的内容,但密码显示为*****
除外。
如果未命名登录路径,则默认登录路径名称为client
。如果同时提供--all
和--login-path
,则--all
优先。
print
命令允许在命令名称后使用以下选项:
--help
,-?
显示有关print
命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor --help。
--all
在登录路径文件中打印所有登录路径的内容。
--login-path=name
,-G name
打印命名登录路径的内容。
remove [options]
从登录路径文件中删除登录路径,或通过从中删除选项来修改登录路径。
此命令仅从登录路径中删除使用--host
,--password
,--port
,--socket
和--user
选项指定的选项。如果没有给出这些选项,则remove
删除整个登录路径。例如,此命令仅从mypath
登录路径中删除user
选项,而不是整个mypath
登录路径:
shell> mysql_config_editor remove --login-path=mypath --user
此命令将删除整个mypath
登录路径:
shell> mysql_config_editor remove --login-path=mypath
remove
命令允许在命令名称后使用以下选项:
--help
,-?
显示有关remove
命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor --help。
--host
,-h
从登录路径中删除主机名。
--login-path=name
,-G name
要删除或修改的登录路径。如果未指定此选项,则默认登录路径名称为client
。
--password
,-p
从登录路径中删除密码。
--port
,-P
从登录路径中删除 TCP/IP 端口号。
--socket
,-S
从登录路径中删除 Unix 套接字文件名。
--user
,-u
从登录路径中删除用户名。
--warn
,-w
如果命令尝试删除默认登录路径(client
)并且未指定--login-path=client
,则警告并提示用户进行确认。默认情况下启用此选项。使用--skip-warn
禁用它。
reset [options]
清空登录路径文件的内容。
reset
命令允许在命令名称后使用以下选项:
--help
,-?
显示有关reset
命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor --help。
set [options]
将登录路径写入登录路径文件。
此命令仅将使用--host
,--password
,--port
,--socket
和--user
选项指定的选项写入登录路径。如果没有给出这些选项,则mysql_config_editor将登录路径写为空组。
set
命令允许在命令名称后使用以下选项:
--help
,-?
显示有关set
命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor --help。
--host=host_name
,-h host_name
写入登录路径的主机名。
--login-path=name
,-G name
要创建的登录路径。如果未指定此选项,则默认登录路径名称为client
。
--password
,-p
提示 Importing 要写入登录路径的密码。 mysql_config_editor显示提示后,键入密码,然后按 Enter。为了防止其他用户看到密码,mysql_config_editor不会回显密码。
要指定空密码,请在密码提示时按 Enter。写入登录路径文件的结果登录路径将包含以下行:
password =
--port=port_num
,-P port_num
要写入登录路径的 TCP/IP 端口号。
--socket=file_name
,-S file_name
要写入登录路径的 Unix 套接字文件名。
--user=user_name
,-u user_name
写入登录路径的用户名。
--warn
,-w
如果命令尝试覆盖现有的登录路径,则警告并提示用户进行确认。默认情况下启用此选项。使用--skip-warn
将其禁用。