mysql_config_editor 程序可以将身份验证凭据存储在名为 .mylogin.cnf 的模糊登录路径文件中。MySQL 客户端程序可以读取该文件,以获得用于连接到 MySQL 服务器的身份验证凭据。
登录路径文件 (.mylogin.cnf)
[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
文件的生成位置
- Windows 系统
- %APPDATA%\MySQL
- 非 Windows 系统
- 当前用户的主目录
文件格式
- 格式中包含选项组 (标签组),与其他配置文件相同
登录路径
- 此文件中的每个选项组 (标签组) 都称为登录路径 (login path),该组仅允许某些选项:主机,用户,密码,端口和套接字。
配置文件优先级
- 高于其他配置文件,但低于客户端命令行选项
标签组的读取方式
- 如果未明确指定登录路径,则默认使用 client 登录路径 (标签组)
- –login-path=name
- 指定登录路径
- –login-path=name
- 如果没有 –login-path 选项,则客户端程序将从登录路径文件中读取与其他配置文件相同的标签组
mysql
- mysql 客户端从其他配置文件中读取 [client] 和 [mysql],也从登录路径文件中读取它们。
- 使用 –login-path 选项,客户端程序还可以从登录路径文件中读取指定的登录路径。从其他配置文件读取的标签组保持不变。
mysql --login-path=mypath
- mysql 客户端从其他配置文件中读取 [client] 和 [mysql],并从登录路径文件读取 [client],[mysql] 和 [mypath]。
- 即使使用 –no-defaults 选项,客户端程序也会读取登录路径文件,这比在命令行上指定密码的方式更安全。
文件内容
- mysql_config_editor 对此文件进行模糊处理,因此无法将其读取为明文,并且在客户端程序未对其进行模糊处理时,其内容仅在内存中使用。
- mysql_config_editor 的 print 命令用于显示登录路径文件内容,但是密码值仍然会被屏蔽为 ****
文件权限
- 登录路径文件对当前用户必须是可读和可写的,其他用户不可访问。否则,mysql_config_editor 将忽略它,并且客户端程序也不使用它。
指定其他的登录路径文件
-
环境变量
- MYSQL_TEST_LOGIN_FILE
mysql_config_editor、标准 MySQL 客户端(mysql,mysqladmin 等)和 mysql-test-run.pl 测试程序均可识别此变量。
- MYSQL_TEST_LOGIN_FILE
调用语法
mysql_config_editor [program_options] command [command_options]
参数
-
program_options
- 由常规选项组成
- command
- 指示对 .mylogin.cnf 登录路径文件执行什么操作。
- 例如,set 将登录路径写入文件,remove 将删除登录路径,而 print 显示登录路径的内容。
- command_options
- 指示特定于该命令的任何其他选项。
- 例如,登录路径名和在登录路径中使用的值。
命令顺序
- 命令名称在程序参数集中的位置很重要
- 例如,这些命令行具有相同的参数,但产生不同的结果
mysql_config_editor --help set # 常规的 mysql_config_editor 帮助消息,并忽略 set 命令 mysql_config_editor set --help # 显示特定于 set 命令的帮助消息
- 例如,这些命令行具有相同的参数,但产生不同的结果
选项和命令
常规选项
- –help, -?
- 显示帮助
mysql_config_editor command --help
- 显示帮助
–debug[=debug_options], -# debug_options仅当使用 WITH_DEBUG 构建 MySQL 时,此选项才可用。Oracle 提供的 MySQL 版本二进制文件不是使用此选项构建的。
编写调试日志。典型的 debug_options 字符串是 d:t:o,file_name。默认值为 d:t:o,/tmp/mysql_config_editor.trace
- –verbose, -v
- 详细模式
- –version, -V
- 显示版本
命令和命令特定的选项
- help
- 显示帮助
mysql_config_editor command --help
- 显示帮助
- print [options]
- 以清晰的形式打印登录路径文件的内容,但密码显示为 ********
- 默认的登录路径名是 client
- 如果同时指定了 –all 和 –login-path,–all 优先级更高
- 选项
- –help, -?
- 显示帮助
- –all
- 打印所有登录路径内容
- –login-path=name, -G name
- 打印指定的登录路径内容
- –help, -?
- remove [options]
- 移除登录路径
-
如果没有指定后面的选项,则 remove 将删除整个登录路径
-
示例
- 删除 mypath 登录路径中的 user 信息
mysql_config_editor remove --login-path=mypath --user
- 删除 mypath 登录路径
mysql_config_editor remove --login-path=mypath
- 删除 mypath 登录路径中的 user 信息
- 选项
- –help, -?
- 显示帮助
- –login-path=name, -G name
- 登录路径名
- –host, -h
- 主机名
- –password, -p
- 密码
- –port, -P
- 端口
- –socket, -S
- socket 文件
- –user, -u
- 用户名
- –warn, -w
- 如果命令尝试删除默认登录路径 client 并且未指定 –login-path=client,则警告并提示用户进行确认。
- 默认已启用,使用 –skip-warn 禁用它。
- –help, -?
- set [options]
- 设置登录路径
-
选项
同 remove 选项相同。
- –help, -?
- –host=host_name, -h host_name
- –login-path=name, -G name
- –password, -p
- –port=port_num, -P port_num
- –socket=file_name, -S file_name
- –user=user_name, -u user_name
- –warn, -w
- reset [options]
- 清空登录路径文件的内容
- 选项
- –help, -?
- 显示帮助
- –help, -?
设置登录路径
设置过程
- 获取用户信息
- 本地服务器使用用户名和密码 localuser 和 localpass
- 远程服务器使用用户名和密码 remoteuser 和 remotepass,远程主机为 remote.example.com
- 设置登录路径
shell> mysql_config_editor set --login-path=client --host=localhost --user=localuser --password Enter password: enter password "localpass" here shell> 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 set -G client -uroot -p -S /tmp/mysql.sock -w
- 查看 .mylogin.cnf 内容
shell> mysql_config_editor print --all [client] user = localuser password = ***** host = localhost [remote] user = remoteuser password = ***** host = remote.example.com
Note: 只能通过 mysql_config_editor 命令查看此文件。密码值被屏蔽,不会显示为明文。
- 如果以下两个选项都没有使用,则默认显示 client 登录路径
- –all
- 显示所有登录路径
- –login-path
- 显示指定的登录路径
- –all
- 如果以下两个选项都没有使用,则默认显示 client 登录路径
- 调用登录路径
- 连接远程服务器
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 选项。
-
如果需要在文件内移动登录路径,可以将其删除,然后重新创建以将其添加到末尾。