Меня несколько раз укусил пользователь 'debian-sys-maint', который установлен по умолчанию в пакетах mysql-server, установленных из репозиториев Ubuntu.
Обычно происходит следующее: я извлекаю свежую копию нашей производственной базы данных (которая не работает в Debian / Ubuntu) для устранения неполадок или новой разработки и забываю исключить таблицу mysql.user, следовательно, теряю пользователя debian-sys-maint.
Если по какой-либо причине мы добавим новых пользователей mysql, мне придется «объединить» их в мою среду разработки, а не просто наложить таблицу.
Без пользователя моя система все еще кажется работоспособной, но страдает от таких ошибок, как:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- Для чего используется debian-sys-maint?
- Есть ли лучший способ для сопровождающих пакетов сделать то, что они пытаются сделать?
- Какой самый простой способ восстановить его после того, как я его потерял?
- Каков правильный / минимальный набор привилегий для этого пользователя?
- Похоже, плохая идея «предоставить все привилегии на *. * ...»
редактировать
Дополнительный вопрос - пароль в /etc/mysql/debian.cnf уже хеширован или это открытый текст? Это имеет значение, когда вы идете воссоздать пользователя, и я, кажется, никогда не понимаю это правильно с первой попытки.
Спасибо
Ответы:
Одна из главных вещей, для которой он используется, - указание серверу накатывать логи. Для этого требуется как минимум привилегия перезагрузки и завершения работы.
Смотрите файл /etc/logrotate.d/mysql-server
Используется
/etc/init.d/mysql
сценарием для получения статуса сервера. Он используется для корректного выключения / перезагрузки сервера.Вот цитата из README.Debian
Лучший план - просто не потерять его. Если вы действительно потеряли пароль, сбросьте его, используя другую учетную запись. Если вы потеряли все привилегии администратора на сервере MySQL, следуйте инструкциям по сбросу пароля root, а затем восстановите
debian-sys-maint
.Вы можете использовать команду, подобную этой, для создания файла SQL, который вы можете использовать позже для воссоздания учетной записи.
При установке пароль не хешируется / не шифруется, но в новых версиях mysql теперь есть способ шифрования учетных данных (см .: https://serverfault.com/a/750363 ).
источник
Пользователь debian-sys-maint по умолчанию является корневым эквивалентом . Он используется некоторыми сценариями обслуживания в системах Debian и, как побочный эффект, позволяет пользователям с правами root на коробке просматривать открытый текстовый пароль в /etc/mysql/debian.cnf (хорошо или плохо?)
Вы можете заново создать пользователя:
Просто убедитесь, что пароль соответствует этому в /etc/mysql/debian.cnf
источник
Вы также можете:
Что даст вам возможность воссоздать пользователя debian-sys-maint. Существующие пользователи и базы данных в безопасности.
источник
Я хотел просто прокомментировать, но я думаю, что правильный синтаксис заслуживает отдельной записи. Это создаст пользователя debian-sys-maint :
Если у вас все еще есть файл /etc/mysql/debian.cnf, просто используйте там пароль.
Не стесняйтесь придумать более безопасное решение для
параноиков.источник
/etc/mysql/debian.cnf
файл, являетсяroot
пользователем Linux . И когда кто-то может прочитать этот файл, он уже имеетroot
доступ к компьютеру и может остановить сервер MySQL и добавить своего системного администратора. И сценарий, запускающий MySQL и другие пакеты, не может выполнять обслуживание безопасности и другое обслуживание. Так что да, это настолько безопасно, насколько это необходимо. И полезно, если вы потеряете пароль администратора MySQL для его восстановления, без необходимости перезапускать его в небезопасном режиме. ;-)Если вам нужно добавить
debian-sys-maint
пользователя только дляlogrotate.d
целей, вы не должны предоставлятьALL PRIVILEGES
илиGRANT OPTION
- это ненужная гигантская дыра в безопасности. Вместо этого вы можете просто добавить пользователя с такойRELOAD
привилегией (при условии, что вы обращаетесь к своей базе данных какroot
, и вы заменяете xxxxxx своим паролем)2019 Обновление
Этот ответ может быть устаревшим - см. Комментарии со строгим мнением ниже.
источник
debian-sys-maint
. Кроме того, я могу подтвердить, что это работает как шарм. Ура!debian-sys-maint
пользователь также используется для выключения сервера. А также для проверки пользователей root при запуске сервера mysql. Поэтому вам по крайней мере необходимо предоставить привилегии select для mysql. * И привилегии завершения работы.Вместо
думаю
потому что пароль не хешируется ...?
источник
debian-sys-maint необходимые разрешения
В других ответах достаточно адресовано все, кроме минимального набора разрешений, необходимых для пользователя debian-sys-maint. Многие из ответов здесь просто неверны в этом отношении и фактически опасны. Не уменьшайте привилегии debian-sys-maint (включая опцию предоставления) без чтения и понимания ниже:
Сопровождающий Debian не давал капризным пользователям все привилегии. Вот что требуется, где и почему. Некоторые из этих привилегий являются надмножествами других, но я перечислю их независимо, на случай, если вы захотите что-то настроить и отменить требования к ним:
Последнее, конечно, является основным требованием для привилегий. Страница man для mysql_upgrade гласит:
ПРЕДУПРЕЖДЕНИЕ. Если вы решили сократить привилегии, которыми обладает debian-sys-maint, то убедитесь, что вы готовы вручную обрабатывать любые будущие обновления безопасности Debian и / или обновления, которые касаются MySQL. Если вы выполняете обновление пакетов MySQL с ограниченными привилегиями debian-sys-maint, и если mysql_upgrade не может завершиться в результате, он может оставить вашу базу данных в неопределенном состоянии (чтение прервано). Снижение привилегий может не вызывать каких-либо очевидных повседневных проблем до тех пор, пока не появится обновление, поэтому не стоит полагать, что вы уже уменьшили привилегии без каких-либо вредных воздействий, поскольку это основание полагать, что это безопасно.
источник
Как примечание к этому, взгляните на этот пост mysqlperformanceblog, чтобы узнать, почему вы можете захотеть отключить специфичные для debian вещи.
источник
При использовании MySQL 5.6+ я бы порекомендовал использовать
mysql_config_editor
команду для создания записи для пользователя'debian-sys-maint'@'localhost'
с использованием соответствующего пароля, то есть пароль не нужно хранить в виде простого текста на сервере.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
После этого можно сконфигурировать специфический для Debian конфигурационный файл
/etc/mysql/debian.cnf
, чтобы имя пользователя и пароль не сохранялись в файле.Наконец, измените файл logrotate для MySQL, чтобы он использовал данные для входа в систему, хранящиеся в
~/.mylogin.cnf
файле, вместо файла, специфичного для debian, заменив/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
с участием
/usr/bin/mysqladmin --login-path=debian-sys-maint
Надеюсь это поможет :)
Дейв
источник
debian-sys-maint
пользователя достигнута этим? Эти пакеты должны иметь возможность использовать этот пользователь / пароль для обслуживания системы в качествеroot
пользователя в домене Linux (неroot
пользователю в MySQL без администратора, который должен был вводитьroot
пароль для MySQL?/etc/mysql/debian.cnf
чтобы удалить пароли и изменить файл logrotate для ссылки на использование защищенных данных. Я не уверен, используется ли пользователь debian-sys-maint для чего-либо еще, но если это так, это поможет вам определить, где Debian использует эту учетную запись пользователя от вашего имени.