programing

datadir 소유권은 재부팅 후 매번 mysql:mysql로 리셋됩니다.

yoursource 2022. 10. 22. 13:28
반응형

datadir 소유권은 재부팅 후 매번 mysql:mysql로 리셋됩니다.

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 서버를 시작하지 못했습니다.

저와 완전히 똑같은 질문이 하나 있습니다.

의 전체 출력은 다음과 같습니다.systemctl cat mariadb.service.

왜 사용자를 바꾸셨는지 모르겠습니다.좋은 생각이 아닐 수도 있어요.하지만 그럴 만한 이유가 있다고 가정하면, 당신의 입장을 다음과 같이 설명합니다.

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사용자입니다.

언급URL : https://stackoverflow.com/questions/67030085/ownership-of-datadir-is-reset-to-mysqlmysql-after-every-reboot

반응형