Почему клиент mysql получает сообщение «Не удается подключиться к локальному серверу MySQL через сокет ‘/var/mysql / mysql.sock'» при подключении к УДАЛЕННОМУ серверу?

#php #mysql #bash #shell #cron

#php #mysql #bash #оболочка #cron

Вопрос:

У меня есть две системы: веб-сервер и сервер mysql. У веб-сервера возникла проблема, из-за которой его клиент mysql терпит неудачу при подключении УДАЛЕННОГО сервера mysql с помощью сценария оболочки, запускаемого заданием cron. Задание cron использует пользователя root, и я могу войти в систему как root и запустить скрипт в командной строке без проблем.

Сценарий оболочки optimizestatements.sh имеет:

 #!/bin/bash
mysql --login-path=remoteserver -se "OPTIMIZESTATEMENT"`;
  

Используя mysql_config_editor , я настроил зашифрованный файл параметров, чтобы избежать отправки пароля для входа в систему в открытом виде. Когда я создавал этот файл опций, я использовал прямой IP-адрес удаленного сервера.

Запись задания cron проста:

 HOME=/
TERM=dumb
0 1 * * * /usr/local/bin/optimizestatements.sh | ts '[%Y-%m-%d %H:%M:%S]' >> /var/log/cron_optimizedb 2>amp;1
  

В моих предыдущих поисках ответа почти все они говорят, что локальный mysql не запущен на веб-сервере, но они не обязательно применимы к моему случаю, потому что я не подключаюсь к своей локальной службе mysql для ее оптимизации, я пытаюсь подключиться к удаленному серверу mysql.

Я не хочу, чтобы mysql работал на моем веб-сервере. Я просто хочу использовать установленный клиент mysql.

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

Есть ли что-то еще, чего мне не хватает в процессе? Почему для задания cron требуется запуск локального демона mysql, а для запуска его вручную в командной строке — нет?

Комментарии:

1. .mylogin.cnf Существует ли у $HOME пользователя cron, root в вашем случае? Возможно, cron не настроен $HOME , поэтому mysql он не может его найти. Не могли бы вы просто использовать систему событий MySQL для размещения ваших инструкций optimize?

2. Да, в домашнем каталоге правильного пользователя есть .mylogin.cnf, но теперь, когда вы упомянули об этом, в crontab у меня HOME установлено значение /, и это, вероятно, портит работу скрипта. Я также изучу систему событий MySQL, я даже не думал этого делать. Спасибо.