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): 没有这样的文件或目录
警告:mysqli_connect():(HY000/2002):连接被拒绝[重复]
mysqli_connect(): (HY000/1045): Access denied for user ... - mysql shell 工作 [重复]
警告:mysqli_connect():(HY000/1045):用户'record'@'localhost'的访问被拒绝(使用密码:YES)[重复]