phpMyAdmin未连接到MariaDB,并且MariaDB未在docker组件上设置默认MYSQL\u ROOT\u密码变量
我试图创建一个带有和docker图像的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 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:
- 在码头上:
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
文件夹是一个相对路径,它存在于项目的根文件夹中。非常感谢。