如何 运行 mysql 以其他用户身份查询

How to run mysql query as other user

我有一个 mysql 命令可以作为我的用户 'testuser' 执行。 Root 无权访问数据库。

我正在创建一个 运行 作为 root 的启动脚本,但我需要 运行 在此脚本期间作为 testuser 来自上面的查询。我试过这个:

sudo -u testuser "mysql -D keystone -e "UPDATE endpoint SET url=REPLACE(url, '$OLD_IP', '$HOST_IP');""

但我收到错误消息:

bash: 意外标记附近的语法错误 `('

有谁知道我的语法哪里不对?

解决方案是在整个 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');\""