Скрипт для остановки MySQL

Вопрос или проблема

Я хочу иметь возможность останавливать и запускать свою установку MySQL из MySQL Workbench. Сначала говорилось, что скрипты запуска/остановки отсутствуют. Через несколько дней я нашел, куда они должны идти, и создал их. Хотя оболочныe скрипты, которые я создал, действительно останавливают и запускают сервер из командной строки, они не работают, когда вызываются из Workbench. Я получаю:

2024-11-11 10:12:16 - Сервер MySQL в настоящее время запущен
Не удалось открыть файл журнала ошибок: Не удалось получить данные из файла /var/log/mysql/error.log
2024-11-11 10:14:54 - Остановка сервера...
2024-11-11 10:14:54 - Выполняется '/home/neil/tools/downServer.sh'
2024-11-11 10:14:54 - Остановка сервера: /bin/sh: 1: /usr/bin/sudo: Доступ запрещен

2024-11-11 10:14:54 - Остановка сервера завершена.
2024-11-11 10:14:54 - Проверка статуса сервера...
2024-11-11 10:14:54 - Сервер MySQL в настоящее время запущен
2024-11-11 10:14:54 - Проверка статуса сервера...
2024-11-11 10:14:54 - Сервер MySQL в настоящее время запущен

Файл журнала ошибок имеет права 666, поэтому я не понимаю, почему он не может открыть этот файл. Почему он не может выполнить sudo и, если нет, как мне выполнить эту команду в скрипте?

Запуская скрипт из командной строки, вы наследуете права от пользователя, который его запускает, но когда MySQL Workbench запускает его, у него нет этих прав, и он также не может запускать sudo, поскольку это графический интерфейс.

Самым простым решением будет настроить sudo для разрешения выполнения без пароля.

Мы будем использовать visudo в вашем терминале следующим образом:

sudo visudo

Затем добавьте эту строку в конец вашего файла, не забудьте заменить /path/to/mysqladmin на путь к команде, которую нужно выполнить, например /usr/bin/mysqladmin

neil ALL=(ALL) NOPASSWD: /path/to/mysqladmin, /path/to/other/commands

Также проверьте, чтобы Defaults requiretty было отключено в файле sudoers, он должен выглядеть так в файле:

Defaults:neil !requiretty

Затем вам нужно будет проверить, использует ли ваш скрипт полный путь к команде, например:

#!/bin/bash
/usr/bin/mysqladmin shutdown

Ответ или решение

Скрипт для остановки MySQL: Полное руководство

Если вы хотите управлять вашей установкой MySQL через MySQL Workbench, включая возможность её остановки и запуска, вам необходимо настроить соответствующие скрипты и обеспечить правильные разрешения на выполнение команд. В данной статье мы разберем, как это сделать, основываясь на вашем описании проблемы.

Проблемы с выполнением скриптов

Вы упомянули о том, что скрипты для остановки и запуска сервера не работают при вызове из MySQL Workbench. Судя по полученным ошибкам, причиной является то, что MySQL Workbench, запуская скрипты, не наследует права пользователя, и выполнение команд через sudo приводит к ошибке "Permission denied".

Шаги для решения проблемы

  1. Настройка прав для sudo:

    Чтобы MySQL Workbench мог вызывать ваши скрипты с использованием sudo без запроса пароля, используйте команду visudo. Это гарантирует, что изменения будут выполнены корректно без повреждения конфигурационного файла sudoers.

    sudo visudo

    В конец файла добавьте следующую строку, заменив /path/to/mysqladmin на полный путь до исполняемого файла, который необходимо использовать (например, /usr/bin/mysqladmin):

    neil ALL=(ALL) NOPASSWD: /usr/bin/mysqladmin, /usr/bin/mysqld_safe

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

  2. Проверка requiretty:

    Убедитесь, что строка Defaults requiretty отсутствует или закомментирована в вашем файле sudoers. Если она есть, замените её на:

    Defaults:neil !requiretty

    Это должно позволить запускать команды sudo из скриптов без ограничения по TTY.

  3. Напишите скрипт для остановки MySQL:

    Убедитесь, что ваш скрипт использует полный путь к исполняемым файлам. Пример простого скрипта для остановки сервера MySQL выглядит так:

    #!/bin/bash
    /usr/bin/mysqladmin shutdown

    Сохраните этот скрипт, например, как downServer.sh, и убедитесь, что у него есть права на выполнение:

    chmod +x /home/neil/tools/downServer.sh
  4. Логи и разрешения:

    Ошибка, связанная с невозможностью открыть файл журнала ошибок MySQL, может быть связана с неправильными правами доступа к этому файлу или к директории, в которой он находится. Убедитесь, что у MySQL есть необходимые разрешения для записи в /var/log/mysql/error.log. Вы можете изменить права доступа к этому файлу с помощью следующей команды:

    sudo chown mysql:mysql /var/log/mysql/error.log
    sudo chmod 660 /var/log/mysql/error.log

    Убедитесь, что владельцем файла является пользователь MySQL (обычно mysql), а также что у него есть права на запись в файл.

  5. Тестирование:

    Перезапустите MySQL Workbench и попробуйте снова запустить или остановить сервер. Вместе с правильными правами и использованием sudo без пароля команда должна выполняться корректно.

Заключение

Следуя вышеуказанным шагам, вы сможете настроить управление MySQL через MySQL Workbench без возникновения проблем с разрешениями. Это упростит вашу работу и повысит эффективность администрирования базы данных. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью или проводить дополнительные исследования на форумах.

Оцените материал
Добавить комментарий

Капча загружается...