Debian mysql/mariadb 中的帐户“debian-sys-maint”对于维护数据库系统正常运行非常重要。它需要完全管理权限,正如一些人在什么是 debian-sys-maint MySQL 用户(及更多)?。
但最近我们被审计人员审计了。审计人员指出的一个安全问题是,在一个数据库中,应该只有一个拥有完全管理权限的账户来访问整个数据库。此外,这个账户不应该是一个每个人都能猜到的特殊名字。因此,审计人员对我们 mariadb 中的“debian-sys-maint”账户提出了严肃的质疑。他们建议我们删除它,或者重命名它,前提是没有其他拥有管理权限的账户。
我的问题是,是否有另一个帐户可以替代“debian-sys-maint”?我在 /etc/mysql/debian.cnf 中看到了这一点:
[client]
host = localhost
user = debian-sys-maint
password = ****************
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = ****************
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
看起来这个特殊帐户可以更改为其他名称,只要我们在 debian.cnf 中的“用户”和“密码”参数中正确设置帐户名和密码,并使用以下命令在 mariadb 中创建该帐户:
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
最后删除所有其他管理帐户。然后一切都会正常工作,包括启动/停止 mariadb、通过 dpkg 系统升级 mariadb 等。将来升级时不会有数据库损坏的风险。我说得对吗?
提前感谢您的回答。
泰和长荣
[更新]
非常感谢您的回复。遗憾的是,我们无法更换审计员,因为他们是政府直接指派的。我猜他们知道一些通用数据库的基础知识,但不了解细节。也可能这是我们第一次接受审计。我们可能会揭露太多不必要的方面,并导致他们提出更多问题。
无论如何,为了进行实验,我们得到了一个“白鼠”系统 Debian-11.8,将系统“debian-sys-maint”帐户替换为另一个帐户,按照我发布的步骤进行操作。我们将测试系统是否能正常运行,至少半年或一年以上。在此期间,我们预计将有多次重启、断电恢复和升级的机会。
同时,我们会向审计员说明系统中“debian-sys-maint”的必要性。我们可能需要该帐户的“官方”说明文档,无论是来自 Debian 还是来自 Mariadb。您能指出我在哪里可以找到这份官方文档吗?
谢谢。
泰和长荣
[更新]
我测试了在 mariadb 中创建一个具有完全管理权限的帐户,并通过 unix_socket 进行识别,以替换“root”或“debian-sys-maint”帐户。此帐户也应作为普通用户存在于 Linux 帐户中。但这样它就无法在 Debian 维护系统中工作。
例如,
/etc/init.d/mariadb reload
该脚本将读取 /etc/mysql/debian.cnf 以获取管理帐户的凭据。它需要“root”权限。但是,如果我使用“root”帐户运行此命令,则无法以管理帐户身份登录 mariadb,因为它是通过 unix_socket 识别的。
因此,如果我们要玩这个技巧,就应该创建这个具有密码标识的管理帐户,并将帐户名和密码放入/etc/mysql/debian.cnf中。
我们将继续进行这项测试,看看是否还有其他副作用。
泰和长荣