Cómo establecer una conexión de base de datos desde wordpress docker

3 minutos de lectura

Avatar de usuario de Klaxx
klaxx

Intento ejecutar una ventana acoplable redactar wordpress usando esta guía: https://docs.docker.com/compose/wordpress/

Este es el archivo yaml como se describe en la guía:

version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
       WORDPRESS_DEBUG: "true"
volumes:
    db_data: {}

Después de ejecutar mi

"docker-compose up -d" 

comando, voy a “http://localhost:8000/” en mi navegador y obtengo la página blanca con “Error al establecer una conexión de base de datos”. De acuerdo con la guía, wordpress debería mostrarme la instalación de 5 minutos ya en este punto. Cuando ejecuto el contenedor con wordpress debug true, este mensaje de error es se muestra entonces:

Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /var/www/html/wp-includes/wp-db.php on line 1612

conexión denegada

ahora uso

docker exec it container_id /bin/bash 

y escriba “mysql -p”. Ahora uso MYSQL_ROOT_PASSWORD del archivo de redacción de la ventana acoplable, pero se me niega el acceso (“Acceso denegado para el usuario ‘root’@’localhost’ (con contraseña: SÍ)”)

No estoy seguro de lo que hice antes, pero en algún momento funcionó y enumeré las bases de datos y mysql.users y la base de datos y el usuario estaban allí.

Así que ni siquiera sé cuál es el problema aquí…

¿Y por qué ya no puedo acceder como root? ¿Alguien sabe qué hacer?

EDITAR: cambié el puerto de nuevo a 3306, probé 3308 solo para ver si eso puede ser un problema de puerto

  • Creo que deberías usar db:3306 no 3308.

    – tgogos

    29 de marzo de 2019 a las 13:52

  • Oye, tgogos, ya lo intenté. Acabo de comprobar si eso no es un problema de puerto.

    – Klaxx

    29 de marzo de 2019 a las 13:54

  • “Acceso denegado para el usuario ‘root’@’localhost’ (con contraseña: SÍ)” significaría que no tiene el privilegio de acceder a través del socker local de Unix… ¿Ha probado “mysql -p -h 127.0.0.1 . ..” ?? Eso mostraría si puede acceder a través de tcp/ip en la máquina local

    – F.Madsen

    29 de marzo de 2019 a las 18:31

Encontré otra publicación y usaron este yaml. Todavía no estoy seguro de por qué esto funciona, pero lo hace.

version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - 8000:80
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data: {}

avatar de usuario de go je jo
ve je jo

Consultar los logs de un servicio. Para comprobar los servicios, haga:

$ docker-compose logs
...
db_1 | 2022-10-21  2:08:08 0 [Note] InnoDB: Buffer pool(s) load completed at 221021  2:08:08
db_1 | 2022-10-21  2:08:08 0 [Note] mysqld: ready for connections.
db_1 | Version: '10.6.4-MariaDB-1:10.6.4+maria~focal'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

Por ejemplo, si tiene un servicio mariadb llamado db y no se imprime de esa manera, es posible que deba esperar a que se imprima.

¿Ha sido útil esta solución?