Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

710
Vistas
El contenedor acoplable MySql no se inicia cuando se usa un recurso compartido de red para el directorio de datos

Estoy ejecutando Docker en Ubuntu e intento crear y ejecutar un contenedor MySql. Quiero usar un recurso compartido de red montado para el directorio de datos. Estoy probando el siguiente comando de ejecución de la ventana acoplable, pero tengo problemas con los permisos. ¿Cómo puedo solucionar esto?

root@jarvis:/mnt/wayne/mysql-data$ sudo docker run -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -v /mnt/wayne/mysql:/var/lib/mysql/ --name mysqlserver mysql/ servidor mysql

 [Entrypoint] MySQL Docker Image 8.0.20-1.1.16 [Entrypoint] Initializing database 2020-06-08T21:43:25.253898Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.20) initializing of server in progress as process 22 2020-06-08T21:43:25.281460Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-06-08T21:43:27.815075Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted) 2020-06-08T21:43:29.851875Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem 2020-06-08T21:43:29.852970Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. 2020-06-08T21:43:29.854806Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-06-08T21:43:31.947298Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20) MySQL Community Server - GPL.
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto no es exactamente con MySQL, pero espero que les pueda dar una idea, básicamente uso esto para probar contra una base de datos MySQL desde mi entorno local, para esto uso docker-compose y MariaDB , configuro el "data-dir" como un volumen para que pueda detener/iniciar el contenedor acoplable sin la necesidad de "sembrar" cada vez que la base de datos.

Este es el contenido del archivo /your/path/docker-compose.yml :

 --- version: '3' services: mariadb: image: mariadb:10.4.13 container_name: mariadb restart: always ports: - 13306:3306 environment: MYSQL_DATABASE: world MYSQL_ROOT_PASSWORD: test command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - ${PWD}/mariadb/db/:/var/lib/mysql

En el mismo directorio, tengo el directorio de volumen /your/path/mariadb/db

Luego, para abrir el contenedor que uso:

 $ docker-compose up

Desde docker-compose.yml puede ver que uso el puerto 13306 , por lo tanto, para probar/conectar, uso:

 $ mysql -h 127.0.0.1 -P13306 -uroot -p

Todos los datos (bases de datos) estarán en /your/path/mariadb/db

Si te encuentras con el mismo problema de "permisos":

 mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)

Intente cambiar los permisos de su volumen/punto de montaje, por ejemplo:

 chmod -R 777 /your/volume/mount_point
over 4 years ago · Santiago Trujillo Denunciar

0

Si usa CIF para el montaje en red, significa que el servidor remoto es Windows, ¿verdad? Mi respuesta se basa en esta suposición.

La última imagen de mysql docker tiene un usuario llamado mysql y su uid=27,gid=27 Verifique esto montando una carpeta vacía como data_dir. Verá que los archivos creados por el contenedor mysql tienen usuario y grupo como 27. Por lo tanto, el contenedor mysql espera archivos con uid/gid (ID de usuario propietario e ID de grupo propietario) como 27 en su data_dir. Pero los archivos que montó desde el recurso compartido de Windows tienen uid/gid que pertenece al usuario que ejecuta el comando de montaje en ubuntu. Este es el comportamiento predeterminado del comando de montaje.

Para resolver esto, debe pasar los parámetros "uid=27,gid=27" al comando de montaje de Linux.

Por ejemplo

sudo mount -t cifs -o nombreusuario=nombre-usuario-windows,uid=27,gid=27 //WIN_SHARE_IP/ /mnt/wayne

Puedes mirar aquí para más detalles

Debo decir que es poco probable que ejecute mysql en un recurso compartido de red. No funcionará bien.

over 4 years ago · Santiago Trujillo Denunciar

0

bien, probé esto y google también, lo que encontré es

https://github.com/docker-library/mysql/issues/302#issuecomment-308745834

Entonces, básicamente, si está usando mysql:5.7 , actualice a mysql:5.7.16 .

Y si esto no ayuda, entonces tengo una solución más.

Básicamente, el problema es que está compartiendo el directorio con el contenedor -v /mnt/wayne/mysql:/var/lib/mysql/ pero ubuntu no está dando permiso para acceder al directorio /mnt/wayne/mysql . así que otorgue permiso de administrador a esta ubicación o puede crear un chown y chmode de usuario docker.

Básicamente, dé permiso al directorio de la máquina host. para que el contenedor docker pueda acceder a él.

y una cosa más también da permiso al directorio del contenedor docker, que se muestra en su error

The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.

Cree un usuario en un contenedor docker que tenga permisos chown y chmod para el directorio /var/lib/mysql/ .

si está utilizando dockerfile para crear un contenedor mysql, use estas 2 líneas siguientes en él

 FROM mysql:5.7.16 WORKDIR /app RUN chown -R admin:admin /app RUN chmod 755 /app USER admin CMD ["Your command"]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda