如何获取从“/mysql/tmp/”中错误删除的 mysql.sock 文件

如何获取从“/mysql/tmp/”中错误删除的 mysql.sock 文件

我陷入了 PDO 异常

PDOException: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in lock_may_be_available() (line 167 of home/../includes/lock.inc).

为了解决这个问题,我尝试使用该命令重新创建符号链接。我正在 Linux 服务器上工作。

 ln -s /home/../mysql/tmp/mysql.sock /tmp/mysql.sock

执行上述sql语句,没有任何变化,但出现了PDO异常。后来,我错误地删除了(不在“/tmp”)中mysql.sock的文件。"/home/../mysql/tmp/"

我如何恢复或重新创建文件mysql.sock。关于 PDO 异常及其解决方法,您有什么想法吗?

答案1

vi /etc/mysql/my.cnf

您将在配置文件中找到以下几行

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

确保 mysqld.sock 位于其应在的位置我不喜欢错误消息中的路径“/tmp/mysql.sock”

既然你在这里,也寻找这条线

bind-address            = 127.0.0.1

如果您尝试从远程位置连接,请注释掉此行。

尝试本地连接(从服务器上的终端)

mysql -u root -p

如果您不担心安全性(即这是您的个人服务器而不是多用户环境),您还可以确保任何人都可以读取该文件

chmod a+r /var/run/mysqld/mysqld.sock

以上所有方法应该可以解决您的连接问题。要获取该文件,您可以全新安装 mysql 服务器。

apt-get purge mysql-server
apt-get install mysql-server

或者您可以下载 mysql-server .deb 包并解压,然后您应该会在某个地方找到它。如果您使用的是 RHL,则相当于 .rpm。

编辑:由于您一直在复制文件,因此文件所有权可能已更改为 root,请检查一下(使用 ls-la /path)。所有者应为 mysql 组 mysql。想不出其他任何东西了。

答案2

CHECKCREATE TABLEMariaDB 中试验约束后我出现了这个错误。

我的一个实验导致 MariaDB 退出并告诉我无法重新连接到服务器。退出并重新启动后,我收到了该Error 2002消息。以 root 身份发出systemctl stop mysql命令,然后使用mysqld手动启动/usr/sbin/mysqld --skip-grant-tables --skip-networking

重新启动客户端后,它连接到了服务器。我使用 SQL 命令删除了发生错误时我正在处理的数据库DROP DATABASE。我退出客户端,杀死它mysqld,然后使用 重新启动它systemctl start mysql。当我重新启动客户端时,一切正常。

我从 SQL 转储重新创建了数据库并重新开始工作。

幸运的是,我正在研究一个用于学习数据库管理的小型数据库,即使无法恢复它也没关系。

答案3

必须更改配置文件httpd.conf根值

之前,Listen : 0.0.0.0:80.我将其更改为Listen: 0.0.0.0:8080- 将根更改为其更高的四位数字(1024、8008、9999 等),然后重新启动apache servermysql嗯,成功了。

我的问题是:mysql.sock文件是一个套接字文件,它将在 MySql 服务器重新启动时自动创建

最后,我的问题解决了。

相关内容