Вопрос или проблема
Я хочу иметь возможность останавливать и запускать свою установку 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".
Шаги для решения проблемы
-
Настройка прав для
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
Важно: Следите за тем, чтобы не было пробелов в синтаксисе и после запятой, если вы добавляете другие команды.
-
Проверка
requiretty
:Убедитесь, что строка
Defaults requiretty
отсутствует или закомментирована в вашем файлеsudoers
. Если она есть, замените её на:Defaults:neil !requiretty
Это должно позволить запускать команды
sudo
из скриптов без ограничения по TTY. -
Напишите скрипт для остановки MySQL:
Убедитесь, что ваш скрипт использует полный путь к исполняемым файлам. Пример простого скрипта для остановки сервера MySQL выглядит так:
#!/bin/bash /usr/bin/mysqladmin shutdown
Сохраните этот скрипт, например, как
downServer.sh
, и убедитесь, что у него есть права на выполнение:chmod +x /home/neil/tools/downServer.sh
-
Логи и разрешения:
Ошибка, связанная с невозможностью открыть файл журнала ошибок 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
), а также что у него есть права на запись в файл. -
Тестирование:
Перезапустите MySQL Workbench и попробуйте снова запустить или остановить сервер. Вместе с правильными правами и использованием
sudo
без пароля команда должна выполняться корректно.
Заключение
Следуя вышеуказанным шагам, вы сможете настроить управление MySQL через MySQL Workbench без возникновения проблем с разрешениями. Это упростит вашу работу и повысит эффективность администрирования базы данных. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью или проводить дополнительные исследования на форумах.