我需要从bash脚本中为数据库授予权限。有些参数是变量形式,比如用户名和密码。 mysql shell中的命令如下所示:
GRANT ALL ON *.* TO "$user"@localhost IDENTIFIED BY "$password";
... $user
和$password
将被其值替换。
有没有办法在bash脚本中执行这样的命令?
谢谢!
答案 0 :(得分:7)
你去:)
#!/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"
答案 1 :(得分:0)
如果我们不知道密码,我们可以通过以下方式获取:
cat /etc/psa/.psa.shadow
所以我们可以在没有提示密码的情况下进入mysql,如:
mysql -uadmin -p`cat /etc/psa/.psa.shadow`