我正在学习使用docker来简化开发过程,但仍然无法访问mysql。
这是我的docker-compose.yaml
:
version: '3.3'
services:
# Database
db:
image: mysql:latest
ports:
- '3306:3306'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: dev1
MYSQL_USER: root
MYSQL_PASSWORD: password
networks:
- wpsite
# Wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: dev1
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:
Wordpress运行顺利,这意味着mysql也必须正常。我在Linux上,尝试通过mysql工作台连接数据库。似乎也可以期待连接,没有架构,因此没有wordpress表。
我也尝试将phpmyadmin添加到docker-compose.yaml
中:
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8080:80'
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
networks:
- wpsite
我想念什么?
答案 0 :(得分:1)
所以我修改了您的docker-compose,做了2个小改动,但我没有遇到任何问题。
我在mysql中为wordpress( userdev1 )创建了一个用户。
根已经在这里,并且对于远程访问可能有一些限制。
通过 phpmyadmin ,我可以使用 userdev1 或 root
登录您要使用 root 帐户进行网络访问,必须设置此变量
MYSQL_ROOT_HOST。
您可以在此页面上找到更多信息( https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/docker-mysql-more-topics.html#docker_var_mysql-root-host)
version: '3.3'
services:
# Database
db:
image: mysql:5.7
ports:
- '3306:3306'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password4root
MYSQL_DATABASE: dev1
MYSQL_USER: userdev1
MYSQL_PASSWORD: password4dev1
networks:
- wpsite
# Wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- '8000:80'
restart: always
volumes: ['./:/var/www/html']
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: userdev1
WORDPRESS_DB_PASSWORD: password4dev1
WORDPRESS_DB_NAME: dev1
networks:
- wpsite
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- '8080:80'
environment:
PMA_HOST: db
networks:
- wpsite
networks:
wpsite:
volumes:
db_data:
** 已更新 **
使用最新版本的mysql docker映像(又名mysql 8.0), 您必须将默认身份验证更改为mysql_native_password才能与旧版mysql客户端兼容
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password