Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  mysql_config_editor — MySQL Configuration Utility

6.6.7 mysql_迁移密钥环 — 密钥迁移实用程序

MySQL 配置编辑器工具 (mysql_配置编辑器) 允许您将认证凭据存储在一个名为 .mylogin.cnf 的加密登录路径文件中。该文件的位置是在 Windows 上是 %APPDATA%\MySQL 目录,而在非 Windows 系统上则是当前用户的家目录。该文件可以由 MySQL 客户端程序后续读取以获取连接到 MySQL 服务器所需的认证凭据。

未加密格式的 .mylogin.cnf 登录路径文件由选项组构成,类似于其他选项文件。每个选项组在 .mylogin.cnf 中被称为一个 "登录路径",它允许仅包含以下几个选项:hostuserpasswordportsocket。可以将登录路径选项组视为一个指定连接到哪个 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客户端(mysqlmysqladmin 等)以及测试工具 mysql-test-run.pl 访问。

程序在登录路径文件中使用组如下所示:

  • mysql_config_editor 默认情况下操作 client 登录路径,如果您没有指定一个明确的--login-path=name 选项来指示要使用哪个登录路径。

  • 没有指定 --login-path 选项时,客户端程序从登录路径文件中读取与其他选项文件相同的组。考虑以下命令:

    mysql

    默认情况下,mysql 客户端从其他选项文件中读取 [client][mysql] 组,因此它也会从登录路径文件中读取。

  • 使用--login-path选项,客户端程序还会从登录路径文件中读取指定的登录路径。其他选项文件中的组别读取方式保持不变。考虑以下命令:

    mysql --login-path=mypath

    MySQL命令行客户端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 就不会有这样的问题。但是,这种加密机制不太可能阻止一个坚定的攻击者,并且你 shouldn't 认为它是不破解的。一个能够获得你的系统管理员权限并访问文件的用户可以通过一些努力来解密 .mylogin.cnf 文件。

登录路径文件必须对当前用户是可读写的,对其他用户则不可访问。否则,mysql_config_editor 将忽略它,而客户端程序也不会使用它。

调用 mysql_config_editor 如下所示:

mysql_config_editor [program_options] command [command_options]

如果登录路径文件不存在,mysql_config_editor 将创建它。

命令行参数如下:

  • 程序选项 包含了 mysql_config_editor 的一般选项。

  • 命令 指示对 .mylogin.cnf 登录路径文件执行的操作。例如,set 写入登录路径到文件中,remove 删除登录路径,而 print 显示登录路径内容。

  • 命令选项 指示与命令相关的任何额外选项,例如登录路径名称以及在登录路径中使用的值。

命令名在程序参数中的位置很重要。例如,这些命令行具有相同的参数,但产生不同的结果:

mysql_config_editor --help set
mysql_config_editor set --help

首先,命令行显示了一个通用的mysql_config_editor 帮助信息,并忽略了set命令。第二个命令行显示了特定于set命令的帮助信息。

假设您想要设置一个名为client的客户端登录路径,该路径定义了您的默认连接参数,以及另一个名为remote的登录路径,用于连接到主机remote.example.com上的MySQL服务器。您希望以以下方式登录:

  • 默认情况下,以用户名和密码localuserlocalpass连接到本地服务器。

  • 使用用户名和密码remoteuserremotepass连接到远程服务器。

