我在Manjaro 5.10.23-1上使用MariaDB 10.5.9-1。
我使用以下命令初始化mariadb数据库目录:
$ sudo mariadb-install-db --user=shaouai --basedir=/usr --datadir=/var/lib/mysql数据目录初始化后,/var/lib/mysql的权限和所有权
$ ls -ld /var/lib/mysql
drwx------ 5 shaouai root 4096 Apr 10 00:08 mysql
$ ls -lh /var/lib/mysql
total 109M
-rw-rw---- 1 shaouai shaouai 24K Apr 10 00:08 aria_log.00000001
-rw-rw---- 1 shaouai shaouai 52 Apr 10 00:08 aria_log_control
-rw-rw---- 1 shaouai shaouai 972 Apr 10 00:08 ib_buffer_pool
-rw-rw---- 1 shaouai shaouai 12M Apr 10 00:08 ibdata1
-rw-rw---- 1 shaouai shaouai 96M Apr 10 00:08 ib_logfile0
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 mysql
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 performance_schema
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 test还有另一个目录/run/mysqld,当服务器启动并运行时,默认情况下mysqld.sock文件驻留在其中,它具有权限和所有权:
$ ls -ld /run/mysqld/
drwxr-xr-x 2 shaouai shaouai 60 Apr 10 08:31 /run/mysqld/我不知道/run/mysqld是什么时候创建的,可能是服务器第一次成功启动的时候。
mysqld_safe --datadir=/var/lib/mysql可以成功启动服务器。
但问题是,每次重新启动后,/var/lib/mysql和/run/mysqld的权限和所有权都被重置为mysql:mysql:
$ ls -ld /var/lib/mysql
drwx------ 5 mysql mysql 4096 Apr 10 00:08 mysql
$ ls -lh /var/lib/mysql
total 109M
-rw-rw---- 1 shaouai shaouai 24K Apr 10 00:08 aria_log.00000001
-rw-rw---- 1 shaouai shaouai 52 Apr 10 00:08 aria_log_control
-rw-rw---- 1 shaouai shaouai 972 Apr 10 00:08 ib_buffer_pool
-rw-rw---- 1 shaouai shaouai 12M Apr 10 00:08 ibdata1
-rw-rw---- 1 shaouai shaouai 96M Apr 10 00:08 ib_logfile0
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 mysql
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 performance_schema
drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 test
$ ls -ld /run/mysqld/
drwxr-xr-x 2 mysql mysql 60 Apr 10 08:31 /run/mysqld/因此,由于各种“权限被拒绝”,MariaDB服务器无法启动。
有一个question和我的完全一样。
Here是systemctl cat mariadb.service的完整输出。
发布于 2021-04-10 10:14:01
我不确定您为什么要更改用户。这可能不是一个好主意。但假设有一个很好的理由,下面解释了你的情况:
看起来mysqld_safe可能已经更改了权限。如果以这种方式开始测试,请将--user=shaouai添加到参数中。
允许systemd以shaouai用户身份缺省启动
systemctl edit mariadb.service
添加:
[Service]
User=shaouai
Group=shaouai然后:
chown -R shaouai: /var/lib/mysql /run/mysqld/然后是systemctl restart mariadb.service。
这将以此用户而不是默认的mysql用户身份启动服务。
https://stackoverflow.com/questions/67030085
复制相似问题