mysql_config_editor 实用程序使您能够将身份验证凭据存储在名为.mylogin.cnf
的模糊(加密)登录路径文件中。文件位置在 Windows 上为%APPDATA%\MySQL
目录,在非 Windows 系统上为当前用户的主目录。MySQL 客户端程序可以稍后读取该文件,以获取连接到 MySQL 服务器的身份验证凭据。
mylogin.cnf
登录路径文件的未加密格式由选项组组成,与其他选项文件类似。mylogin.cnf
中的每个选项组都称为**“登录路径( Login Path )”**,这是一个仅允许某些选项的组: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
与其他选项文件一起使用。它的优先级高于其他选项文件,但低于客户端命令行上明确指定的选项。有关选项文件使用顺序的信息,请参阅 第 4.2.2.2 节 “使用选项文件” 。
要指定备用登录路径文件名,请设置MYSQL_TEST_LOGIN_FILE
环境变量。mysql_config_editor 、标准 MySQL 客户端( mysql、mysqladmin 等)和 mysql-test-run.pl 测试实用程序都可以识别该变量。
程序使用登录路径文件中的组,如下所示:
- 如果不指定
--login-path=name
选项以明确表示要使用的登录路径,则默认情况下 mysql_config_editor 将使用client
登录路径。 - 如果不指定
--login-path
选项,客户端程序将从登录路径文件读取与从其他选项文件读取相同的选项组。考虑以下命令:
默认情况下,mysql 客户端从其他选项文件中读取mysql
[client]
和[mysql]
组,因此它也从登录路径文件中读取它们。 - 使用
--login-path
选项,客户端程序还可以从登录路径文件中读取指定的登录路径。从其他选项文件读取的选项组保持不变。考虑以下命令:
mysql 客户端从其他选项文件中读取mysql --login-path=mypath
[client]
和[mysql]
,从登录路径文件中读取[client]
、[mysql]
和[mypath]
。 - 即使使用
--no-defaults
选项,客户端程序也会读取登录路径文件。这允许以比命令行更安全的方式指定密码,即使使用--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
命令的帮助消息。
假设您想建立一个定义默认连接参数的客户端登录路径,以及一个名为remote
的附加登录路径,用于连接到 MySQL 服务器主机 remote.example.com 。您想按如下方式登录:
- 默认情况下,本地服务器的用户名和密码为 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 默认使用客户端登录路径,因此可以在第一个命令中省略--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 命令和命令特定选项。
表4.20 mysql_config_editor 常规选项
选项名称 | 描述 |
---|---|
–debug | 写入调试日志 |
–help | 显示帮助消息并退出。 |
–verbose | 详细模式 |
–version | 显示版本信息并退出 |
-
-
-help, -?
显示常规帮助消息并退出。
要查看特定于命令的帮助消息,请按如下方式调用 mysql_config_editor ,其中 command是除help
之外的命令: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 支持以下命令:
-
help
显示常规帮助消息并退出。此命令不接受任何后续选项。
要查看特定于命令的帮助消息,请按如下方式调用 mysql_config_editor ,其中 command 是除help
之外的命令:mysql_config_editor command --help
-
print [options]
以不复杂的形式打印登录路径文件的内容,除了密码显示为*****。
如果未指定登录路径,则默认登录路径名称为client
。如果同时给定--all
和--login-path
路径,--all
优先。
print
命令允许在命令名称后使用以下选项:--help, -?
显示打印命令的帮助消息并退出。
要查看常规帮助消息,请使用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 [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
禁用它。
-