zoukankan      html  css  js  c++  java
  • 解决*unix系统下Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    在windows下,即使是root使用也不用强制使用socket,而*unix则不同。
    一般情况下,可以设置php.ini与mysql.cnf的配制,使其能找到mysql.sock。
    /etc/my.cnf:

    port = 3306
    socket = /var/lib/mysql_data/mysql.sock


    /etc/php.ini:

    mysql.default_socket=/tmp/mysql.sock

    一种情况是,在系统下没有/tmp/mysql.sock这个文件,但php.ini又指定只能从/tmp位置获取。可以复制吗?
    cp /var/lib/mysql/mysql.sock   /tmp/mysql.sock
    cp: 无法打开 “/var/lib/mysql/mysql.sock” 读取数据: 没有那个设备或地址,不好意思,设置文件,不能编辑,不能复制。看来只能建立链接

    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

    再次登陆,应该正常了。
    但在php中,运行mysql时可能还是会再次验证sock,这时我们只能作判断了:

    if (! function_exists('find_socket'))
    {
    function find_socket()
    {
    $file = '/var/lib/mysql/mysql.sock';
    $link = '/tmp/mysql.sock'; // php 指定mysql.sock存放地址
    return is_file($file) ? $file : ( is_file($link) ? $link : ( is_link($link) ? readlink($link) : null) );
    }
    }

    如果两个位置都不能获取,则只能返回null值。
  • 相关阅读:
    第四周助教小结 北软
    第二周工作小结 北软
    第六周助教小结 北软
    第七周周小结 北软
    第八周周小结 北软
    几句话了解元数据(Metadata)
    App测试点(二)
    Pytest单元测试
    UnitTest单元测试
    【模板】单源最短路径
  • 原文地址:https://www.cnblogs.com/sumsung753/p/3821495.html
Copyright © 2011-2022 走看看