mariadb 需要 mysql:root 来启动,而不是用户:组的 mysql:mysql - RHEL 8.9 mariadb 10.5.23

问题描述 投票:0回答:1

修补并重新启动 mariadb 后,我们需要执行以下命令来启动 mariadb

chown -R mysql:root /var/lib/mysql

否则我们会得到以下错误

May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [Note] InnoDB: 10.5.23 started; log sequence number 114858617868828; transaction id 6884951201
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [Note] InnoDB: Loading buffer pool(s) from /data/mysql/ib_buffer_pool
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [Note] Plugin 'FEEDBACK' is disabled.
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [Note] Server socket created on IP: '0.0.0.0'.
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [ERROR] Can't start server : Bind on unix socket: Permission denied
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
May 21 00:43:07 sprcellapp mariadbd[104253]: 2024-05-21  0:43:07 0 [ERROR] Aborting
May 21 00:43:08 sprcellapp systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
May 21 00:43:08 sprcellapp systemd[1]: mariadb.service: Failed with result 'exit-code'.
May 21 00:43:08 sprcellapp systemd[1]: Failed to start MariaDB 10.5.23 database server.

SELinux 处于宽容模式,我们在系统日志消息中没有看到 avc:denied

终于 /var/lib/mysql 拥有了所有权和权限:

“drwxr-xr-x.5 mysql mysql 231 5月21日00:51 /var/lib/mysql/”

更改后,mariadb 启动需要这样。

drwxr-xr-x.  5 mysql root        231 May 21 00:51 .
drwxr-xr-x. 64 root  root       4096 Feb  3 16:51 ..
-rw-rw----.  1 mysql root      24576 Feb  4 11:17 aria_log.00000001
-rw-rw----.  1 mysql root         52 Feb  4 11:17 aria_log_control
-rw-rw----.  1 mysql root        976 Feb  4 11:17 ib_buffer_pool
-rw-rw----.  1 mysql root   12582912 Feb  4 11:17 ibdata1
-rw-rw----.  1 mysql root  100663296 Feb  4 11:17 ib_logfile0
-rw-rw----.  1 mysql root          0 Jan 31 14:51 multi-master.info
drwx------.  2 mysql root       4096 Jan 31 14:25 mysql
srwxrwxrwx.  1 mysql mysql         0 May 21 00:51 mysql.sock
-rw-r--r--.  1 mysql root         15 Jan 31 14:25 mysql_upgrade_info
drwx------.  2 mysql root         20 Jan 31 14:25 performance_schema
drwx------.  2 mysql root         20 Jan 31 14:25 test

注意 mariadb 启动后创建的 mysql.sock 文件为 mysql:mysql。 为什么目录组所有者必须是root?

mariadb rhel8
1个回答
0
投票

所以我们发现了问题。问题是 mysql 用户(来自 LDAP)已经定义并且 UID 为 260,但是当 mysql 安装在这台新机器上时,它生成了一个新的 UID 和 GID,与 /etc/passwd 和 etc/ 不匹配分别为 269 人和 979 人。这就是为什么将 /var/lib/mysql 的 mysql:root 权限更改为解决了问题,但每次重新启动时都必须执行此操作,因为 /var/lib/mysql 会恢复为 mysql:mysql。因此,为了解决这个问题,我们只需将 UID 和 GID 更改为与 ldap 用户匹配的 260/260。现在重新启动后无需更改任何内容。

过程是

  1. 关闭 MariaDB

sudo systemctl 停止 mariadb

  1. 检查260是否有任何进程正在运行,即mysql ps-ef | grep mysql ps-ef | grep 260

如果没有,好的,如果不停止

  1. 备份 /etc 文件 sudo cp -p /etc/passwd /etc/passwd.bkp sudo cp -p /etc/group /etc/group.bkp

  2. 先验证id id mysql

  3. 先更改groupid sudo groupmod -g 260 mysql

  4. 更改用户ID sudo usermod -u 260 -g 260 mysql

注意,如果没有返回任何内容来更新,则手动编辑 /etc/passwd 文件,因为它可能使用 LDAP 并且在我们的示例中仍设置为 269,因此更新为 260

  1. 验证更改 id mysql

可选

8a。 sudo chown -R mysql:mysql /var/lib/mysql 8b. sudo systemctl 启动 mariadb 这将测试以确保重新启动后 maraidb 启动。

==

  1. 重启服务器

现在重启后 /var/lib/mysql 是 mysql:mysql 并且套接字文件可以放置在这个目录中

检查 /var/log/messages 是否有错误

© www.soinside.com 2019 - 2024. All rights reserved.