Fenying

Angus’ Home.


29 Nov 2015

关于php与mysql连接的小CASE

该文章迁移自作者的旧博客站点。
源地址:http://fenying.blog.163.com/blog/static/1020559932015102923651867

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

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

Cannot log in to the MySQL server

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

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

链接成功~

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

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

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

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

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

comments powered by Disqus