MySQL /nonexistent home vs “没有目录,使用 HOME=/ 登录”

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 写入?

有更清洁的解决方案吗?

dig*_*jay 3

要消除此消息,您只需为 mysql 用户分配一个主目录:

sudo systemctl stop mysql.service
sudo usermod -d /var/lib/mysql/ mysql
sudo systemctl start mysql.service
Run Code Online (Sandbox Code Playgroud)

并且该消息应该消失了。这对我有用,但我没有检查这是否有任何其他影响,例如关于安全性。