2011-09-23 77 views
3

我需要從bash腳本中授予數據庫特權。一些參數以變量的形式表示,例如用戶名和密碼。在mysql外殼的命令是這樣的:如何在bash腳本中授予MySQL特權?

GRANT ALL ON *.* TO "$user"@localhost IDENTIFIED BY "$password"; 

...除了$user$password將通過它們的值來代替。

有沒有辦法在bash腳本中執行這樣的命令?

謝謝!

回答

4

你去那裏:)

#!/bin/bash 

MYSQL=`which mysql` 
EXPECTED_ARGS=3 

Q1="USE $1;" 
Q2="GRANT ALL ON *.* TO '$1'@'localhost' IDENTIFIED BY '$2';" 
Q3="FLUSH PRIVILEGES;" 
SQL="${Q1}${Q2}${Q3}" 

if [ $# -ne $EXPECTED_ARGS ] 
then 
    echo "Usage: $0 dbname dbuser dbpass" 
    exit $E_BADARGS 
fi 

$MYSQL -uroot -p -e "$SQL" 
+0

我很抱歉,但這不是我的問題的答案。 – Dunaril

+0

@Dunaril你爲什麼說這不是你的問題的答案?乍看之下,這看起來會起作用。 – Icarus

+0

@伊卡洛斯答案編輯:) – Dunaril

0

如果我們鴕鳥政策知道密碼,我們可以得到它:

cat /etc/psa/.psa.shadow 

所以我們可以得到到MySQL沒有提示輸入密碼,如:

mysql -uadmin -p`cat /etc/psa/.psa.shadow`