该 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 测试实用程序所识别。
程序使用登录路径文件中的组如下:
-
mysql_config_editor 默认情况下操作
client
登录路径,如果您没有指定--login-path=
选项来明确指定要使用的登录路径。name
-
没有
--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
显示每个登录路径作为一组行,开始于组标题,指示登录路径名称在方括号中,后跟登录路径的选项值。密码值被屏蔽,不会以明文形式出现。
如果您不指定 --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 按照您创建的顺序将登录路径添加到登录路径文件中,因此您应该首先创建更 general 的登录路径,然后创建更 specific 的路径。如果您需要在文件中移动登录路径,可以删除它,然后重新创建以将其添加到文件末尾。例如,client
登录路径是更 general 的,因为它被所有客户端程序读取,而 mysqldump
登录路径仅被 mysqldump 读取。后面指定的选项覆盖早期指定的选项,因此将登录路径顺序设置为 client
、mysqldump
,使得 mysqldump-specific 选项覆盖 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 命令和命令特定选项。
-
--帮助
,-?
Command-Line Format --帮助
显示一般帮助信息并退出。
要查看命令特定的帮助信息,请以以下方式调用 mysql_config_editor,其中
命令
是除帮助
之外的其他命令:mysql_config_editor command --help
-
--调试[=
,调试选项
]-#
调试选项
Command-Line Format --调试[=调试选项]
Type 字符串 Default Value d:t:o
写入调试日志。典型的
调试选项
字符串是d:t:o,
。默认是文件名
d:t:o,/tmp/mysql_config_editor.trace
。只有在 MySQL 使用
WITH_DEBUG
选项构建时才可用。 Oracle 提供的 MySQL 发行二进制文件 不 使用这个选项。 -
--详细
,-v
Command-Line Format --详细
详细模式。打印程序执行的更多信息。如果操作没有达到预期的效果,这个选项可能有助于诊断问题。
-
--版本
,-V
Command-Line Format --版本
显示版本信息并退出。
mysql_config_editor 命令和命令特定选项
本节描述了允许的 mysql_config_editor 命令,以及每个命令允许的命令特定选项。
此外,mysql_config_editor 支持通用选项,可以在命令名前面使用。有关这些选项的描述,请参阅 mysql_config_editor 通用选项。
mysql_config_editor 支持以下命令:
-
帮助
显示一般帮助信息并退出。该命令不接受任何后续选项。
要查看命令特定的帮助信息,请以以下方式调用 mysql_config_editor,其中
命令
是除帮助
之外的其他命令:mysql_config_editor command --help
-
打印 [
选项
]以明文形式打印登录路径文件的内容,密码除外,显示为
*****
。默认登录路径名称是
client
,如果没有指定登录路径。如果同时指定了--all
和--login-path
,则--all
优先。打印命令允许以下选项:
-
--帮助
,-?
显示打印命令的帮助信息并退出。
要查看一般帮助信息,请使用 mysql_config_editor --帮助。
-
--all
打印登录路径文件中的所有登录路径内容。
-
--login-path=
,名称
-G
名称
打印指定登录路径的内容。
-
-
删除 [
选项
]从登录路径文件中删除登录路径,或者修改登录路径以删除其中的选项。
该命令从登录路径中删除指定的选项,例如
--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 [
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
输入密码以写入登录路径。 在 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
可以禁用它。
-