我们知道,不建议使用 root 权限运行 mysql,因为这会导致使用 UDF 提升权限。我正在尝试设置一台机器来演示这一点,我想以 root 用户身份运行 mysqld。
MySQL UDF 漏洞利用了解更多信息。
我正在运行 ubuntu 21.04 和 mysql-server
mysql 版本:
mysql Ver 8.0.25-0ubuntu0.21.04.1 for Linux on x86_64 ((Ubuntu))
将文件所有权更改为 root
chown -R root /var/lib/mysql
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
user = root
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
datadir = /var/lib/mysql
我收到错误
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2021-05-25 08:29:56 PDT; 23s ago
Process: 2413 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Process: 2421 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Main PID: 2421 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Error: 13 (Permission denied)
但是,如果我更改文件权限/var/lib/mysql回到mysql用户服务启动。请告诉我如何以 root 身份运行它的解决方案。如果我做错了什么,请提出明确的步骤。
参考:
答案1
服务默认以服务文件中指定的用户mysqld
身份运行mysql
。没有理由以 root 身份运行它,因为这样做不会提供以用户身份运行时不存在的任何内容mysql
。PostgreSQL 和 MongoDB 也以各自的用户身份运行,而不是以 root 身份运行。
没有理由去修复没有损坏的东西。