zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/52php/p/5683343.html
Copyright © 2011-2022 走看看