Mysql

如何讓 MySQL 客戶端從 mylogin.cnf 讀取密碼?

  • July 4, 2021

我正在嘗試使 mysql 客戶端連接到 mysql 伺服器,而無需以互動方式提供密碼。採取的步驟:

1)首先創建一個mylogin.cnf文件

$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:

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>

3)使用mysql客戶端連接

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

是否有預設值/配置使客戶端忽略 mylogin.cnf 中的密碼?從文件中正確讀取了使用者和主機屬性。

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

$ mysql -p <dbname>
Enter password: 
Reading table information...
...
mysql> 

MySQL 客戶端版本是 5.6.22,MySQL Server 版本是 5.6.22,都在 Oracle Linux 6 上。客戶端和伺服器在不同的主機上。

謝謝

無論如何,您可能會在某處保存密碼。即使是 MySQL 5.6 登錄路徑,任何有動機的人都可以輕鬆解密。該警告說,這將是一個簡單的解決方案。

在您的環境腳本(例如~/.profile~/.bashrc)中,設置

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

(當然,輸入您想要的使用者、密碼和主機名。)

shell重新登錄後,你應該可以簡單地做

mysql

…這將使用您的別名並連接到數據庫並忽略.my.cnf文件中的任何密碼。

**安全注意事項:**如果您的伺服器上有其他使用者,您可能需要 chmod 700 您的配置文件腳本,這樣密碼就不會被其他人輕易訪問。任何具有 root 或 sudo 的管理員仍然可以看到它;沒辦法。

引用自:https://dba.stackexchange.com/questions/86595