Как запустить MySQL запрос как другой пользователь - PullRequest
0 голосов
/ 22 октября 2019

У меня есть команда 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 конечная точка SET url = REPLACE (url, '$ OLD_IP', '$ HOST_IP');"

1 Ответ

0 голосов
/ 22 октября 2019

Второй " закрывает строку, начинающуюся с mysql, попробуйте заключить в кавычки внутреннюю строку:

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