如何让 MySQL 客户端从 mylogin.cnf 读取密码?

Lef*_*kas 15 mysql my.cnf mysql-5.6 password

我正在尝试使 mysql 客户端连接到 mysql 服务器,而无需以交互方式提供密码。采取的步骤:

1)首先创建一个mylogin.cnf文件

$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:
Run Code Online (Sandbox Code Playgroud)

2)文件创建成功:

$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt  136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
host = <host>
Run Code Online (Sandbox Code Playgroud)

3)使用mysql客户端连接

$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

某处是否有默认值/配置使客户端忽略 mylogin.cnf 中的密码?从文件中正确读取了用户和主机属性。

如果我在命令行上提供密码,我就可以正常连接:

$ mysql -p <dbname>
Enter password: 
Reading table information...
...
mysql> 
Run Code Online (Sandbox Code Playgroud)

MySQL 客户端版本为 5.6.22,MySQL Server 版本为 5.6.22,均在 Oracle Linux 6 上。客户端和服务器在不同的主机上。

谢谢

Naw*_*ail 13

首先使用以下命令设置登录路径

mysql_config_editor 设置 --login-path=lgpath --user=root -p
密码

然后使用下面的命令登录mysql

mysql --login-path=lgpath

可以通过以下方式查看有关 mysql 登录路径选项的帮助

mysql_config_editor 设置 --help


小智 5

我遇到了与 OP 相同的问题,但此线程中的答案让我感到困惑。Vinay Mandala 的链接实际上对我有用。为了清楚起见,重新发布在这里。

我的问题:

ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

证明mysql_config_editor没有正确处理密码中的特殊字符。

解决方案:

mysql_config_editor提示您输入密码时,请确保将密码用双引号 (") 括起来。之后,您就可以正常登录了。


Jos*_*ber 2

无论采用哪种方式,您都可能会在某个地方保存一个密码。即使是 MySQL 5.6 登录路径也可以被任何有动机的人轻松解密。该警告表示,这将是一个简单的解决方案。

在您的环境脚本(例如~/.profile~/.bashrc)中,设置

alias mysql='mysql -uUser -pPasswd -hHostname'

(当然,输入您想要的用户、密码和主机名。)

shell 重新登录后,您应该能够简单地执行以下操作

mysql

...它将使用您的别名并连接到数据库并忽略.my.cnf文件中的任何密码。

安全说明:如果您的服务器上有其他用户,您可能需要 chmod 700 您的配置文件脚本,以便其他人不容易访问密码。任何拥有 root 或 sudo 的管理员仍然可以看到它;没有办法解决这个问题。

  • -1 这既不回答OP的查询,也不避免将密码存储在文件中。密码现在存储在 .profile 而不是 .mylogin.cnf 中。但现在密码是通过 ps 命令显示的。 (2认同)
  • @joshua:[密码安全的最终用户指南](https://dev.mysql.com/doc/refman/5.6/en/password-security-user.html):“使用`-pyour_pass`或`-命令行上的 -password=your_pass` 选项(...)这很方便,但*不安全*。” (2认同)