Syn*_*hro 6 mysql security permissions
MySQL 的 Debian/Ubuntu 软件包中的 preinst 脚本将 MySQL 服务器的默认主目录设置为/nonexistent,大概是作为一种安全措施 - MySQL 服务器有自己的datadir路径,它像主目录一样使用。
但是,这样做的一个副作用是,当 MySQL 启动时,它会生成以下消息:
No directory, logging in with HOME=/
Run Code Online (Sandbox Code Playgroud)
我在这里担心的是,从安全的角度来看,这看起来并不好。它表明它会推动 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
Run Code Online (Sandbox Code Playgroud)
并且该消息应该消失了。这对我有用,但我没有检查这是否有任何其他影响,例如关于安全性。