要在.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`命令默认会显示客户端登录路径,如果存在的话。

如前面的例子所示,登录路径文件可以包含多个登录路径。这样mysql_config_editor使得设置为不同MySQL服务器或使用不同账户连接到同一服务器变得容易。任何这些都可以通过名称后续使用--login-path选项来选择,例如,要连接到远程服务器,请使用以下命令:

mysql --login-path=remote

在这里,mysql 从其他选项文件中读取 [client][mysql] 选项组,以及从登录路径文件中读取 [client][mysql][remote] 组。

连接到本地服务器时,请使用以下命令:

mysql --login-path=client

由于 mysql 默认读取 clientmysql 登录路径,--login-path 选项在这种情况下不会添加任何内容。该命令等同于以下命令:

mysql

从登录路径文件中读取的选项优先于其他选项文件中读取的选项。登录路径文件中的后续组中的选项优先于文件中出现顺序更早的组中的选项。

mysql_配置编辑器 会将登录路径按照您创建它们的顺序添加到登录路径文件中,因此您应该先创建更通用的登录路径,然后再创建更具体的路径。如果需要移动一个登录路径在文件中的位置,您可以先删除它,然后重新创建它以将其放置到末尾。例如,客户端 登录路径更为通用,因为它会被所有客户端程序读取,而 mysqldump 登录路径只会被mysqldump 使用。指定在后面的选项将覆盖之前指定的选项,所以将登录路径按照 客户端mysqldump 的顺序排列,可以使 mysqldump-特定的选项覆盖 客户端 选项。

当您使用 set 命令与mysql_config_editor 创建登录路径时,不需要指定所有可能的选项值(主机名、用户名、密码、端口、套接字)。只需提供的值将被写入路径中。任何后续所需的值可以在连接到 MySQL 服务器时通过其他选项文件或命令行指定。命令行上的任何选项都将覆盖登录路径文件或其他选项文件中的指定。例如,如果 remote 登录路径的凭据也适用于主机 remote2.example.com,那么连接到该主机的服务器应如下所示:

mysql --login-path=remote --host=remote2.example.com

mysql_config_editor 支持以下一般选项,它们可以在命令行上使用,任何命令之前。有关特定于命令的选项,请参阅mysql_config_editor 命令和特定于命令的选项

表格 6.18 mysql_config_editor 一般选项

Option Name Description
--debug 生成调试日志
--help 显示帮助信息并退出
--verbose 详细模式
--version 显示版本信息并退出

  • --help, -?

    Command-Line Format --help

    显示一个一般帮助信息并退出。

    要查看特定命令的帮助信息,请以以下方式调用 mysql_config_editor,其中 命令 是一个其他于 help 的命令:

    mysql_config_editor command --help
  • --debug[=调试选项], -# 调试选项

    Command-Line Format --debug[=debug_options]
    Type 字符串
    Default Value d:t:o

    写入调试日志。一个典型的 调试选项 字符串是 d:t:o,文件名。默认值为 d:t:o,/tmp/mysql_config_editor.trace

    此选项仅在使用 WITH_DEBUG 构建 MySQL 时可用。Oracle 提供的 MySQL 发行版是 使用此选项构建的。

  • --verbose, -v

    Command-Line Format --verbose

    详细模式。打印程序执行时更多的信息。如果操作没有你期望的效果,这个选项可能会有助于诊断问题。

  • --version, -V

    Command-Line Format --version

    显示版本信息并退出。

本节描述了允许在命令行上跟随mysql_config_editor命令的命令特定选项。

此外,mysql_config_editor 支持在任何命令之前使用的通用选项。关于这些选项的描述,请参阅mysql_config_editor 通用选项

mysql_config_editor 支持这些命令:

  • help

    显示一个一般帮助消息并退出。这条命令不接受任何后续选项。

    要查看特定命令的帮助信息,请以以下方式调用 mysql_config_editor,其中 命令 是一个除 帮助 之外的命令:

    mysql_config_editor command --help
  • print [选项]

    打印登录路径文件的内容,除非密码以 ***** 的形式显示。

    默认的登录路径名为 客户端,如果未指定登录路径。同时给出 --all--login-path,则 --all 优先。

    `print` 命令允许在命令名称后跟随这些选项:

    • --帮助, -?

      显示 `print` 命令的帮助信息并退出。

      要查看通用帮助信息,请使用 mysql_config_editor --help

    • --all

      打印登录路径文件中的所有登录路径内容。

    • --login-path=名称, -G 名称

      打印指定登录路径的内容。

  • remove [选项]

    从登录路径文件中移除一个登录路径,或者通过移除选项来修改登录路径。

    这条命令从登录路径中移除仅限于由 --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允许在命令名后面跟随这些选项:

  • set [options]

    将登录路径写入登录路径文件中。

    这条命令只将指定了 --host--password--port--socket--user 选项的信息写入登录路径。如果没有给出这些选项,mysql_config_editor 将登录路径写入为空组。

    命令 set 允许在命令后面跟随这些选项:

    • --help-?

      显示 set 命令的帮助信息并退出。

      要查看总体帮助信息,请使用 mysql_config_editor --help

    • --host=<主机名>-h <主机名>

      要写入登录路径的主机名称。

    • --login-path=<名称>-G <名称>

      要创建的登录路径名。如果不给出这个选项,默认的登录路径名是 client

    • --password-p

      输入密码以写入登录路径。使用mysql_config_editor后,系统会显示一个提示符。在提示符下输入密码并按回车键。为了防止其他用户看到密码,mysql_config_editor不会显示输入的密码。

      如果要指定一个空密码,请在密码提示符下按回车键。写入到登录路径文件中的内容可能会包含以下行:

      password =
    • --port=<端口号>, -P <端口号>

      要写入到登录路径的TCP/IP端口号。

    • --socket=<文件名>, -S <文件名>

      要写入到登录路径的Unix域套接字文件名。

    • --user=<用户名>, -u <用户名>

      要写入到登录路径的用户名。

    • --warn, -w

      如果命令尝试覆盖一个现有的登录路径,会发出警告并要求用户确认。这个选项默认启用,可以使用--skip-warn来禁用它。