mysql_config_editor 实用程序使您能够将身份验证凭据存储在名为 .mylogin.cnf
的混淆登录路径文件中。该文件的位置是 Windows 上的 %APPDATA%\MySQL
目录,以及非 Windows 系统上当前用户的 home 目录。该文件可以随后被 MySQL 客户端程序读取,以获取用于连接到 MySQL 服务器的身份验证凭据。
.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
当您调用客户端程序连接到服务器时,客户端会将 .mylogin.cnf
与其他选项文件一起使用。它的优先级高于其他选项文件,但低于在客户端命令行上明确指定的选项。有关使用选项文件的顺序的信息,请参见 第 6.2.2.2 节,“使用选项文件”。
要指定备用登录路径文件名,请设置 MYSQL_TEST_LOGIN_FILE
环境变量。该变量被 mysql_config_editor、标准 MySQL 客户端 (mysql、mysqladmin 等) 和 mysql-test-run.pl 测试工具识别。
程序使用登录路径文件中的组,如下所示
mysql_config_editor 默认情况下,如果未指定任何
--login-path=
选项来明确指定要使用的登录路径,则它会在name
client
登录路径上操作。如果没有
--login-path
选项,客户端程序会从登录路径文件中读取与从其他选项文件中读取的相同的选项组。考虑以下命令mysql
默认情况下,mysql 客户端会从其他选项文件中读取
[client]
和[mysql]
组,因此它也会从登录路径文件中读取它们。使用
--login-path
选项,客户端程序还会从登录路径文件中读取命名的登录路径。从其他选项文件中读取的选项组保持不变。考虑以下命令mysql --login-path=mypath
mysql 客户端会从其他选项文件中读取
[client]
和[mysql]
,并从登录路径文件中读取[client]
、[mysql]
和[mypath]
。即使使用了
--no-defaults
选项,客户端程序也会读取登录路径文件,除非设置了--no-login-paths
。这允许以比在命令行上更安全的方式指定密码,即使存在--no-defaults
。
mysql_config_editor 会对 .mylogin.cnf
文件进行混淆,使其无法以明文形式读取,并且客户端程序取消混淆后的内容仅在内存中使用。通过这种方式,密码可以以非明文格式存储在文件中,并在以后使用,而无需在命令行或环境变量中公开。 mysql_config_editor 提供了一个 print
命令用于显示登录路径文件内容,但即使在这种情况下,密码值也会被屏蔽,因此永远不会以其他用户可以看到的方式出现。
mysql_config_editor 使用的混淆方法可以防止密码以明文形式出现在 .mylogin.cnf
中,并且通过防止无意中暴露密码来提供一定程度的安全性。例如,如果您在屏幕上显示常规的非混淆 my.cnf
选项文件,则其中包含的任何密码都对任何人都可见。对于 .mylogin.cnf
来说,情况并非如此,但所使用的混淆方法不太可能阻止有决心的攻击者,因此您不应将其视为牢不可破。能够在您的机器上获得系统管理权限以访问您的文件的用户可以花一些功夫取消混淆 .mylogin.cnf
文件。
登录路径文件必须对当前用户可读可写,并且对其他用户不可访问。否则,mysql_config_editor 会忽略它,客户端程序也不会使用它。
调用 mysql_config_editor,方法如下
mysql_config_editor [program_options] command [command_options]
如果登录路径文件不存在,mysql_config_editor 会创建它。
命令参数按如下方式给出
program_options
包含一般的 mysql_config_editor 选项。command
指示要在.mylogin.cnf
登录路径文件中执行的操作。例如,set
将登录路径写入文件,remove
删除登录路径,而print
显示登录路径内容。command_options
指示特定于命令的任何其他选项,例如登录路径名称和登录路径中使用的值。
命令名称在程序参数集中的位置很重要。例如,以下命令行具有相同的参数,但会产生不同的结果
mysql_config_editor --help set
mysql_config_editor set --help
第一个命令行显示一般的 mysql_config_editor 帮助消息,并忽略 set
命令。第二个命令行显示特定于 set
命令的帮助消息。
假设您想要建立一个 client
登录路径,该路径定义您的默认连接参数,以及一个名为 remote
的附加登录路径,用于连接到主机为 remote.example.com
的 MySQL 服务器。您想要按以下方式登录
默认情况下,使用用户名和密码
localuser
和localpass
连接到本地服务器使用用户名和密码
remoteuser
和remotepass
连接到远程服务器
要在 .mylogin.cnf
文件中设置登录路径,请使用以下 set
命令。在单行上输入每个命令,并在提示时输入相应的密码
$> mysql_config_editor set --login-path=client
--host=localhost --user=localuser --password
Enter password: enter password "localpass" here
$> 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
命令
$> 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 服务器的多个 “身份”,或使用不同帐户连接到给定服务器。稍后可以使用 --login-path
选项在调用客户端程序时按名称选择其中任何一个。例如,要连接到远程服务器,请使用以下命令
mysql --login-path=remote
在此,mysql 从其他选项文件读取 [client]
和 [mysql]
选项组,从登录路径文件读取 [client]
、[mysql]
和 [remote]
组。
要连接到本地服务器,请使用以下命令
mysql --login-path=client
因为 mysql 默认情况下读取 client
和 mysql
登录路径,所以 --login-path
选项在这种情况下不会添加任何内容。该命令等效于以下命令
mysql
从登录路径文件读取的选项优先于从其他选项文件读取的选项。从登录路径文件中出现的较后面的登录路径组读取的选项优先于从文件中出现的较早的组读取的选项。
mysql_config_editor 按创建顺序将登录路径添加到登录路径文件中,因此应先创建更通用的登录路径,然后再创建更具体的路径。如果需要在文件中移动登录路径,可以删除它,然后重新创建它以将其添加到末尾。例如,client
登录路径更通用,因为它会被所有客户端程序读取,而 mysqldump
登录路径只会被 mysqldump 读取。后面指定的选项会覆盖前面指定的选项,因此按 client
、mysqldump
的顺序放置登录路径可以使 mysqldump 特定的选项覆盖 client
选项。
使用 set
命令和 mysql_config_editor 创建登录路径时,不必指定所有可能的选项值(主机名、用户名、密码、端口、套接字)。只写入给定的值。稍后需要的任何缺失值都可以在调用客户端路径连接到 MySQL 服务器时指定,无论是在其他选项文件中还是在命令行上。在命令行上指定的任何选项都优先于在登录路径文件或其他选项文件中指定的选项。例如,如果 remote
登录路径中的凭据也适用于主机 remote2.example.com
,请按以下方式连接到该主机上的服务器
mysql --login-path=remote --host=remote2.example.com
mysql_config_editor 通用选项
mysql_config_editor 支持以下通用选项,这些选项可以在命令行上命名的任何命令之前使用。有关命令特定选项的描述,请参阅 mysql_config_editor 命令和命令特定选项。
--help
,-?
命令行格式 --help
显示通用帮助消息并退出。
要查看命令特定帮助消息,请按以下方式调用 mysql_config_editor,其中
command
是除help
之外的命令mysql_config_editor command --help
--debug[=
,debug_options
]-#
debug_options
命令行格式 --debug[=debug_options]
类型 字符串 默认值 d:t:o
写入调试日志。典型的
debug_options
字符串为d:t:o,
。默认值为file_name
d:t:o,/tmp/mysql_config_editor.trace
。此选项仅在使用
WITH_DEBUG
构建 MySQL 时可用。Oracle 提供的 MySQL 发布二进制文件 未 使用此选项构建。--verbose
,-v
命令行格式 --verbose
详细模式。打印有关程序执行的操作的更多信息。如果操作没有达到预期的效果,此选项可能有助于诊断问题。
--version
,-V
命令行格式 --version
显示版本信息并退出。
mysql_config_editor 命令和命令特定选项
本节介绍允许的 mysql_config_editor 命令,以及每个命令在命令行上命令名称后允许的命令特定选项。
此外,mysql_config_editor 支持可以在任何命令之前使用的通用选项。有关这些选项的描述,请参阅 mysql_config_editor 通用选项。
mysql_config_editor 支持以下命令
help
显示通用帮助消息并退出。此命令不接受任何后续选项。
要查看命令特定帮助消息,请按以下方式调用 mysql_config_editor,其中
command
是除help
之外的命令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
登录路径mysql_config_editor remove --login-path=mypath --user
此命令会删除整个
mypath
登录路径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 [
选项
]清空登录路径文件的内容。
reset
命令允许在命令名称后使用以下选项--help
,-?
显示
reset
命令的帮助信息并退出。要查看通用帮助消息,请使用 mysql_config_editor --help。
set [
选项
]将登录路径写入登录路径文件。
此命令仅将使用
--host
、--password
、--port
、--socket
和--user
选项指定的选项写入登录路径。如果未给出这些选项中的任何一个,mysql_config_editor 将登录路径写入为空组。set
命令允许在命令名称后使用以下选项--help
,-?
显示
set
命令的帮助信息并退出。要查看通用帮助消息,请使用 mysql_config_editor --help。
--host=
,主机名
-h
主机名
要写入登录路径的主机名。
--login-path=
,name
-G
name
要创建的登录路径。如果未给出此选项,默认登录路径名称为
client
。--password
,-p
提示输入要写入登录路径的密码。在 mysql_config_editor 显示提示后,输入密码并按 Enter 键。为了防止其他用户看到密码,mysql_config_editor 不会回显密码。
要指定空密码,在密码提示符处按 Enter 键。写入登录路径文件的结果登录路径将包含类似于以下内容的行
password =
--port=
,端口号
-P
端口号
要写入登录路径的 TCP/IP 端口号。
--socket=
,文件名
-S
文件名
要写入登录路径的 Unix 套接字文件名。
--user=
,用户名
-u
用户名
要写入登录路径的用户名。
--warn
,-w
如果命令尝试覆盖现有登录路径,则警告并提示用户确认。此选项默认启用;使用
--skip-warn
禁用它。