我有一个 mysql 命令,我可以以我的用户身份执行它
testuser
。 root 无权访问数据库。
我正在创建一个以
root
运行的启动脚本,但我需要在此脚本期间以 testuser
的形式运行上面的查询。我试过这个:
sudo -u testuser "mysql -D keystone -e "UPDATE endpoint SET url=REPLACE(url, '$OLD_IP', '$HOST_IP');""
但是我收到错误:
bash: syntax error near unexpected token `('
有人知道我的语法哪里不对吗?
解决方案是整个 mysql 命令没有引号:
sudo -u testuser mysql -D keystone -e "UPDATE endpoint SET url=REPLACE(url, '$OLD_IP', '$HOST_IP');"
第二个
"
正在关闭以mysql
开头的字符串,尝试引用内部带引号的字符串:
sudo -u testuser "mysql -D keystone -e \"UPDATE endpoint SET url=REPLACE(url, '$OLD_IP', '$HOST_IP');\""