mysql_config_editor实用程序使您能够将身份验证凭据存储
在名为.mylogin.cnf
. 文件位置在 Windows 上是%APPDATA%\MySQL
目录,在非 Windows 系统上是当前用户的主目录。稍后 MySQL 客户端程序可以读取该文件以获得连接到 MySQL 服务器的身份验证凭据。
登录路径文件的未混淆格式.mylogin.cnf
由选项组组成,类似于其他选项文件。中的每个选项组
.mylogin.cnf
都称为“登录路径”,
这是一个只允许某些选项的组:host
、user
、
password
和。将登录路径选项组视为一组选项,这些选项指定要连接到哪个 MySQL 服务器以及要以哪个帐户进行身份验证。这是一个未混淆的示例:
port
socket
[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测试实用程序识别。
程序在登录路径文件中使用组,如下所示:
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-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
,用于连接到 MySQL 服务器 host
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默认使用
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
,-?
显示一般帮助信息并退出。
要查看特定于命令的帮助消息,请 按如下 方式调用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
仅当 MySQL 是使用
WITH_DEBUG
. 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
: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
删除整个登录路径。例如,此命令仅从登录路径中删除user
选项mypath
而不是整个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 端口号。这个选项是在 MySQL 5.6.11 中添加的。
--socket
,-S
从登录路径中删除 Unix 套接字文件名。这个选项是在 MySQL 5.6.11 中添加的。
--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显示提示后 ,输入密码并回车。为了防止其他用户看到密码, mysql_config_editor不回显它。
要指定空密码,请在出现密码提示时按 Enter。写入登录路径文件的结果登录路径包括如下一行:
password =
--port=
,port_num
-P
port_num
要写入登录路径的 TCP/IP 端口号。这个选项是在 MySQL 5.6.11 中添加的。
--socket=
,file_name
-S
file_name
要写入登录路径的 Unix 套接字文件名。这个选项是在 MySQL 5.6.11 中添加的。
--user=
,user_name
-u
user_name
要写入登录路径的用户名。
--warn
,-w
如果该命令试图覆盖现有的登录路径,则警告并提示用户进行确认。默认情况下启用此选项;用于
--skip-warn
禁用它。