docker - docker phpmyadmin 和 nginx 无法通过 phpmyadmin mysqli_real_connect() 登录到 db
问题描述
我正在尝试将 docker 用于我的项目,此时我正在尝试配置 Mysql 和 Phpmyadmin。我使用了以下配置,但是当我尝试登录 php myadmin 时,它给了我错误:请看这张图片:
我阅读了许多类似的主题,但我仍然无法解决它.. 我该如何解决这个问题?
这是我的 docker-compose 文件:
version: "3"
services:
db:
image: mariadb
container_name: mariadb
environment:
- MYSQL_DATABASE=academy
- MYSQL_USER=root
- MYSQL_PASSWORD=root
- MYSQL_ROOT_PASSWORD=root
volumes:
- ./db:/var/lib/mysql
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpMyAdmin
restart: always
environment:
- "PMA_HOST=mariadb"
- "PMA_PORT=3306"
- "PMA_ABSOLUTE_URI=http://phpmyadmin.your.domain"
ports:
- 8181:80
links:
# for mysql container
- "db:db"
volumes:
- "./phpmyadmin/sessions:/sessions"
web:
build: ./DDGN
container_name: gunicorn
command: gunicorn -c gunicorn.conf DDGN.wsgi
volumes:
- ./DDGN:/DDGN
ports:
- "8000:8000"
nginx:
build: "./nginx"
container_name: nginx
depends_on:
- web
command: nginx -g 'daemon off;'
ports:
- "80:80"
volumes:
- ./DDGN/static:/var/www/static/
- ./DDGN/media:/var/www/media
external_links:
- mariadb:mariadb
- phpmyadmin:phpmyadmin
这是我的 ngnix.conf 文件:
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
client_max_body_size 1024M;
server {
listen 80;
charset utf-8;
server_name django.com;
access_log /dev/stdout;
error_log /dev/stdout info;
location /media/ {
alias /var/www/media/;
}
location /static/ {
alias /var/www/static/;
}
location /pma {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://phpmyadmin/; #! phpmyadmin is the docker host !
proxy_read_timeout 90;
}
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
更新*额外信息:
我有这个日志:
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Using Linux native AIO
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Mutexesand rw_locks use GCC atomic builtins
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Uses event mutexes
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Number of pools: 1
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Using SSE2 crc32 instructions
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: Completed initialization of buffer pool
mariadb | 2019-01-27 19:10:58 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mariadb | 2019-01-27 19:10:58 0 [ERROR] InnoDB: Invalid flags 0x4800 in ./ibdata1
mariadb | 2019-01-27 19:10:58 0 [ERROR] InnoDB: Plugininitialization aborted with error Data structure corruption
mariadb | 2019-01-27 19:10:59 0 [Note] InnoDB: Starting shutdown...
mariadb | 2019-01-27 19:10:59 0 [ERROR] Plugin 'InnoDB' init function returned error.
mariadb | 2019-01-27 19:10:59 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
mariadb | 2019-01-27 19:10:59 0 [Note] Plugin 'FEEDBACK' is disabled.
mariadb | 2019-01-27 19:10:59 0 [ERROR] Could not openmysql.plugin table. Some plugins may be not loaded
mariadb | 2019-01-27 19:10:59 0 [ERROR] Unknown/unsupported storage engine: InnoDB
mariadb | 2019-01-27 19:10:59 0 [ERROR] Aborting
mariadb |
mariadb exited with code 1
解决方案
遇到此类错误时,最好先检查日志。
$ docker-compose logs -f
...
mariadb | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
此错误是因为root
已在 MariaDB 映像中创建了用户。要解决此问题,请删除MYSQL_USER
和MYSQL_PASSWORD
环境变量。就够MYSQL_ROOT_PASSWORD
了。
environment:
- MYSQL_DATABASE=academy
- MYSQL_ROOT_PASSWORD=root
推荐阅读
- sql - SQL/BigQuery:如何避免对一个组的多个非连续成员进行分组?
- kotlin - kotlin 中两种泛型类型的总和
- javascript - 反应:样式被意外导入错误的模块
- angular - ngFor 不显示数据 Ionic 4
- javascript - 用换行符匹配段落正则表达式
- android - 交叉编译到原生android
- flutter - 在颤振应用程序中显示时动画 gif 模糊
- python - 发送到 pyvirtualcam 的网络摄像头输入为蓝色(使用 pyvirtualcam 和 opencv)
- python - 迭代 DNS 查找
- sql - 我有一列 starttimeGMT 包含格式为 2021-03-31T14:30:27+00:00 的日期。我需要在 sql 中提取 14:30:27 部分。我怎样才能得到它