我想从bash脚本运行MySQL查询来创建新用户:
mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser@localhost IDENTIFIED BY 'somepass'"
其中$ BUILD变量设置为数字,例如15,因此最终查询应如下所示:
mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_15.* TO appuser@localhost IDENTIFIED BY 'somepass'"
但是......在运行脚本的目录中,有一个与数据库同名的tar存档,所以查询变成这样:
mysql -u root -p$dbpass -e "GRANT ALL PRIVILEGES ON appdb_15.tar.gz TO appuser@localhost IDENTIFIED BY 'somepass'"
我想这是因为匹配,但更改文件名不是一个选项。也不允许将脚本移动到其他目录。
我试图用反斜杠(appdb_${BUILD}\.*
)来逃避点 - 没有任何改变。
我如何解决这个问题?
答案 0 :(得分:0)
你的方法没有任何问题,它在我的案例中有效。见下文。你能告诉我们你得到的错误是什么,以便我们可以帮到你吗?
[root@cloud mysql]# ls
appdb_15.tar.gz test.sh
[root@cloud mysql]# cat test.sh
#!/bin/bash
BUILD=15
# First Method
mysql -u root -ptest -e "GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser@localhost IDENTIFIED BY 'somepass';"
# Second Method
mysql -u root -ptest <<EOF
GRANT ALL PRIVILEGES ON appdb_${BUILD}.* TO appuser1@localhost IDENTIFIED BY 'somepass';
select user, host from mysql.user where user like 'appuser%';
EOF
[root@cloud mysql]# ./test.sh
user host
appuser localhost
appuser1 localhost
编辑1: 我忘了提到这绝对不是一个重击问题。
编辑2 :将构建变量从5更改为15.