记一次踩坑之旅

docker 安装php7

1
docker run -d  -p 3000:9000 -v /tmmee:/tmmee -v /usr/local/etc/php:/usr/local/etc/php -v /var/lib/mysql:/var/lib/mysql f93723455cd8

docker 安装phpfpm, nginx监听3000端口,本地3000端口映射9000端口让他处理php请求(原来服务器是php5.6,生产环境不便在动,通过docker安装php7),结果出错了….

SQLSTATE[HY000] [2002] Connection refuse

解决方法一:

修改php.ini

1
2
3
4
5
mysql.default_socket = /tmp/mysql.sock

pdo_mysql.default_socket= /tmp/mysql.sock

mysqli.default_socket =/tmp/mysql.sock

/tmp/mysql.sock 是你mysql.sock位置

可以通过find / -name mysql.sock 查找其位置

注意 :此处数据库连接地址填localhost

解决方法二

修改数据库地址为127.0.0.1

思考

MySQL主机127.0.0.1与localhost什么区别呢?

  1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是”localhost.localdomain”

  2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket;此时,mysql server则认为该client是来自”localhost”

当主机填写为localhost时mysql会采用 unix domain socket连接

当主机填写为127.0.0.1时mysql会采用tcp方式连接

127.0.0.1是内核实现的,一般来说localhost是在/etc/hosts这个文件实现的,你打开这个文件看,头一行就是127.0.0.1 localhost
hostname也可以写在这个文件内,在后面接着写就是,仿照它的格式,前面写ip后面写主机名,中间可以用空格,也可以用tab键隔开,
主机名当然也可以用dns来实现,但是是先查询本地的hosts文件还是先查询dns这个是靠/etc/host.conf文件

小收获

无意间看到的句子,收藏之…

即使你拥有人人羡慕的容貌,博览群书的才学,挥之不尽的财富,也不能证明你的强大,因为心的强大,才是真的强大

纵有疾风起,人生不言弃!