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

310
Vistas
MYSQL_ROOT_PASSWORD está configurado pero obtiene "Acceso denegado para el usuario 'root' @ 'localhost' (con contraseña: SÍ)" en el contenedor docker

Tengo un archivo docker-compose y un Dockerfile. MySQL está instalado correctamente. He configurado MYSQL_ROOT_PASSWORD . Pero al intentar acceder a mysql db, aparece el error: Acceso denegado. He leído los otros hilos de este sitio, pero no pude obtener tanta ayuda. :(

Aquí está mi archivo docker-compose:

 version: '3' volumes: db_data: {} services: db: build: context: . dockerfile: ./db/Dockerfile args: - database=iTel - password=123 image: db_image volumes: - db_data:/var/lib/mysql ports: - "3306:3306"

y Dockerfile:

 FROM mysql:5.7.15 ARG database ARG password RUN echo ${database} RUN echo ${password} MAINTAINER me ENV MYSQL_DATABASE=${database} \ MYSQL_ROOT_PASSWORD=${password} ADD ./db/database100.sql /docker-entrypoint-initdb.d EXPOSE 3306

Aquí están los registros para construir:

 docker-compose up -d Building db Step 1/9 : FROM mysql:5.7.15 5.7.15: Pulling from library/mysql 6a5a5368e0c2: Pull complete 0689904e86f0: Pull complete 486087a8071d: Pull complete 3eff318f6785: Pull complete 3df41d8a4cfb: Pull complete 1b4a00485931: Pull complete 0bab0b2c2630: Pull complete 264fc9ce512d: Pull complete e0181dcdbbe8: Pull complete 53b082fa47c7: Pull complete e5cf4fe00c4c: Pull complete Digest: sha256:966490bda4576655dc940923c4883db68cca0b3607920be5efff7514e0379aa7 Status: Downloaded newer image for mysql:5.7.15 ---> 18f13d72f7f0 Step 2/9 : ARG database ---> Running in 62819f9fc38b Removing intermediate container 62819f9fc38b ---> 863fd3212046 Step 3/9 : ARG password ---> Running in ea9d36c1a954 Removing intermediate container ea9d36c1a954 ---> 056100b1d5eb Step 4/9 : RUN echo ${database} ---> Running in 941bd2f4fc58 iTel Removing intermediate container 941bd2f4fc58 ---> 7b2b48e7bd8c Step 5/9 : RUN echo ${password} ---> Running in 9cb80396bb62 123 Removing intermediate container 9cb80396bb62 ---> 155d184c78ba Step 6/9 : MAINTAINER me ---> Running in 8e3b3b53ce7b Removing intermediate container 8e3b3b53ce7b ---> 9a7617a24800 Step 7/9 : ENV MYSQL_DATABASE=${database} MYSQL_ROOT_PASSWORD=${password} ---> Running in e483e65caf55 Removing intermediate container e483e65caf55 ---> acf8ac829607 Step 8/9 : ADD ./db/database100.sql /docker-entrypoint-initdb.d ---> 42d992439f98 Step 9/9 : EXPOSE 3306 ---> Running in 4e138502c6f9 Removing intermediate container 4e138502c6f9 ---> a0818deda593 Successfully built a0818deda593 Successfully tagged db_image:latest WARNING: Image for service db was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. Creating reve_db_1 ... done

para ver los contenedores:

 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49419cb9980a db_image "docker-entrypoint.s…" 10 seconds ago Up 8 seconds 0.0.0.0:3306->3306/tcp reve_db_1

Ese es el registro para este contenedor:

 docker logs 49419cb9980a 2020-01-21T07:53:13.050129Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2020-01-21T07:53:13.051767Z 0 [Note] mysqld (mysqld 5.7.15) starting as process 1 ... 2020-01-21T07:53:13.054945Z 0 [Note] InnoDB: PUNCH HOLE support available 2020-01-21T07:53:13.055053Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2020-01-21T07:53:13.055103Z 0 [Note] InnoDB: Uses event mutexes 2020-01-21T07:53:13.055179Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier 2020-01-21T07:53:13.055226Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3 2020-01-21T07:53:13.055268Z 0 [Note] InnoDB: Using Linux native AIO 2020-01-21T07:53:13.055608Z 0 [Note] InnoDB: Number of pools: 1 2020-01-21T07:53:13.055791Z 0 [Note] InnoDB: Using CPU crc32 instructions 2020-01-21T07:53:13.061164Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2020-01-21T07:53:13.072998Z 0 [Note] InnoDB: Completed initialization of buffer pool 2020-01-21T07:53:13.075325Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2020-01-21T07:53:13.101337Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2020-01-21T07:53:13.142134Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2020-01-21T07:53:13.142356Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2020-01-21T07:53:13.184613Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. 2020-01-21T07:53:13.185628Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. 2020-01-21T07:53:13.185733Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. 2020-01-21T07:53:13.186108Z 0 [Note] InnoDB: Waiting for purge to start 2020-01-21T07:53:13.236391Z 0 [Note] InnoDB: 5.7.15 started; log sequence number 12146163 2020-01-21T07:53:13.236828Z 0 [Note] Plugin 'FEDERATED' is disabled. 2020-01-21T07:53:13.237186Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool 2020-01-21T07:53:13.252074Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2020-01-21T07:53:13.252900Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 2020-01-21T07:53:13.253023Z 0 [Note] IPv6 is available. 2020-01-21T07:53:13.253076Z 0 [Note] - '::' resolves to '::'; 2020-01-21T07:53:13.253184Z 0 [Note] Server socket created on IP: '::'. 2020-01-21T07:53:13.269950Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode. 2020-01-21T07:53:13.270581Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode. 2020-01-21T07:53:13.277379Z 0 [Note] InnoDB: Buffer pool(s) load completed at 200121 7:53:13 2020-01-21T07:53:13.295467Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode. 2020-01-21T07:53:13.367019Z 0 [Note] Event Scheduler: Loaded 0 events 2020-01-21T07:53:13.368851Z 0 [Note] mysqld: ready for connections. Version: '5.7.15' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

Ahora ingresado en el contenedor:

 docker exec -it 49419cb9980a bash root@49419cb9980a:/#

He comprobado si MYSQL_ROOT_PASSWORD está configurado correctamente (en el contenedor):

 root@49419cb9980a:/# echo $MYSQL_ROOT_PASSWORD 123

Luego intenté iniciar sesión en mysql:

 root@49419cb9980a:/# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Mi pregunta es, ¿cómo solucionar este problema? ¿Por qué no puedo acceder a mysql? También probé sin opción de contraseña. Eso me dio este error:

 mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Esta es la estructura de mi proyecto:

 tree . ├── db │  ├── Dockerfile │  └── database100.sql └── docker-compose.yml 1 directory, 3 files
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Dando por sentado que ha mostrado todo su registro de inicio, parece que inició su contenedor mysql contra un volumen db_data preexistente que ya contenía un sistema de archivos de base de datos mysql.

En este caso, no se inicializará absolutamente nada en el inicio del contenedor y las variables de entorno son inútiles. Citando la documentación oficial de la imagen en la sección "Variables de entorno":

Tenga en cuenta que ninguna de las variables a continuación tendrá ningún efecto si inicia el contenedor con un directorio de datos que ya contiene una base de datos: cualquier base de datos preexistente siempre permanecerá intacta al iniciar el contenedor.

Si desea que su instancia se inicialice, debe comenzar desde cero. Es bastante fácil hacerlo con docker compose cuando se usa un volumen con nombre como en su caso. Advertencia: esto eliminará permanentemente el contenido de su volumen db_data , eliminando cualquier base de datos anterior que haya tenido allí . Cree una copia de seguridad primero si necesita conservar el contenido.

 docker-compose down -v docker-compose up -d

Si alguna vez convierte a un montaje de enlace, tendrá que eliminar todo su contenido usted mismo (es decir, rm -rf /path/to/bind/mount/* )

Nota: muchas otras imágenes oficiales de db docker (postgres, mongo....) funcionan de manera similar.

over 4 years ago · Santiago Trujillo Denunciar

0

Encontré una mejor manera, no es necesario eliminar todo el volumen, etc.

1: cambie el archivo de composición de su ventana acoplable para mantener vivo el contenedor mysql de esta manera; bajo el servicio mysql;

 command: tail -F anything

después de esta operación, puede deshacer esto, no se preocupe con el valor anterior.

2 - luego, detenga el contenedor mysql y ejecute con

 docker-compose up --build --force-recreate YOUR_SERVICE_NAME

esto no elimina su volumen.

3 - ingrese al contenedor mysql;

 docker exec -it YOUR_SERVICE_NAME bash

finalmente siga cualquier guía de restablecimiento de contraseña de mysql como esta;

https://www.a2hosting.com/kb/developer-corner/mysql/reset-mysql-root-password

over 4 years ago · Santiago Trujillo Denunciar

0

Tengo el mismo problema, y después de eliminar el volumen, el problema sigue ahí, luego encuentro esta solución:

¡POR FAVOR RECUERDE ESTABLECER UNA CONTRASEÑA PARA EL USUARIO root de MySQL! Para hacerlo, inicie el servidor, luego emita los siguientes comandos:

/usr/local/mysql/bin/mysqladmin -u root contraseña 'nueva-contraseña' /usr/local/mysql/bin/mysqladmin -u root -h contraseña 'nueva-contraseña'

Alternativamente, puede ejecutar: /usr/local/mysql/bin/mysql_secure_installation

over 4 years ago · Santiago Trujillo Denunciar

0

Si está en un servidor de desarrollo, simplemente puede eliminar todos los volúmenes locales no utilizados. Los volúmenes locales no utilizados son aquellos a los que no hace referencia ningún contenedor:

 docker volume prune
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