关于php与mysql连接的小CASE

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2015/11/29/can-not-connect-mysql-with-php/

两则 PHP 连接 MySQL 失败的记录。

今天将项目转移到 CentOS 虚拟机下测试的时候,安装 phpMyAdmin 后始终无法登陆,显示

1Cannot log in to the MySQL server

经过调试发现,原来是 localhost 无法识别,于是改成

1<?php
2$cfg['Servers'][$i]['host'] = '127.0.0.1';

链接成功~

另外一个问题就是使用 PDO + Socket 方法连接 MySQL,如下

1<?php
2$dsn = 'mysql:unix_socket=/www/socket/mysql.sock;dbname=hahaha';
3$mysql = new PDO($dsn, 'root', 'password-here');
4$res = $mysql->query('SELECT `username` FROM `users` WHERE id=1234;');
5var_dump($res->fetch(PDO::FETCH_ASSOC));

其最重要的一点是,确保 php-fpm 的运行用户必须有权访问 mysql.sock。

当然,除此之外还要确保 mysql.user 里面设定了 root@localhost 的访问权,因为使用socket链接的时候,mysql视之为来自localhost。

comments powered by Disqus