2011-09-23 78 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`