【问题标题】:Bash Script SSH into MYSQL Server and create database with dash in itBash 脚本 SSH 进入 MYSQL Server 并在其中创建带有破折号的数据库
【发布时间】:2016-04-14 11:52:47
【问题描述】:

我一直遇到这个命令的问题:

ssh -t $SSSSHUSER@$SSSSH "echo \"CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$SSMYSQLUSER'@'$SSMYSQLSERVER';\" | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ;"

即使我避开了反引号,当数据库名称中出现- 时,数据库创建也会失败。任何想法如何修复语法?

在本地运行时一切正常:

echo "CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO '$MYSQLUSER'@'localhost';" | /Applications/MAMP/Library/bin/mysql -u"$MYSQLUSER" -p"$MYSQLPWD"

谢谢

【问题讨论】:

  • 您可能需要再次转义反引号。当 shell 取消引用双引号字符串时,它可能会剥离第一组转义。那或在外面使用单引号。将set -x 添加到远程命令字符串中,您应该会看到实际正在运行的命令。
  • 谢谢你的建议,这有助于:ssh -t $SSSSHUSER@$SSSSH "echo 'CREATE DATABASE `$NEWDB`; GRANT ALL ON `$NEWDB`.* TO $SSMYSQLUSER@$SSMYSQLSERVER ;' | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ; "

标签: mysql bash ssh


【解决方案1】:

这个在使用 set -x 调试后工作:

ssh -t $SSSSHUSER@$SSSSH "echo 'CREATE DATABASE \`$NEWDB\`; GRANT ALL ON \`$NEWDB\`.* TO $SSMYSQLUSER@$SSMYSQLSERVER;' | /usr/bin/mysql -u$SSMYSQLUSER -p$SSMYSQLPWD ; "

【讨论】:

    猜你喜欢
    • 2012-10-05
    • 1970-01-01
    • 2019-01-26
    • 2015-05-07
    • 2013-01-02
    • 2021-02-28
    • 2020-08-07
    • 2019-06-30
    • 2018-04-25
    相关资源
    最近更新 更多