我想部署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)我真的不知道该怎么处理这个魔法。谢谢。
发布于 2020-04-26 16:15:12
如果本地系统上的文件是以损坏的方式创建的,或者Docker守护程序无法正确访问,则可能会出现此问题。这可能是由于以下原因:
Windows没有本地硬盘的访问权限,在C.
--build过程中请求允许访问Windows上的C,这些文件仍然可能已损坏。解决方案可能是在授予Docker访问权限后删除相应的本地文件,在您的情况下,这些文件是/~mysql中的文件和文件mysql.cnf。
发布于 2019-02-08 03:36:00
我已经重新创建了你的设置,只是添加了一些ENV配置来完成这个技巧,我已经删除了volumes部分,因为它没有问题:
docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7
restart: always
container_name: db
environment:
- MYSQL_ROOT_PASSWORD=rootpasswd
- MYSQL_DATABASE=phpmyadmin
- MYSQL_USER=user
- MYSQL_PASSWORD=userpasswd
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用根访问PHPMyadmin :rootpasswd运行良好。
发布于 2022-02-10 15:55:50
在启动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在compose文件中,它将是
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 quotesversion: '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 quoteshttps://stackoverflow.com/questions/54030469
复制相似问题