データディレクトリの変更後にmysql/mariaDBサービスを開始する

データディレクトリの変更後にmysql/mariaDBサービスを開始する

私はmariadbサーバーをインストールし、パスワード付きのルートユーザーを作成しました。

sudo apt install mariadb-server
sudo mysql_secure_installation

私はRasperri Piを使用しているので、DBを外付けハードディスクに交換したい。そのために、このチュートリアル

cnf ファイル (すべて /etc/mysql/mariadb.conf/ の下にあるファイルと、/etc/mysql の下にある debian.cnf ファイル) を変更した後、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. 装甲そしてカーネル新しいディレクトリへのアクセスをブロックしている -> インストールされていない

    getenforce
    -bash: getenforce: command not found
    

    そして

    aa-status
    
    -bash: aa-status: command not found
    
  2. 打ち間違え

    私はすべてのパスをコピーしました。タイプミスは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
    

    円周率

    /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」ユーザーによって所有されていることが示されているため、問題は親ディレクトリの 1 つ (「/media」、「/media/pi」、「/media/pi/DBDRIVE」) にある可能性が最も高いです。これらのディレクトリには、少なくとも実行権限 (すべてのユーザーに対して) が必要であり、これにより「mysql」ユーザーが「/media/pi/DBDRIVE/MariaDB/」ディレクトリにアクセスできるようになります。

OP は、/media ディレクトリに必要な権限が不足していたことを確認しており、権限を追加することで問題は解決しました。

MariaDB ナレッジベースからの関連メモ:https://mariadb.com/kb/en/mariadb が起動しない場合はどうすればいいですか/#テストファイルを作成できません

関連情報