存储 MySQL 客户端密码,或设置密码较少的身份验证

Tri*_*rip 17 mysql

我正在使用 mysql 命令行客户端,我不想每次启动客户端时都需要提供密码。我有哪些选择?

Zor*_*che 23

创建一个.my.cnf在您的主目录中命名的文件,如下所示。确保文件系统权限设置为只有拥有用户可以读取它 (0600)。

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql
Run Code Online (Sandbox Code Playgroud)

由于您还标记了您的问题 mysqldump,因此您应该查看此问题。

在没有root密码的cron作业中使用mysqldump

更新 (2016-06-29) 如果您正在运行 mysql 5.6.6 或更高版本,您应该查看mysql_config_editor工具,该工具允许您将凭据存储在加密文件中。感谢Giovanni向我提到这一点。


小智 11

您可以使用该mysql_config_editor实用程序将身份验证凭据存储在名为 的加密登录路径文件中.mylogin.cnf

要创建一组新的凭据,请运行:

mysql_config_editor set --host=db.host.org --user=dbuser --password
Run Code Online (Sandbox Code Playgroud)

并在提示时输入您的密码。

这会将您的身份验证凭据存储在默认client登录路径中。

您可以通过指定不同的--login-path选项来存储多个身份验证凭据:

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password
Run Code Online (Sandbox Code Playgroud)

默认情况下,mysql客户端从其他选项文件中读取[client][mysql]组,因此它也从登录路径文件中读取它们。通过一个--login-path选项,客户端程序另外从登录路径文件中读取指定的登录路径。从其他选项文件读取的选项组保持不变。考虑这个命令:

mysql --login-path=db2
Run Code Online (Sandbox Code Playgroud)

mysql客户端读取[client][mysql]其他选项的文件,并[client][mysql]以及[mypath]从登录路径文件。

要打印存储在配置文件中的所有信息,请运行:

mysql_config_editor print --all=true
Run Code Online (Sandbox Code Playgroud)

有关该实用程序的更多信息,请参见“mysql_config_editor — MySQL 配置实用程序”