使用 root 权限运行 mysqld

使用 root 权限运行 mysqld

我想mysqld以 root 用户身份运行。

我正在运行 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 服务时:

sudo service mysql start

我收到一个错误:

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]:https://dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.html

答案1

答案就在您提供的链接中

在 Linux 上,对于使用 MySQL 存储库或 RPM 包执行的安装,MySQL 服务器 mysqld 应由本地 mysql 操作系统用户启动。MySQL 存储库中包含的初始化脚本不支持由其他操作系统用户启动。

在 Unix 上(或使用 tar.gz 包执行安装的 Linux 上),任何用户都可以启动和运行 MySQL 服务器 mysqld。

因此,为了以mysqldroot 身份运行,您需要从 tar.gz 包安装它。然后您已经尝试过的步骤应该足够了。

https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/binary-installation.html有关于如何安装 mysql 的说明,以及https://dev.mysql.com/downloads/mysql/有下载链接。

我应该指出的是,一般来说不是以 root 身份运行是个好主意mysqld。听起来你已经意识到了这一点,并正在尝试探索可能由此产生的漏洞,但其他查看者可能没有那么有安全意识。

答案2

通常不建议以 root 身份运行 mysql!!

但是这是您的请求,您的错误是Permission denied,这意味着您正在尝试以用户/组 mysql 身份启动该进程。由于您使用 systemd 启动 mysql 服务,请检查 systemd 服务配置:

/lib/systemd/system/mysql.service

将用户和组更改为root:

[Service]
Type=forking
User=mysql
Group=mysql

更改后不要忘记重新加载 systemd 守护程序:

systemctl daemon-reload

相关内容