datadir을 변경한 후 mysql/mariaDB 서비스를 시작합니다.

datadir을 변경한 후 mysql/mariaDB 서비스를 시작합니다.

mariadb 서버를 설치하고 비밀번호로 루트 사용자를 생성했습니다.

sudo apt install mariadb-server
sudo mysql_secure_installation

Rasperri Pi를 사용하고 있으므로 데이터베이스를 외장 하드 드라이브로 바꾸고 싶습니다. 이를 위해 나는이 튜토리얼

cnf 파일(모두 /etc/mysql/mariadb.conf/에 있고 debian.cnf 파일은 /etc/mysql에 있음)을 변경한 후 mysql 서비스 시작에 실패했습니다.

 $ sudo service mysql start
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xe" for details.

로그에는 테스트 파일을 생성할 수 없다고 표시됩니다.

$systemctl status mariadb.service
Okt 30 22:56:31 raspberrypitouch systemd[1]: Starting MariaDB 10.3.31 database server...
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [Note] /usr/sbin/mysqld (mysqld 10.3.31-MariaDB-0+deb10u1) starting as process 4694 ...
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [Warning] Can't create test file /media/pi/DBDRIVE/MariaDB/raspberrypitouch.lower-test
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: [101B blob data]
Okt 30 22:56:31 raspberrypitouch mysqld[4694]: 2021-10-30 22:56:31 0 [ERROR] Aborting
Okt 30 22:56:31 raspberrypitouch systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Okt 30 22:56:31 raspberrypitouch systemd[1]: mariadb.service: Failed with result 'exit-code'.
Okt 30 22:56:31 raspberrypitouch systemd[1]: Failed to start MariaDB 10.3.31 database server.

많은 검색 끝에 다음과 같은 가능한 원인을 찾아 제거했습니다.

  1. 장비그리고SELinux새 디렉토리에 대한 액세스 차단 -> 설치되지 않음

    getenforce
    -bash: getenforce: command not found
    

    그리고

    aa-status
    
    -bash: aa-status: command not found
    
  2. 오식

    모든 경로를 복사했습니다. 오타는 이틀 동안 바쁘게 만드는 아주 나쁜 이유가 될 것입니다

  3. 잃어버린 권한

    권한이 올바른지 확인하기 위해 이것을 복사했습니다.cp -R -p /var/lib/mysql/* /media/pi/DBDRIVE/MariaDB/

    상위 폴더

    /media/pi/DBDRIVE $ ls -l
    total 20
    drwx------ 2 mysql mysql 16384 Oct 29 12:25 lost+found
    drwxrwxrwx 6 mysql mysql  4096 Oct 30 23:07 MariaDB
    

    db 폴더 자체

    /media/pi/DBDRIVE/MariaDB $ ls -l
    
    total 110632
    
    -rw-rw---- 1 mysql mysql    16384 Oct 30 15:30 aria_log.00000001
    -rw-rw---- 1 mysql mysql       52 Oct 30 15:30 aria_log_control
    -rw-r--r-- 1 root  root         0 Oct 30 13:02 debian-10.3.flag
    -rw-rw---- 1 mysql mysql      976 Oct 30 15:30 ib_buffer_pool
    -rw-rw---- 1 mysql mysql 12582912 Oct 30 15:30 ibdata1
    -rw-rw---- 1 mysql mysql 50331648 Oct 30 15:30 ib_logfile0
    -rw-rw---- 1 mysql mysql 50331648 Oct 30 13:02 ib_logfile1
    -rw-rw---- 1 mysql mysql        0 Oct 30 13:02 multi-master.info
    drwx------ 2 mysql mysql     4096 Oct 30 13:02 mysql
    drwxrwxrwx 2 mysql mysql     4096 Oct 30 17:50 mysqld
    drwx------ 2 mysql mysql     4096 Oct 30 13:02 performance_schema
    drwx------ 2 mysql mysql     4096 Oct 30 15:12 testDB
    

    운전사

    /media/pi/DBDRIVE $ ls -l
    total 20
    drwx------ 2 mysql mysql 16384 Oct 29 12:25 lost+found
    drwxrwxrwx 7 mysql mysql  4096 Oct 30 23:58 MariaDB
    

    PI

    /media/pi $ ls -l
    total 4
    drwxr-xr-x 4 mysql mysql 4096 Oct 30 16:53 DBDRIVE
    

    미디어

    /media $ ls -l
    total 4
    drwxr-x---+ 3 root root 4096 Oct 31 01:42 pi
    
  4. 잘못된 형식 외장 드라이브용

    df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    
    /dev/root      ext4       29G  3.8G   25G  14% /
    devtmpfs       devtmpfs  776M     0  776M   0% /dev
    tmpfs          tmpfs     937M     0  937M   0% /dev/shm
    tmpfs          tmpfs     937M  8.6M  928M   1% /run
    tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
    tmpfs          tmpfs     937M     0  937M   0% /sys/fs/cgroup
    /dev/mmcblk0p1 vfat      253M   49M  204M  20% /boot
    tmpfs          tmpfs     188M  4.0K  188M   1% /run/user/1000
    /dev/sda       ext4      916G  186M  870G   1% /media/pi/DBDRIVE
    
  5. 실수 안에 .cnf 파일

    여기기본적으로 동일한 상황이지만 솔루션이 나에게 적합하지 않았습니다.

올바른 방향으로의 모든 팁을 높이 평가하겠습니다.

왜 서비스를 시작할 수 없나요?

답변1

의견에서 지적한 대로 문제는 를 실행하여 수동으로 재현할 수 있습니다 sudo -u mysql touch /media/pi/DBDRIVE/MariaDB/raspberrypitouch.lower-test. 이로 인해 "권한 거부" 오류가 발생했습니다.

질문은 'MariaDB' 디렉토리가 'mysql' 사용자가 전적으로 소유하고 있음을 나타내므로 문제는 상위 디렉토리 중 하나인 '/media', '/media/pi' 및 '/media/pi/에 있을 가능성이 높습니다. DB드라이브'. 이러한 디렉터리에는 "mysql" 사용자가 "/media/pi/DBDRIVE/MariaDB/" 디렉터리에 액세스할 수 있도록 최소한 실행 권한(모든 사용자에 대해)이 필요합니다.

OP는 /media 디렉토리에 필요한 권한이 없음을 확인하고 이를 추가하여 문제를 해결했습니다.

MariaDB 지식 베이스의 관련 참고 사항:https://mariadb.com/kb/en/what-to-do-if-mariadb-doesnt-start/#cant-create-test-file

관련 정보