Кто такой debian-sys-maint пользователь MySQL (и больше)?

Я использую MagicDisc от MagicISO помимо его свободного, он работает над Vista X64

Править: Хорошо, да также Виртуальный Диск Клона является классным инструментом, я использовал его, когда я был на x86, но в то время, когда я внес изменение, он не поддерживал x64, и теперь он делает...

71
задан 16 February 2015 в 10:20
9 ответов

Для чего используется 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.

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

Лучший план не состоит в том, чтобы просто потерять его. Если Вы действительно теряете пароль, сбрасываете его, с помощью другой учетной записи. Если Вы проиграли, все административные привилегии на mysql сервере следуют руководствам, чтобы изменить пароль root, затем восстановить debian-sys-maint.

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

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

Пароль в/etc/mysql/debian.cnf, уже хешированном

Пароль не хешируется/шифруется при установке но новые версии mysql теперь имеют способ зашифровать учетные данные (см.: https://serverfault.com/a/750363).

57
ответ дан 28 November 2019 в 19:28

debian-sys-maint пользователь является по умолчанию корневым эквивалентом. Это используется определенными сценариями обслуживания в системах 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

22
ответ дан 28 November 2019 в 19:28
  • 1
    Ре (хороший или плохой) - Если кому-то удается стать корнем, они могут обойти систему полномочия полностью путем простого перезапуска сервера с корректными опциями. Если у Вас, взломщик получает корень, Вы, вероятно, есть большие проблемы затем тот конфигурационный файл. –  Zoredache 19 May 2009 в 19:53
  • 2
    также ре: хороший или плохой - I' ve должен был полагаться на debian-sys-maint доступ для изменения корневого пароля учетной записи MySQL, когда о нем забыли. Это было хорошее наличие этой опции нейтрализации. –  Brent 19 May 2009 в 20:58
  • 3
    @Brent: См. dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html для того, как изменить mysql пароль root. I' ve отключил этого пользователя на многих установках mysql на Debian, поскольку он может вызвать опустошение при запуске с проверочными таблицами, если они - большие таблицы. –  Nathan 20 May 2009 в 03:23
  • 4
    Nathan, спасибо за ту ссылку. That' s новая информация для меня. Если у Вас есть процедура отключения учетной записи debian-sys-maint в целом, почему don' t Вы включают его здесь как отдельный ответ. Это было бы большим! –  Brent 20 May 2009 в 16:57
  • 5
    лучшее предоставление должен был бы только дать полномочия завершения работы/запуска. –  jmtd 25 August 2010 в 12:12

Как примечание стороны к этому, смотрите на это сообщение mysqlperformanceblog по причинам, почему Вы могли бы хотеть отключить debian-определенный материал.

2
ответ дан 28 November 2019 в 19:28

Вы могли также:

sudo dpkg-reconfigure mysql-server-5.0

Который даст Вам опцию воссоздать debian-sys-maint пользователя. Существующие пользователи и базы данных в безопасности.

19
ответ дан 28 November 2019 в 19:28

Вместо

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
ответ дан 28 November 2019 в 19:28

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

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

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

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

19
ответ дан 28 November 2019 в 19:28

Если вам нужно добавить пользователя debian-sys-maint только для целей logrotate.d , вы должны не предоставить ALL PRIVILEGES или GRANT OPTION - это ненужная гигантская дыра в безопасности. Вместо этого вы можете просто добавить пользователя с привилегией RELOAD , как это (при условии, что вы получаете доступ к своей базе данных как 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;

Обновление 2019

Этот ответ может быть устаревшим - см. Категорические комментарии ниже.

6
ответ дан 28 November 2019 в 19:28

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

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

Дэйв

2
ответ дан 28 November 2019 в 19:28

debian-sys-maint required permissions

Другие ответы в достаточной степени касались всего, кроме минимального набора разрешений, необходимых для пользователя debian-sys-maint. Многие ответы здесь просто неверны в этом отношении и даже опасны. Не уменьшайте права debian-sys-maint (включая параметр предоставления), не прочитав и не поняв ниже:

Сопровождающий Debian не предоставил пользователю все привилегии по прихоти. Вот что требуется, где и почему. Некоторые из этих привилегий являются надмножествами других, но я перечислю их отдельно на тот случай, если вы захотите что-то настроить и удалить для них требование:

  • shutdown и reload , что неудивительно, для завершение работы или создание базы данных, выполняемое с помощью /etc/init.d/mysql[12192 providedselect на mysql.user , необходимого для проверок работоспособности, выполняемых при запуске базы данных, обеспечивая наличие пользователя root. Выполнял каждый запуск с помощью / etc / mysql / debian-start (вызываемого /etc/init.d/mysql) с фактическим кодом в функции check_root_accounts в файле /usr/share/mysql/debian-start.inc.sh
  • select on information_schema.tables , global select , необходим для проверки сбойных таблиц. Выполнял каждый запуск с помощью / etc / mysql / debian-start (вызываемого /etc/init.d/mysql) с фактическим кодом в функции check_for_crashed_tables в файле /usr/share/mysql/debian-start.inc.sh
  • глобальные все привилегии , необходимые для обновления таблиц, если / когда новая версия MySQL установлена ​​посредством обновления или обновления Debian. Выполнял каждый запуск / etc / mysql / debian-start (вызывается /etc/init.d/mysql) с фактическим кодом в функции upgrade_system_tables_if_ne required в файле /usr/share/mysql/debian-start.inc.sh - на самом деле вызывает двоичный файл MySQL mysql_upgrade - не дайте себя обмануть именем функции (upgrade_system_tables_if_ne required), это потенциально может затронуть все таблицы - см. ниже

Последняя, ​​конечно же, является основным требованием для привилегий. На странице руководства для mysql_upgrade указано, что:

mysql_upgrade проверяет все таблицы во всех базах данных на наличие несовместимости с текущей версией MySQL Server. mysql_upgrade также обновляет системные таблицы, чтобы вы могли преимущество новых привилегий или возможностей, которые могли быть добавлено.

Если mysql_upgrade обнаруживает, что таблица имеет возможную несовместимость, она выполняет проверку таблицы и, если обнаружены проблемы, пытается таблицу ремонт.

ПРЕДУПРЕЖДЕНИЕ Если вы решите сократить привилегии, которые имеет debian-sys-maint, убедитесь, что вы готовы вручную обрабатывать любые будущие обновления безопасности debian и / или обновления, касающиеся MySQL. Если вы выполняете обновление пакетов MySQL с ограниченными правами debian-sys-maint,и если mysql_upgrade не может завершиться в результате, он может оставить вашу базу данных в неопределенном состоянии (чтение прервано). Снижение привилегий может не иметь очевидных повседневных проблем до тех пор, пока не появится обновление, поэтому не следует полагаться на тот факт, что вы уже снизили привилегии без каких-либо вредных последствий, как на основание для того, чтобы думать, что это безопасно.

3
ответ дан 28 November 2019 в 19:28

Теги

Похожие вопросы