docker install mysql起動エラーmysql-bin.indexが見つかりません(エラーコード:13-アクセスが拒否されました)

エラーメッセージ

次の状況に似ています。

/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13 - Permission denied)
[ERROR] Aborting
[Note] Binlog end
[Note] /mysql/bin/mysqld: Shutdown complete

トリガー条件

問題がある状況:mysqlのbinlogが有効になっています。docker
-compose内容次のとおりです。

version: '3'
services:
    mysql:
        container_name: mysql
        image: mysql:5.7
        environment:
            - MYSQL_ROOT_PASSWORD=mysql的root密码
        volumes: 
            - ./conf:/etc/mysql
            - ./logs:/var/log/mysql
            - ./data:/var/lib/mysql
        ports: 
            - 30030:3306
        restart: always

binlogを有効にするための私の操作は、構成ファイルmy.cnfを変更し、次のファイルの最後の3行を[mysqld]に追加し、再起動後にこの問題を報告することです。

[mysqld]
lower_case_table_names=1

log-bin=/var/lib/mysql/mysql-bin
binlog-format=ROW
server_id=123456

問題分析

エラーの最初の行であるファイル './mysql-bin.index'が見つかりません(エラーコード:13-アクセス許可が拒否されました)を見ると、mysqlユーザーがデータベースディレクトリ内のすべてのファイルに対する書き込みアクセス許可を持っていないことがわかります。解決策はですが
chown mysql:mysql -R /var/lib/mysql
、今dockerを介してMySQLを起動しているため、この問題を制御できなくなりました。

解決

理由を知って、私が考えた解決策は、my.cnfを初めて起動したときに、これらの3行を追加せず、次のコンテンツのみを保持することでした。

[mysqld]
lower_case_table_names=1

次にdocker-compose start mysql、起動後に次の3つの手順を実行します

docker exec mysql bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/my.cnf"
docker exec mysql bash -c "echo 'binlog-format=ROW' >> /etc/mysql/my.cnf"
docker exec mysql bash -c "echo 'server_id=123456' >> /etc/mysql/my.cnf"

このように書き込んだ後、実行中にdocker-compose restart mysqlエラーは報告さません。この時点で、クエリshow variables like 'log_bin%'、binlogは通常有効になっています。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/huangge1199/article/details/110849489