Linux
不使用root密碼通過命令行連接MySQL?
我正在為某些任務建構一個 Bash 腳本。其中一項任務是在同一個 bash 腳本中創建一個 MySQL 數據庫。我現在正在做的是創建兩個變數:一個用於儲存使用者名,另一個用於儲存密碼。這是我的腳本的相關部分:
MYSQL_USER=root MYSQL_PASS=mypass_goes_here touch /tmp/$PROY.sql && echo "CREATE DATABASE $DB_NAME;" > /tmp/script.sql mysql --user=$MYSQL_USER --password="$MYSQL_PASS" < /tmp/script.sql rm -rf /tmp/script.sql
但是總是得到一個錯誤,說沒有密碼的使用者 root 訪問被拒絕,我做錯了什麼?我需要對 PostgreSQL 做同樣的事情。
對於 MySQL 和 PostgreSQL,您可以在本地配置文件中指定您的使用者和密碼。.my.cnf 用於 MySQL 和 .pgpass 用於 PostgreSQL。這些文件應該在您的主目錄中(即~/.my.cnf)。
.my.cnf:
[mysql] user=user password=password
.pgpass:
host:port:database:user:password
您可以在此處輸入萬用字元,用任何欄位替換 *******。
PS:永遠不要在命令行上指定密碼!如果您的系統未配置為不顯示屬於其他使用者的程序,則使用ps可以完全看到這一點。
@thinice:如果你想創建那些真正安全的文件,你應該這樣做:
umask 077 touch .my.new.config umask 022 # or whatever was your default
這樣,從一開始就可以使用安全權限創建文件,並且沒有竊聽者有機會竊取您的密碼。
無論如何,PostgreSQL 將拒絕使用權限高於 0600 的文件。