Вопрос: Что такое пользователь debian-sys-maint MySQL (и многое другое)?


Я несколько раз укусил пользователь «debian-sys-maint», который по умолчанию установлен на пакетах mysql-сервера, установленных из репозиториев 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 hashed или это пароль открытого текста? Это имеет значение, когда вы идете воссоздать пользователя, и я никогда, кажется, не исправляю это с первой попытки.

благодаря


65
2018-05-19 16:05


Источник


Пароль является открытым текстом в файле /etc/mysql/debian.cnf - Brent


Ответы:


Для чего используется debian-sys-maint?

По умолчанию он используется для указания серверу для каротажа журналов. Ему нужны, по крайней мере, привилегии перезагрузки и выключения.

См. Файл /etc/logrotate.d/mysql-server

Он используется /etc/init.d/mysql чтобы получить статус сервера. Он используется для изящного выключения / перезагрузки сервера.

Вот цитата из README.Debian

* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This user
together with the credentials in /etc/mysql/debian.cnf are used by the init
scripts to stop the server as they would require knowledge of the mysql root
users password else.

Самый простой способ восстановить его   после того, как я потерял его?

Лучший план - просто не потерять его.

Вы можете использовать такую ​​команду, чтобы создать файл SQL, который позже можно использовать для воссоздания учетной записи.

mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql

Введите пароль в   /etc/mysql/debian.cnf уже hashed

Пароль не хешируется.


56
2018-05-19 16:10





Вы также можете:

sudo dpkg-reconfigure mysql-server-5.0

Это даст вам возможность воссоздать пользователя debian-sys-maint. Существующие пользователи и базы данных безопасны.


19
2017-08-22 15:29



Это также работало на mysql-server-5.5. - serverSentinel


Я хотел просто прокомментировать, но я думаю правильный синтаксис заслуживает собственной записи. Это создаст Debian-SYS-садоводы пользователь:

mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;

Если у вас все еще есть файл /etc/mysql/debian.cnf, просто используйте здесь пароль.

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


18
2017-11-08 06:29



Это как параноидально, как должно быть. Тогда только один, который должен иметь возможность читать файл /etc/mysql/debian.cnf файл - это Linux root пользователь. И когда кто-то может прочитать этот файл, у них уже есть root доступ к машине и может остановить сервер MySQL и добавить собственный администратор системы. И скрипт, запускающий MySQL и другие пакеты, не может выполнять обслуживание безопасности и другое обслуживание. Так что да, это так же безопасно, как и когда-либо. И полезно, если вы потеряете пароль администратора MySQL, чтобы восстановить его, без необходимости перезапускать его в небезопасном режиме. ;-) - Anders
Это то, что для редактирования. - RobinJ


Debian-SYS-садоводы пользователь по умолчанию эквивалент корня, Он используется некоторыми сценариями обслуживания в системах Debian и в качестве побочного эффекта позволяет пользователям с корневым доступом на поле просматривать пароль открытого текста в файле /etc/mysql/debian.cnf (хорошо или плохо?).

Вы можете повторно создать пользователя:

GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;

Просто убедитесь, что пароль соответствует что в файле /etc/mysql/debian.cnf


18
2018-05-19 16:17



Re (хороший или плохой). Если кому-то удается стать root, они могут полностью обойти систему привилегий, просто перезапустив сервер с правильными параметрами. Если злоумышленник получает root, у вас, вероятно, есть больше проблем, чем этот файл конфигурации. - Zoredache
также re: хорошо или плохо - мне пришлось полагаться на доступ к debian-sys-maint, чтобы повторно установить пароль учетной записи root MySQL, когда он был забыт. Приятно было иметь этот резервный вариант. - Brent
@Brent: Смотрите dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html как сбросить пароль root mysql. Я отключил этого пользователя во многих установках mysql на Debian, поскольку он может вызвать хаос при запуске с проверкой таблиц, если они большие таблицы. - Nathan
Натан, спасибо за эту ссылку. Это новая информация для меня. Если у вас есть процедура отключения учетной записи debian-sys-maint, почему бы вам не включить ее здесь в качестве отдельного ответа. Это было бы прекрасно! - Brent
лучший грант должен был бы просто предоставить привилегии выключения / запуска. - jmtd


Если вам нужно добавить debian-sys-maint пользователя только для logrotate.d целей, вы должны не даровать ALL PRIVILEGES или GRANT OPTION - это ненужная гигантская дыра в безопасности. Вместо этого вы можете просто добавить пользователя с помощью RELOAD привилегии, подобные этому (при условии, что вы получаете доступ к своему db как root, и вы замените xxxxxx своим паролем)

# add the user with the reload right
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx'; 

# reload the rights
FLUSH PRIVILEGES;

# double check
select * from mysql.user;

5
2018-02-20 23:14



Это единственный безопасный ответ, который предоставляет только необходимые разрешения для debian-sys-maint, Кроме того, я могу подтвердить, что он работает как шарм. Ура! - Jealie
Это действительно дыра в безопасности? Если кто-то уже может прочитать /etc/mysql/debian.cnf, то они предположительно имеют корневой доступ и могут перезапустить mysql с помощью -skip-grant-tables в любом случае. - mc0e
Благодарю. Но не нужно дважды промывать вещи, MySQL уже знает, что делает команда GRANT. Видеть dev.mysql.com/doc/refman/5.6/en/privilege-changes.html - ygoe
И это не сработает, поскольку debian-sys-maint пользователь также используется для выключения сервера. А также для проверки пользователей root при запуске сервера mysql. Поэтому вам, по крайней мере, необходимо предоставить привилегии выбора для mysql. * И привилегии отключения. - Anders
@Anders Вы уверены, что это полный список необходимых грантов? Не могли бы вы ответить на этот вопрос, который я только что создал? - augurar


Вместо

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD('your password') WITH GRANT OPTION; FLUSH PRIVILEGES;

я думаю

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;

потому что пароль не хэшируется ...?


3
2017-08-04 05:39





В качестве примечания к этому, взгляните на это сообщение mysqlperformanceblog по причинам, по которым вы можете отключить специфические для debian вещи.


2
2018-05-20 20:33



«Обратите внимание, что это не должно быть проблемой с MySQL из Debian lenny, поскольку он поставляется с init-скриптами, которые не будут запускать CHECK TABLE на таблицах, отличных от MYISAM». - со страницы со ссылками - d-_-b


При использовании 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

Надеюсь это поможет :)

Дейв


1
2018-01-20 00:17



Но будет ли цель debian-sys-maint  пользователь может быть достигнут этим? Эти пакеты должны иметь возможность использовать этот пользователь / пароль для выполнения некоторого обслуживания системы, поскольку root пользователя в домене Linux (не root пользователя в MySQL без администратора необходимо ввести root пароль для MySQL? - Anders
Это работает для меня в моих тестах, если вы выполняете все изменения, такие как изменение /etc/mysql/debian.cnf для удаления паролей и изменения файла logrotate для ссылки на использование защищенных данных. Я не уверен, что пользователь debian-sys-maint используется для чего-либо еще, но если это так, это поможет вам указать, где Debian использует эту учетную запись от вашего имени. - Dave Rix