我想部署 MySQL+PHPMyAdmin。我的 docker-compose.yml:
version: "3"
services:
db:
image: mysql:5.7
restart: always
container_name: db
volumes:
- ./~mysql:/var/lib/mysql
- ./mysql.cnf:/etc/mysql/conf.d/my.cnf
environment:
MYSQL_DATABASE: "dbtest"
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_ROOT_HOST: "%"
networks:
- db
command: --default-authentication-plugin=mysql_native_password
healthcheck:
test: "mysqladmin ping -h localhost"
interval: 1s
timeout: 1s
retries: 60
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.7
restart: always
container_name: phpmyadmin
ports:
- 8080:80
networks:
- external-net
- db
environment:
PMA_HOST: db
depends_on:
- db
networks:
external-net:
external:
name: external-net
db:
driver: bridge
一段时间后,我收到主题错误。 MYSQL_ROOT_HOST 没有帮助。当我尝试从 db-container 连接到 mysql 时:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我真的不知道要用这个魔法做什么……谢谢。
最佳答案
您可以在启动 MySQL 容器时传递一个额外的环境变量 MYSQL_ROOT_HOST= 这将创建一个具有从给定 IP 地址登录权限的根用户。如果您想允许从任何 IP 登录,您可以指定 MYSQL_ROOT_HOST=%.
这仅适用于新创建的容器。
旋转新容器时:
docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
在撰写文件中它会是
version: '2'
services:
### Mysql container
mysql:
image: mysql:latest
ports:
- "3306:3306"
volumes:
- /var/lib/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test_db
MYSQL_USER: test
MYSQL_PASSWORD: test_pass
MYSQL_ROOT_HOST: '%' # needs to be enclosed with quotes
关于mysql - 不允许主机 'X' 连接到此 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54030469/