Создание базы данных MySQL и пользователя без пароля

Создание базы данных MySQL и пользователя без пароля

Я создаю набор скриптов bash, которые в основном готовят виртуальные хосты apache, репозитории git и другие вещи на облачном сервере. Пока все хорошо, все работает, но возникла большая проблема:Создание базы данных MySQL и пользователей.

Текущие скрипты используют ssh с ключами для аутентификации на облачном сервере, и каждый из моей команды может выполнять команды. Я хочу сохранить это и каким-то образом позволить им создавать новую базу данных MySQL и пользователя без необходимости входа в mysql как root или любой другой пользователь с высокими привилегиями, но у меня нет решения для этого.

Идея №1создать нового пользователя MySQL без пароля и предоставить ему полные права (например, root), но сделать его доступным только для использования @'localhost'.

Идея №2заключается в том, чтобы сохранить пароль для этого пользователя управления MySQL в файле и сделать его доступным только для текущего пользователя ssh, которого используют другие скрипты. Затем вход в систему mysql будет использовать этот сохраненный пароль для входа и создания базы данных и пользователя.

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

решение1

Вы хотите, чтобы пользователи unix и mysql, которых использует ваша команда, имели наименьшие возможные привилегии доступа, при этом позволяя им делать то, что вы хотите. Похоже, что обе ваши идеи предоставляют больше привилегий доступа, чем необходимо. Лучше для пользователя mysql команды:

  1. иметь только доступ CREATE или любой другой доступ, который им нужен (ограничивает то, что может сделать ваша команда, до минимума). Вы предоставляете пользователю mysql доступ с помощью оператора GRANT.
  2. сохранить имя пользователя и пароль в ~/my.cnfфайле, доступ на чтение которого имеет только владелец (это больше не ограничивает вашу команду, но не позволяет другим увидеть логин, если они увидят скрипт).

Вышеизложенное легко сделать, и это значительное улучшение.

Лучшей идеей, но требующей больше работы, было бы не разрешать пользователям команды доступ к созданию баз данных, а просто помещать запросы на настройку сайтов в некоторую очередь, которую другой пользовательский скрипт, которым управляете только вы (и который имеет только необходимый ему доступ), будет регулярно обрабатывать для настройки сайтов. Очередь может быть файлом с каждой строкой запроса, каталогом с каждым файлом запроса или таблицей базы данных с каждой записью запроса. Это зависит от того, насколько вы хотите защитить свою систему.

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

Связанный контент