首页 > 解决方案 > 如何以其他用户身份运行 mysql 查询

问题描述

我有一个 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');"

标签: mysqlbashsu

解决方案


第二个"是关闭以 开头的字符串mysql,尝试引用内部引用的字符串:

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

推荐阅读