下面的配置在我的本地计算机上运行得很好:
我的
docker-compose.yml
文件:
networks:
mynet:
name: mynet
driver: bridge
services:
mydb:
container_name: mydb
image: mysql:8.4.2
hostname: mydb
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
MYSQL_DATABASE: default_db
networks:
- mynet
volumes:
- ${DATA_VOLUME}:/var/lib/mysql
ports:
- ${EXPOSE_PORT}:3306
myadmin:
container_name: myadmin
image: phpmyadmin/phpmyadmin:5.2.1
hostname: myadmin
depends_on:
- mydb
restart: unless-stopped
environment:
PMA_HOST: mydb
# PMA_PORT: 3306 - I tried with this parameter too
# PMA_ARBITRARY: 1 - I tried with this parameter too
# MYSQL_USERNAME: "root" - I tried with this parameter too
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
networks:
- mynet
ports:
- ${PMA_EXPOSE_PORT}:80
这是
.env
文件:
ROOT_PASSWORD=mystrongpwd
DATA_VOLUME=/path/to/my/colume
EXPOSE_PORT=3333
PMA_EXPOSE_PORT=4444
但是当我尝试登录 myadmin 时,出现此错误:
mysqli::real_connect(): (HY000/1045): 用户访问被拒绝 'root'@'172.26.0.12'(使用密码:YES)
更新: 因此,这里有一个问题:启用远程 MySQL 连接:错误 1045 (28000): 用户访问被拒绝,导致该问题被用户关闭。但这不是答案。我找到了答案并将其发布在下面。
# in environment section:
environment:
MYSQL_ROOT_HOST: '%'
# the rest of envs
# also I had to add this command:
command: ["mysqld", "--mysql-native-password=ON"]
我正在使用 mysql:8.4.2
,似乎使用
root
启用密码登录只需要
["mysqld", "--mysql-native-password=ON"]
命令。 另外,它对我来说很新,但是不允许从另一个容器登录,除非我添加了
MYSQL_ROOT_HOST: '%'
部分。