Mysql 警告:mysqli_connect(): (HY000/2002): No such file or directory in

Posted

技术标签:

【中文标题】Mysql 警告:mysqli_connect(): (HY000/2002): No such file or directory in【英文标题】:Myqsl Warning: mysqli_connect(): (HY000/2002): No such file or directory in 【发布时间】:2021-07-05 08:12:12 【问题描述】:

Linux 更新至Ubuntu 20.04(Focal Fossa)。

更新后,不知道,因为它是一个旧项目,主要使用纯 php(无框架)和用于 DBMS 的 mysql 完成,通常位于LAMP。截至目前,我的大多数 LAMP 项目都不再工作(给出相同的错误),当我尝试连接到如下所示的 MySQL 数据库时

<?php

    /*
    * Created by neno
    * website: www.mynamejeff.com
    */

    // Class DbConnect
    class DbConnect
    
        // Variable to store database link
        private $con;

        // Class constructor
        function __construct()
        

        

        // This method will connect to the database
        function connect()
        
            // Including the constants.php file to get the database constants
            include_once dirname(__FILE__) .'/Constants.php';
            // Connecting to the MySQL database
            //mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

            $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
            //$connection->set_charset('utf8mb4');
            // Checking if any error occurred while connecting
            if (mysqli_connect_errno()) 
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            
            // Finally returning the connection link
            $this->con = $connection;
            return $this->con;
        
    

我收到此错误 Warning: mysqli_connect(): (HY000/2002): No such file or directory in

我已经搜索并尝试了各种方法,例如:

重新安装 PHP 重新安装 MySQL

我什至通过此规则将apache.conf 文件复制到/etc/phpmyadmin

sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin

错误仍然存​​在。

有趣的是,当我从 localhost 切换到 127.0.0.1:3306 or port 80 时,我得到了这个错误:

警告:mysqli_connect():服务器请求的身份验证方法对客户端 [caching_sha2_password] 中的客户端未知

当我运行 sudo apache2 --help 时,我得到了这个输出:

[Fri Apr 09 14:53:39.934038 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_LOCK_DIR is not defined
[Fri Apr 09 14:53:39.934100 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_PID_FILE is not defined
[Fri Apr 09 14:53:39.934114 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_RUN_USER is not defined
[Fri Apr 09 14:53:39.934118 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_RUN_GROUP is not defined
[Fri Apr 09 14:53:39.934128 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_LOG_DIR is not defined
[Fri Apr 09 14:53:39.940952 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_LOG_DIR is not defined
[Fri Apr 09 14:53:39.941084 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_LOG_DIR is not defined
[Fri Apr 09 14:53:39.941092 2021] [core:warn] [pid 62907] AH00111: Config variable $APACHE_LOG_DIR is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:$APACHE_LOCK_DIR

我已经在/etc/php.ini 中修复了我的php.ini 文件,因此这减少了一些错误。我不确定在哪里。

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

我已经尝试直接添加端口,但我仍然得到同样的错误:

$con = sysqli_connect("localhost:**3306**", "DB_USER", "DB_PASS", "DB_NAME");

我尝试在我的 SQL 中更改用户,如下所示:

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

错误仍然存​​在。

在某些时候我也遇到了这个错误,

: mysqli_connect(): (HY000/2002): 权限被拒绝

我不确定是如何解决的。

我已经阅读了一些我应该编辑 my.cnf 文件的地方

/etc/mysql/my.cnf

/etc/my.cnf

/etc/mysql/my.cnf

$MYSQL_HOME/my.cnf

[DATADIR]/my.cnf

~/.my.cnf

这个文件总是空的,我应该编辑的行也找不到了。

【问题讨论】:

您在这里描述了多个独立的问题。请把那些东西分开。示例:apache 锁定目录与数据库服务器无关。 我怀疑您的配置依赖于套接字文件来连接到 mysql,而您的新 http 服务器实际上试图通过网络连接。 为什么有些代码行被注释掉了? socket文件/tmp/mysql.sock是否存在?如果是这样,权限是什么? @arkascha 如何检查 /tmp/mysql.sock 中的权限 【参考方案1】:

原因可能是 MySQL 版本之间的差异。在某些情况下(例如市长版本),文件结构是不同的。

【讨论】:

2. mysql 服务器的不兼容版本将导致与 OP 发布的错误消息不同。 3. mysql 服务器的内部文件结构与外部无关,它是一个 internal 细节,将由更新处理。

以上是关于Mysql 警告:mysqli_connect(): (HY000/2002): No such file or directory in的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysqli_connect(): (28000/1045): 拒绝访问

警告:mysqli_connect(): (HY000/2002): 没有这样的文件或目录

PHP MySQL OpenSSL警告

警告:mysqli_connect():(HY000/2002):连接被拒绝[重复]

mysqli_connect(): (HY000/1045): Access denied for user ... - mysql shell 工作 [重复]

警告:mysqli_connect():(HY000/1045):用户'record'@'localhost'的访问被拒绝(使用密码:YES)[重复]