Error establishing a database connection

来源:6-1 根据前面所学部署一个wordpress

慕勒0288273

2019-08-02

在第6章第1节中,与老师同样的命令,打开wordpress网页时报这个错,
只显示一行文字“Error establishing a database connection”

sudo docker run -d -v vagrant_dir:arb/mysql --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql

sudo docker run -d --name wordpress -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress

http://192.168.21.4:8080
页面显示: Error establishing a database connection

写回答

6回答

MakChiKin

2019-11-29

我也遇到了相同的情况,发现是版本的问题,下面这行代码,亲测可用,希望帮到有需要的同学

docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=WordPress mysql:5.7


2
0

爱吃apple的阿狸

2020-04-10

原因是因为mysql版本问题,8.0以前mysql密码验证用的 mysql_native_password ,而8.0改变了,所以出现这种问题,so,解决的办法:

  1. docker pull mysql:5.7  不要用最新的latest,最新的是8.0

  2. 使用了mysql8.0   启动的时候:

    docker run --name mysql -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8  --default-authentication-plugin=mysql_native_password 

最后,新建mysql容器前,别忘了删干净volume哦~

0
0

cqh8161364

2020-02-17

把 -v 之后的volume名字改一下,不要叫mysql-data,比如叫my-mysql-data,这样可以起来

0
1
Hanzooo
试了下用 mysql-data volume 不能启动是因为这个 volume 已经存在了,docker volume rm 删除掉 mysql-data 后,测试又可以启动了
2020-02-18
共1条回复

cqh8161364

2020-02-17

下面那个删除volume挂载的,那样操作之后服务就起来了。没法直接回复那条记录。

复制一下


“发现要去掉  -v vagrant_dir:/var/lib/mysql 就是可以了

在下面一节要讲的dock-compose 里,在docker-compose.yml也要去掉  

volumes:

      - mysql-data:/var/lib/mysql

不知道是什么原因

0
0

慕勒0288273

提问者

2019-08-02

开始怀疑文件安全访问的问题

在/etc/selinux/config 中将 SELinux 改成 disabled ,然后重启虚拟机,

再次运行 docker-compose up , 还是不行,

docker-compose启动时报错

wordpress_1  | MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

wordpress_1  | [02-Aug-2019 06:00:56 UTC] PHP Warning:  mysqli::__construct(): php_network_getaddresses: getaddrinfo fai

led: Name or service not known in Standard input code on line 22

wordpress_1  | [02-Aug-2019 06:00:56 UTC] PHP Warning:  mysqli::__construct(): (HY000/2002): php_network_getaddresses: g

etaddrinfo failed: Name or service not known in Standard input code on line 22

还是只有删除 以下挂载才可以

volumes:

      - mysql-data:/var/lib/mysql


没有找到最好的解决方案,求解


0
0

慕勒0288273

提问者

2019-08-02

发现要去掉  -v vagrant_dir:/var/lib/mysql 就是可以了

在下面一节要讲的dock-compose 里,在docker-compose.yml也要去掉  

volumes:

      - mysql-data:/var/lib/mysql

不知道是什么原因

0
1
慕勒0288273
貌似找到了问题, 估计是这个vagrant_dir已经映射到了windows下的一个文件夹下, 所以不能挂在这个volumes下
2019-08-02
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程