首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次重新启动后,datadir的所有权都会重置为mysql:mysql

每次重新启动后,datadir的所有权都会重置为mysql:mysql
EN

Stack Overflow用户
提问于 2021-04-10 09:47:52
回答 1查看 119关注 0票数 2

我在Manjaro 5.10.23-1上使用MariaDB 10.5.9-1。

我使用以下命令初始化mariadb数据库目录:

代码语言:javascript
复制
$ sudo mariadb-install-db --user=shaouai --basedir=/usr --datadir=/var/lib/mysql

数据目录初始化后,/var/lib/mysql的权限和所有权

代码语言:javascript
复制
$ 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文件驻留在其中,它具有权限和所有权:

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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和我的完全一样。

Heresystemctl cat mariadb.service的完整输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-10 10:14:01

我不确定您为什么要更改用户。这可能不是一个好主意。但假设有一个很好的理由,下面解释了你的情况:

看起来mysqld_safe可能已经更改了权限。如果以这种方式开始测试,请将--user=shaouai添加到参数中。

允许systemd以shaouai用户身份缺省启动

systemctl edit mariadb.service

添加:

代码语言:javascript
复制
[Service]
User=shaouai
Group=shaouai

然后:

代码语言:javascript
复制
chown -R shaouai: /var/lib/mysql /run/mysqld/

然后是systemctl restart mariadb.service

这将以此用户而不是默认的mysql用户身份启动服务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67030085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档