如何在Bash脚本中授予MySQL权限?

4

我需要在bash脚本中授予数据库权限。一些参数以变量的形式给出,比如用户名和密码。在mysql shell中的命令如下:

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

除非将$user$password替换为它们的值,否则无法执行此命令。

是否有一种方式可以从bash脚本内执行此命令?

谢谢!

2个回答

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"

抱歉,但那不是我问题的答案。 - Dunaril
@Dunaril 为什么你说这不是对你问题的回答呢?乍一看,它似乎可行。 - Icarus
1
@Dunaril 我明白了。Jauzsika先生应该习惯在更新答案时加上UPDATE - Icarus
1
有没有一种方法可以在不提示密码的情况下完成这个操作? - Automatico
1
grant 语句中,我认为我们缺少了 privileges。我已经测试了你的建议,但是除非我添加权限,否则它不起作用。 - Tung

0

如果我们不知道密码,可以通过以下方式获取:

cat /etc/psa/.psa.shadow

所以我们可以无需提示密码就进入mysql,例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接