gpt4 book ai didi

mysql - 在 MySQL 中通过 bash 添加用户

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:18 25 4
gpt4 key购买 nike

这是我第一次尝试在 mysql 终端中传递 bash 命令,我经常这样做:

每次安装应用程序时创建一个虚拟用户以与数据库交互。

然而,我所有的尝试都失败了,这是我的代码行:

new_user(){ mysql -u"$1" -p"$2" -e 'CREATE USER "$3"@"$4" IDENTIFIED BY "$5";
GRANT ALL PRIVILEGES ON "$6".* TO "$3"@"$4";
FLUSH PRIVILEGES;
exit;' &&
echo `new MySQL USER has been created ..
name:"$3" server:"$4" password:"$5" database:"$6"` ; }

但是,它给我这个错误:

 ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '"$4".* TO "$1"@"$2"' at line 1

我已经尝试使用 -e 但没有成功。

如何在mysql中传递bash变量?

更新:

感谢评论,我已经更新了引号的代码,但是我仍然无法将变量传递给 mysql 终端。

new_user() {
SQL="CREATE USER\"$3\"@\"$4\" IDENTIFIED BY \"$5\"; GRANT ALL PRIVILEGES ON \"$6\".* TO \"$3\"@\"$4\"; FLUSH PRIVILEGES; exit;"
mysql -uroot -p1 -e "$SQL" &&
echo new MySQL USER has been created .. name:\"$3\" server:\"$4\" password:\"$5\" database:\"$6\"

最佳答案

您可以通过使用 HEREDOC 来避免弄清楚如何转义引号。 .

要进行调试,可以尝试将您的函数分成两部分。

gen_user_sql(){
cat <<HEREDOC
CREATE USER '$1'@'$2' IDENTIFIED BY '$3';
GRANT ALL PRIVILEGES ON $4.* TO '$1'@'$2';
FLUSH PRIVILEGES;

HEREDOC
}
new_user(){
sqluser="$1"; shift
sqlpswd="$1"; shift
mysql -u"$sqluser" -p"$sqlpswd" -e "$(gen_user_sql $@)"
echo "new user: $@"
}
# see the query
gen_user_sql user host id db
# actually run it
new_user sqlu sqlp user host id db

一些注意事项以防有新语法:

  • $@ 是传入的所有变量。shift$@ 中删除将是 $1 的内容。 (在 shift 之后,$1 返回调用 shift 之前的 $2)
  • $(command) 捕获 command 的输出,在本例中将其用作 mysql
  • 的字符串输入

关于mysql - 在 MySQL 中通过 bash 添加用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49482017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com