Скрипт 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
и сообщение должно исчезнуть. Это работает для меня, но я не проверял, есть ли у этого какие-либо другие последствия, например относительно безопасности.