Назад | Перейти на главную страницу

MySQL / несуществующий дом против «Нет каталога, вход в систему с HOME = /»

Скрипт preinst в пакетах Debian / Ubuntu для MySQL задает в качестве домашнего каталога по умолчанию для сервера MySQL значение /nonexistent, предположительно в качестве меры безопасности - сервер MySQL имеет свой собственный datadir путь, который он использует как домашний каталог.

Однако побочным эффектом этого является то, что при запуске MySQL генерирует следующее сообщение:

No directory, logging in with HOME=/

Меня беспокоит то, что это не очень хорошо с точки зрения безопасности. Предполагается, что он заставит MySQL попытаться создать файлы в /; очевидно, он не должен этого делать из-за разрешений, но было бы лучше даже не пытаться. я видел ответы которые «решают» эту проблему, создавая домашний каталог, но это кажется бессмысленным, поскольку весь смысл этого заключается в том, что это не так, хотя это может быть «безопасно», потому что MySQL также настроен на использование /bin/false как его оболочка.

Было бы безопаснее установить его на что-то, что действительно существует и принадлежит MySQL, например /var/lib/mysql?

Или создать папку, но не разрешить MySQL писать в нее?

Есть ли более чистое решение?

Чтобы избавиться от этого сообщения, вы можете просто назначить домашний каталог пользователю mysql:

sudo systemctl stop mysql.service
sudo usermod -d /var/lib/mysql/ mysql
sudo systemctl start mysql.service

и сообщение должно исчезнуть. Это работает для меня, но я не проверял, есть ли у этого какие-либо другие последствия, например относительно безопасности.