我想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。
因此,为了以mysqld
root 身份运行,您需要从 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