mysql_config_editor 实用程序使您能够将身份验证凭据存储在名为 .mylogin.cnf
的混淆登录路径文件中。 文件位置在 Windows 上为 %APPDATA%\MySQL
目录,在非 Windows 系统上为当前用户的主目录。 该文件稍后可以由 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 测试实用程序都会识别此变量。
程序使用登录路径文件中的组,如下所示
如果您没有指定
--login-path=
选项来明确指示要使用的登录路径,则默认情况下,mysql_config_editor 会对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
选项。
当您在 mysql_config_editor 中使用 set
命令创建登录路径时,不需要指定所有可能的选项值(主机名、用户名、密码、端口、套接字)。只有给定的值才会写入路径。以后需要的任何缺少的值都可以在您调用客户端路径连接到 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
禁用它。