PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2)
如下所示,PHP连接MySQL报错:
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2)
测试代码如下:
<?php try { $dsn = 'mysql:dbname=php-note;host=localhost;port=3306;charset=utf8'; $username = 'root'; $password = 'root'; new PDO( $dsn, $username, $password); } catch (\PDOException $e) { echo $e->getMessage(); }
【解决方案】
把 host=localhost 改为 host=127.0.0.1 即可!
连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
mysql,Mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
这是由于修改mysql服务的了socket文件mysql.sock位置,而导致无法通过mysql socket文件连接到mysql服务引起的,具体解决办法如下:
1、查看mysql服务的socket文件位置:
mysql socket文件的位置是在/etc/my.cnf中设置的,cat /etc/my.cnf内容如下:
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
user=mysql
其中socket等于的路径就是socket文件的位置,我们只要修改my.cnf文件,告诉mysql,mysqldump,mysqladmin mysql服务的socket位置在哪里就可以。
2、修改my.cnf文件:
在/etc/my.cnf文件中添加如下内容,并重启mysqls服务,即可解决mysql,mysqldump,mysqladmin的“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”问题:
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock[mysql]
socket=/storage/db/mysql/mysql.sock[mysqldump]
socket=/storage/db/mysql/mysql.sock[mysqladmin]
socket=/storage/db/mysql/mysql.sock
3、php连接mysql服务提示"Can't connect to local MySQL server through socket..."的解决方法
有时候mysql服务正常运行,用户名密码也完全正确,使用php的mysql_connect函数却连接不了mysql,调用php的mysql_error()函数提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”,这是我们需要修改/etc/php.ini文件。
在/etc/php.ini文件中"[MySQL]"项下找到"mysql.default_socket",并设置其值指向正确的mysql服务socket文件即可,如:
[MySQL]
...省略n行...
mysql.default_socket = "/storage/db/mysql/mysql.sock"
4、python连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:
在连接mysql数据库函数中指定socket文件,如下:
#!/usr/bin/python
from MySQLdb import connect
conn = connect(db="pzy", user="root", host="localhost", unix_socket="/storage/db/mysql/mysql.sock")
cur = conn.cursor()
count=cur.execute("show databases")
print 'there has %s dbs' % count
conn.commit()
conn.close()
5、php pdo连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:
同样在连接字符串添加mysql socket文件的位置即可,如下:
<?php
$dsn = "mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock";
$db = new PDO($dsn, 'root', '');
$rs = $db->query("SELECT * FROM qrtest");
while($row = $rs->fetch()){
print_r($row);
}
?>
参考:
http://www.aiezu.com/db/mysql_cant_connect_through_socket.html
相关文章
- Mysql 1290 - The MySQL server is running with the --secure-file-priv option
- PHP无法连接MySQL数据库解决办法(php连接不到mysql)
- 『抛弃MySQL,转用PHP新时代』(php废弃mysql)
- 数据库PHP操作MySQL数据库的精彩之旅(php读mysql)
- MySQL登录安全之PHP实现(php登录mysql)
- PHP连接MySQL的实现方法(php怎么连接mysql)
- 使用PHP连接虚拟机MySQL服务器(连接虚拟机mysql)
- 查询使用PHP运行MySQL查询的步骤(php运行mysql)
- 远程探索——PHP与MySQL的结合(php远程连接mysql)
- MySQL在线添加索引:简单便捷的优化方式(mysql在线添加索引)
- 创建MySQL表:简单步骤指南(如何创建mysql表)
- PHP连接MySQL的快速操作指南(php连接mysql步骤)
- MySQL中存储的二进制数据分析(mysql二进制数据)
- PHP原生编程实现MySQL数据库连接(php原生连接mysql)
- Android实现PHP连接MySQL进行数据交互(android通过php连接mysql)
- MySQL中快速导入数据的方法(mysql导入数据)
- MySQL教程:如何使用DISTINCT排除重复项(mysql排除重复)
- PHP连接MySQL数据库失败的解决方案(php连接mysql失败)
- MySQL查询空:如何在MySQL数据库中查询空值?(mysql查询空)
- MySQL与PHP结合抵御注入攻击(mysql php 注入)
- SQL Server与MySQL数据库管理系统之间的差异(sqlserver和mysql的区别)
- 研究MySQL与SQL Server的差异(mysql与sqlserver区别)
- 掌控MySQL权限:数据库安全第一步(mysql数据库权限分配)
- 深入浅出MySQL中的Null字段解析和应用技巧(mysql中null字段)
- 如何使用C语言连接MySQL数据库(c 下连接mysql)
- CSV与织梦MySQL实现数据迁移的简单操作(csv织梦mysql)
- 用cmd命令实现MySQL数据库备份(cmd命令mysql备份)
- 学习使用 MySQL PDO 扩展优化 PHP 数据库操作(mysql_pdo 扩展)
- 如何在MySQL中避免使用临时表(mysql 不写tmp)
- MySQL安装遇到问题教你解决下载安装失败的困扰(mysql下载安装失败)
- MySQL安装时只能选择C盘解决方法(mysql不能装在其他盘)
- 如何运行未注册服务的MySQL(mysql不注册服务启动)
- PHP中的MYSQL常用函数(php下操作数据库必备)