Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpMyAdmin未连接到MariaDB,并且MariaDB未在docker组件上设置默认MYSQL\u ROOT\u密码变量_Docker_Phpmyadmin_Docker Compose_Mariadb - Fatal编程技术网

phpMyAdmin未连接到MariaDB,并且MariaDB未在docker组件上设置默认MYSQL\u ROOT\u密码变量

phpMyAdmin未连接到MariaDB,并且MariaDB未在docker组件上设置默认MYSQL\u ROOT\u密码变量,docker,phpmyadmin,docker-compose,mariadb,Docker,Phpmyadmin,Docker Compose,Mariadb,我试图创建一个带有和docker图像的docker compose,但是我遇到了以下问题:MariaDB和phpMyAdmin都没有在文件中使用环境变量,换句话说,MariaDB没有设置MYSQL_ROOT_password变量中描述的默认密码,即使我手动为MariaDB设置了新密码,phpMyAdmin也无法连接到MariaDB 在终端上,当我运行docker compose一次时,MariaDB显示以下输出: dgi_catalog_db | PLEASE REMEMBER TO

我试图创建一个带有和docker图像的
docker compose
,但是我遇到了以下问题:MariaDB和phpMyAdmin都没有在文件中使用环境变量,换句话说,MariaDB没有设置MYSQL_ROOT_password变量中描述的默认密码,即使我手动为MariaDB设置了新密码,phpMyAdmin也无法连接到MariaDB

在终端上,当我运行docker compose一次时,MariaDB显示以下输出:

dgi_catalog_db       | PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
dgi_catalog_db       | To do so, start the server, then issue the following commands:
dgi_catalog_db       | 
dgi_catalog_db       | '/usr/bin/mysqladmin' -u root password 'new-password'
dgi_catalog_db       | '/usr/bin/mysqladmin' -u root -h  password 'new-password'
dgi_catalog_db       | 
dgi_catalog_db       | Alternatively you can run:
dgi_catalog_db       | '/usr/bin/mysql_secure_installation'
[...]
dgi_catalog_db       | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
当我尝试通过phpMyAdmin连接到MariaDB而不设置默认密码时,会显示以下消息:

mysqli_real_connect(): (HY000/2002): Connection refused
然后,我进入容器并手动设置新密码:

$ docker exec -it dgi_catalog_db /bin/bash

# mysqladmin -u root password 'password'
如果我再次尝试通过phpMyAdmin连接,我会再次收到相同的错误:

mysqli_real_connect(): (HY000/2002): Connection refused
然后,我尝试重新启动容器并再次通过phpMyAdmin连接,它们显示以下消息:

  • web界面上的phpMyAdmin:
  • 在码头上:
我已经在互联网上尝试了一些解决方案(例如,这个),但我无法解决这个问题

我正在使用Ubuntu16.04.6 LTS,我在下面发送我的文件

有人能帮我吗?先谢谢你

项目结构

我有一个名为
catalog
的文件夹,其结构如下:

.
├── docker-compose.yml
└── env_files
    ├── db.env
    └── phpmyadmin.env
随后将描述这些文件

docker compose.yml:

version: '3'

services:
  dgi_catalog_db:
    container_name: dgi_catalog_db
    image: mariadb:10.4.11
    restart: always
    volumes:
      - ../data/mysqldata:/var/lib/mysql
    env_file:
      - ./env_files/db.env
    networks:
      - dgi_catalog
    ports:
      - 3311:3306

  dgi_catalog_admin:
    container_name: dgi_catalog_admin
    image: phpmyadmin/phpmyadmin:4.9
    restart: always
    env_file:
      - ./env_files/phpmyadmin.env
    networks:
      - dgi_catalog
    ports:
      - 8099:80

networks:
  dgi_catalog:
    driver: bridge
。/data/mysqldata
卷可以是另一个文件夹

/env\u文件/db.env

MYSQL_ROOT_PASSWORD=password
PMA_HOST=dgi_catalog_db
PMA_ARBITRARY=1
/env_文件/phpmyadmin.env

MYSQL_ROOT_PASSWORD=password
PMA_HOST=dgi_catalog_db
PMA_ARBITRARY=1
编辑1:

version: '3'

services:
  dgi_catalog_db:
    container_name: dgi_catalog_db
    image: mariadb:10.4.11
    restart: always
    volumes:
      - ../data/mysqldata:/var/lib/mysql
    env_file:
      - ./env_files/db.env
    networks:
      - dgi_catalog
    ports:
      - 3311:3306

  dgi_catalog_admin:
    container_name: dgi_catalog_admin
    image: phpmyadmin/phpmyadmin:4.9
    restart: always
    env_file:
      - ./env_files/phpmyadmin.env
    networks:
      - dgi_catalog
    ports:
      - 8099:80

networks:
  dgi_catalog:
    driver: bridge
我还没有找到解决方案,但我相信我已经发现了主要问题:MariaDB需要很长时间来初始化。docker compose初始化20分钟后,MariaDB打印了
mysqld:ready for connections.
,我可以通过phpMyAdmin连接到我的数据库

dgi_catalog_db       | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
dgi_catalog_db       | 2020-01-15 14:06:41 10 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db       | 2020-01-15 14:06:41+00:00 [Note] [Entrypoint]: Stopping temporary server
[...]
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] Reading of all Master_info entries succeeded
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] Added new Master_info '' to hash table
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] mysqld: ready for connections.
dgi_catalog_db       | Version: '10.4.11-MariaDB-1:10.4.11+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] InnoDB: Buffer pool(s) load completed at 200115 14:06:49

关于它,Github上有一个公开的消息。显然,如果我使用
-e MYSQL\u INITDB\u SKIP\u TZINFO=1
变量,MariaDB的初始化速度会更快,但我没有时区信息。

你能分享你的项目结构吗
env_文件
的路径应该相对于
docker compose
文件的位置。我已经在问题中添加了项目的结构。是的,
env_files
文件夹是一个相对路径,它存在于项目的根文件夹中。非常感谢。