【问题标题】:grant command is not working in shell script because of syntax error由于语法错误,grant 命令在 shell 脚本中不起作用
【发布时间】:2013-02-21 04:58:41
【问题描述】:

我遇到了一个 shell 脚本问题。

由于某种原因,我已经在双引号 (") 之前使用了 \ 字符,就像我的 shell 脚本的以下行一样。

sql2=\"将 \${db_name}.* 上的所有内容授予 \${db_user}@\${host} 标识的 \${dbpass};\";

但是在MySQL的“grant”命令语法中,我需要在\${dbpass}之前和之后加上双引号,这是我上面给出的shell脚本行的一部分。当我这样放时,\"\${dbpass}\",它在执行过程中抛出语法错误。我需要什么来解决这个问题。

这是一个更新。
这是我要运行的 shell 脚本。

ssh -t qbadmin@10.3.2.0 '
苏根 -c "
echo \"给数据库名称:\";
读取 db_name;
echo \"输入密码:\";
读取 db_pass;
主机=本地主机;
sql1=\"创建数据库\$db_name;\";
sql2=\"将所有 \${db_name}.* 授予 \${db_name}@\${host},由 \"\${db_pass}\";\";
sql3=\"\${sql1}\${sql2}\";
回声\"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'

请参考此脚本,并请让我知道我需要对此进行的必要更改。

谢谢。

【问题讨论】:

  • 你提到的变量$db_name等,它们来自shellscript对吗?其次,真的需要是双引号吗?不支持单引号吗?是什么给出了语法错误,脚本?你如何将它传递给 something 以及什么是 something
  • sql2 是 bash 变量吗?
  • @DavideBerra:我不知道你指的是谁,但我看不出有什么具体的东西使它成为 bash 变量。而是一个shell变量:)
  • 请看看我更新的问题。

标签: shell


【解决方案1】:

试试这个

db_name="yourdbname"
db_user="yourdbuser"
host="yourhost"
dbpass="yourdbpass"

sql2="grant all on ${db_name}.* to ${db_user}@${host} identified by ${dbpass};"

echo $sql2 | mysql -u yourusername -pmysql

【讨论】:

  • 感谢重播大卫。但请看看我更新的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2021-09-03
相关资源
最近更新 更多