修补并重新启动 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?
所以我们发现了问题。问题是 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。现在重新启动后无需更改任何内容。
过程是
sudo systemctl 停止 mariadb
如果没有,好的,如果不停止
备份 /etc 文件 sudo cp -p /etc/passwd /etc/passwd.bkp sudo cp -p /etc/group /etc/group.bkp
先验证id id mysql
先更改groupid sudo groupmod -g 260 mysql
更改用户ID sudo usermod -u 260 -g 260 mysql
注意,如果没有返回任何内容来更新,则手动编辑 /etc/passwd 文件,因为它可能使用 LDAP 并且在我们的示例中仍设置为 269,因此更新为 260
8a。 sudo chown -R mysql:mysql /var/lib/mysql 8b. sudo systemctl 启动 mariadb 这将测试以确保重新启动后 maraidb 启动。
==
现在重启后 /var/lib/mysql 是 mysql:mysql 并且套接字文件可以放置在这个目录中
检查 /var/log/messages 是否有错误