docker install mysql error de inicio mysql-bin.index no encontrado (Errcode: 13-Permiso denegado)

Mensaje de error

Similar a la siguiente situación:

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

Condiciones desencadenantes

La situación en la que hay un problema: el binlog de mysql está habilitado. El
contenido de mi docker-compose es el siguiente:

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

Para habilitar binlog, mi operación es modificar el archivo de configuración my.cnf, agregar las últimas tres líneas del siguiente archivo a [mysqld] e informar este problema después de reiniciar

[mysqld]
lower_case_table_names=1

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

análisis del problema

Al ver la primera línea del error, Archivo './ mysql-bin.index' no encontrado (Errcode: 13-Permiso denegado), sé que el usuario de mysql no tiene permisos de escritura para todos los archivos en el directorio de la base de datos. La solución es
chown mysql:mysql -R /var/lib/mysql
Pero ahora que inicio MySQL a través de la ventana acoplable, ya no puedo controlar este problema.

Solución

Sabiendo el motivo, la solución que pensé fue no agregar esas tres líneas a my.cnf cuando se inició por primera vez, y solo conservar el siguiente contenido

[mysqld]
lower_case_table_names=1

Luego, docker-compose start mysqlrealice los siguientes tres pasos después del inicio

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"

Después de escribir de esta manera, docker-compose restart mysqlno se informará ningún error durante la ejecución . En este momento, la consulta show variables like 'log_bin%', binlog se ha habilitado normalmente
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/huangge1199/article/details/110849489
Recomendado
Clasificación