Проверка скрипта с --login-path в Monit дает ОШИБКУ 1045 (28000) - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь проверить некоторые строки в базе данных MySQL с помощью «программы проверки», но всегда получаю сообщение об ошибке «ОШИБКА 1045 (28000): доступ запрещен для пользователя« root »@« localhost »(с использованием пароля: НЕТ )».

Само собой разумеется, что скрипт работает гладко при вызове из командной строки.

Сценарий выглядит так:

#!/bin/bash

data=$(mysql --login-path=client -e "USE *db here*; \
                                     SELECT * FROM *table here* \
                                     FROM *db here* b \ );
[...]

*if data ok* exit 0, else exit 1;

Код монита:

check program images with path /root/scripts/check_images
  every 144 cycles
  if status != 0 then alert


# mysql_config_editor print --all
[client]
user = <dbuser>
password = *****
host = localhost

Что я делаю не так?

1 Ответ

1 голос
/ 09 июня 2019

Кросс-постинг от Monit Bug Tracker .

Речь идет об отсутствующей среде внутри исполняемого скрипта.mysql использует $HOME для определения места файла .mylogin.cnf.

Окончательное решение так же просто, как:

#!/bin/bash

export HOME='/root/'
data=$(mysql -e "SELECT CURRENT_USER()");
state=$?

echo "$data"

exit $state
...