preinst 脚本在 Debian/Ubuntu MySQL 软件包中将 MySQL 服务器的默认主目录设置为/nonexistent
,大概是作为一种安全措施 - MySQL 服务器有自己的datadir
路径,它用作主目录。
然而,这样做的副作用是,当 MySQL 启动时,它会生成以下消息:
No directory, logging in with HOME=/
我担心的是,从安全角度来看,这看起来不太好。这表明它会迫使 MySQL 尝试在 中创建文件/
;显然,由于权限问题,它应该无法做到这一点,但最好不要尝试。我见过答案通过创建主目录来“解决”这个问题,但这似乎毫无意义,因为这样做的全部意义在于它没有,尽管它可能是“安全的”,因为 MySQL 也被设置为用作/bin/false
它的 shell。
将其设置为确实存在并且 MySQL 拥有所有权的东西是否更安全,例如/var/lib/mysql
?
或者创建文件夹,但不允许 MySQL 写入它?
有没有更清洁的解决方案?
答案1
为了摆脱这个消息,你可以只为 mysql 用户分配一个主目录:
sudo systemctl stop mysql.service
sudo usermod -d /var/lib/mysql/ mysql
sudo systemctl start mysql.service
消息应该消失了。这对我来说是可行的,但我还没有检查这是否有任何其他影响,例如关于安全。