目录
[1.1 存放位置](#1.1 存放位置)
[1.2 格式内容](#1.2 格式内容)
[1.2.1 文件加密](#1.2.1 文件加密)
[2.1 定义MySQL的默认连接参数](#2.1 定义MySQL的默认连接参数)
[2.2 优先级](#2.2 优先级)
[3.1 help](#3.1 help)
[3.2 debug](#3.2 debug)
[3.3 verbose](#3.3 verbose)
[3.4 version](#3.4 version)
4.mysql_config_editor命令和特定于命令行选项
[4.1 help](#4.1 help)
[4.2 print](#4.2 print)
[4.3 remove](#4.3 remove)
[4.4 reset](#4.4 reset)
[4.5 set](#4.5 set)
1.介绍
1.1 存放位置
mysql_config_editor实用程序使您能够将身份验证凭据存储在名为**.mylogin.cnf**的模糊登录路径文件中。
文件位置是Windows上的**%APPDATA%\MySQL**目录
非Windows系统上当前用户的root目录。
MySQL客户端程序稍后可以读取该文件,以获取连接到MySQL Server的身份验证凭据。
1.2 格式内容
.mylogin.cnf登录路径文件 的未加密前内容由选项组组成,与其他选项文件类似。.
mylogin.cnf中的每个选项组都被称为"登录路径",这是一个只允许某些选项的组:主机、用户、密码、端口和套接字。将登录路径选项组视为一组选项,指定要连接到哪个MySQL服务器以及要作为哪个帐户进行身份验证。以下是一个未加密的示例:
sql
[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
当您调用客户端程序连接到服务器时,客户端会将**.mylogin.cnf** 与其他选项文件结合使用。
它的优先级高于其他选项文件 ,但低于客户端命令行上明确指定的选项。
有关选项文件使用顺序的信息,请参阅"配置的使用博客"。
要指定备用登录路径文件名 ,请设置MYSQL_TEST_LOGIN_FILE 环境变量。此变量由mysql_config_editor 、标准mysql客户端(mysql、mysqladmin等)和mysql-test-run.pl测试实用程序识别。
程序使用登录路径文件中的组,如下所示:
如果您未指定--login-path=name选项来明确指示要使用哪个登录路径
那么mysql_config_editor默认情况下会对客户端登录路径进行操作。
如果没有--login-path选项,客户端程序从登录路径文件读取的选项组 与从其他选项文件读取的相同。考虑以下命令:
sqlmysql
默认情况下,mysql客户端从其他选项文件中读取[client]和[mysql]组,因此它也从登录路径文件中读取它们。
使用--login-path选项,客户端程序还可以从登录路径文件中读取命名的登录路径。从其他选项文件读取的选项组保持不变。考虑以下命令:
sqlmysql --login-path=mypath
mysql客户端从其他选项文件中读取[client]和[mysql],从登录路径文件中读取[client]、[mysql]和[mypath]。
即使使用**--no-defaults选项** ,客户端程序也会读取登录路径文件,除非设置**--no-login-paths**。
这允许更安全的方式指定密码相对命令行来说,即使不存在默认值。
1.2.1 文件加密
mysql_config_editor 对.mylogin.cnf文件进行模糊处理,因此无法将其作为明文读取,并且在客户端程序未进行模糊处理时,其内容仅在内存中使用。
通过这种方式,密码可以以非明文格式存储在文件中,并在以后使用,而无需在命令行或环境变量中公开。
mysql_config_editor 提供了一个用于显示登录路径文件内容的打印命令,但即使在这种情况下,密码值也会被屏蔽,以免以其他用户可以看到的方式出现。
mysql_config_editor 使用的加密方法可以防止密码以明文形式出现在**.mylogin.cnf**中,并通过防止无意中暴露密码来提供安全措施。
例如:
如果您在屏幕上显示一个常规的未被混淆的my.cnf选项文件,那么它包含的任何密码都是可见的
对于.mylogin.cnf,这不是真的,但使用的模糊处理不太可能阻止坚定的攻击者,你不应该认为它牢不可破 。在您的计算机上获得系统管理权限 以访问您的文件的用户可以毫不费力地解开.mlogin.cnf文件。
登录路径文件必须对当前用户可读写,其他用户不能访问。否则,mysql_config_editor会忽略它,客户端程序也不会使用它。
2.调用mysql_config_editor
调用mysql_config_editor如下:
sql
mysql_config_editor [program_options] command [command_options]
如果登录路径文件不存在,则由mysql_config_editor创建。
命令参数如下所示:
program_options: 由一般的mysql_config_editor选项组成。
**command:**指示要对.mylogin.cnf登录路径文件执行的操作。例如,set将登录路径写入文件,remove删除登录路径,print显示登录路径内容。
**command_options:**表示特定于该命令的任何其他选项,例如登录路径名和要在登录路径中使用的值。
命令名在程序参数集中的位置非常重要。例如,这些命令行具有相同的参数,但会产生不同的结果:
sql
mysql_config_editor --help set
mysql_config_editor set --help
第一个命令行显示一条常规的mysql_config_editor帮助消息,并忽略set命令。
第二个命令行显示特定于set命令的帮助消息。
2.1 定义MySQL的默认连接参数
假设您要建立一个定义默认连接参数的客户端登录路径,以及一个名为remote的额外登录路径,用于连接到MySQL服务器hostremote.example.com。
您希望按如下方式登录:
--默认情况下,到用户名和密码为localuser 和localpass的本地服务器
--到用户名和密码为remoteuser 和remotepass的远程服务器
要在.mylogin.cnf文件中设置登录路径,请使用以下set命令。在一行中输入每个命令,并在提示时输入相应的密码
sql
$> 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命令默认情况下会显示客户端登录路径(如果有)。
如前面的示例所示,登录路径文件可以包含多个登录路径。
通过这种方式,mysql_config_editor可以轻松地设置多个"个性化定制",以便连接到不同的mysql服务器,或者使用不同的帐户连接到给定的服务器。
以后调用客户端程序时,可以使用--login-path选项按名称选择其中任何一个。
例如,要连接到远程服务器,请使用以下命令:
sql
mysql --login-path=remote
在这里,mysql从其他选项文件中读取[client]和[mysql]选项组,从登录路径文件中读取[client]、[mysql]和[mremote]组。
要连接到本地服务器,请使用以下命令:
sql
mysql --login-path=client
因为mysql默认读取客户端和mysql登录路径,所以在这种情况下,--login-path选项不会添加任何内容。该命令等效于以下命令:
sql
mysql
2.2 优先级
从登录路径文件 中读取的选项优先于从其他配置文件读取的选项。
从登录路径文件 中稍后出现的登录路径组读取 的选项优先于从文件中较早出现的组中读取的选项。
(后配置优先于先配置。会覆盖)
mysql_config_editor 按照创建登录路径的顺序 将登录路径添加到登录路径文件中,因此应该先创建更通用的登录路径 ,然后再创建更具体的路径。
如果需要在文件中移动登录路径,可以将其删除,然后重新创建以将其添加到末尾。
例如,客户端登录路径更通用,因为它由所有客户端程序读取,而mysqldump登录路径仅由mysqldump读取。
稍后指定的选项会覆盖先前指定的选项,因此将登录路径放在顺序客户端中,mysqldump会启用特定于mysqldump的选项来覆盖客户端选项。
当您将set命令与mysql_config_editor一起使用以创建登录路径时,不需要指定所有可能的选项值(主机名、用户名、密码、端口、套接字)。
只有给定的值才会写入路径。
当您调用客户端路径连接到MySQL服务器时,可以在其他选项文件 或命令行中指定以后所需的任何缺失值。
在命令行上指定的任何选项都会覆盖在登录路径文件 或其他选项文件 中指定的选项。
例如,如果远程登录路径中的凭据也适用于主机remote2.example.com,请按如下方式连接到该主机上的服务器:
sql
mysql --login-path=remote --host=remote2.example.com
3.mysql_config_editor常规选项
mysql_config_editor支持以下常规选项,这些选项可以在命令行上命名的任何命令之前使用。
有关特定于命令的选项的描述,请参见mysql_config_editor命令和特定于命令选项。
mysql_config_editor常规选项
选项名称 | 描述 |
---|---|
--debug | 写入调试日志 |
--help | 显示帮助消息并退出 |
--verbose | 详细模式 |
--version | 显示版本信息并退出 |
3.1 help
显示常规帮助消息并退出。
要查看特定于命令的帮助消息,请按如下方式调用mysql_config_editor,其中command是帮助以外的命令:
sql
mysql_config_editor command --help
3.2 debug
--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版本二进制文件不是使用此选项构建的。
3.3 verbose
详细模式。打印有关程序功能的更多信息。如果操作没有达到预期效果,此选项可能有助于诊断问题。
3.4 version
显示版本信息并退出。
4.mysql_config_editor命令和特定于命令行选项
本节介绍允许的mysql_config_editor命令,以及每一个命令行上命令名后面允许的特定于命令行的选项。
mysql_config_editor支持以下命令:
4.1 help
显示常规帮助消息并退出。此命令不接受以下选项。
要查看特定于命令的帮助消息,请按如下方式调用mysql_config_editor,其中command是帮助以外的命令:
sql
mysql_config_editor command --help
4.2 print
以未加密的形式打印登录路径文件的内容,密码显示为*****的情况除外。
如果未命名登录路径,则默认登录路径名称为client。如果同时给定--all和--login路径,则--all优先。
print命令允许在命令名之后使用这些选项:
--help
,-?
显示打印命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor--help。
--all
打印登录路径文件中所有登录路径的内容。
--login-path=
name
,-G
name
打印命名登录路径的内容。
4.3 remove
从登录路径文件中删除登录路径 ,或通过删除其中的选项来修改登录路径。
此命令仅从登录路径中删除由--host、--password、--port、--socket和--user选项指定的选项。
如果没有提供这些选项,remove将删除整个登录路径 。例如,此命令仅从mypath登录路径中删除用户选项,而不是整个mypath登录通路:
sql
mysql_config_editor remove --login-path=mypath --user
此命令将删除整个mypath登录路径:
sql
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
如果命令尝试删除默认登录路径(客户端),并且未指定--login-path=client,则发出警告并提示用户确认。此选项在默认情况下处于启用状态;使用--skip-warn禁用它。
4.4 reset
清空登录路径文件的内容。
reset命令允许在命令名称之后使用这些选项:
--help
,-?
显示重置命令的帮助消息并退出。
要查看常规帮助消息,请使用mysql_config_editor--help。
4.5 set
将登录路径写入登录路径文件。
此命令只将**--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键。写入登录路径文件的结果登录路径包括如下一
sqlpassword =
--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禁用它。