错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2) - Ubuntu 10.04

错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2) - Ubuntu 10.04

我的 VPS 出现硬件故障,导致过去 24 小时内无法使用。现在恢复后,MySQL 无法工作。请记住,我的 VPS 具有这些精确配置,在过去 2 个月内一直运行正常,没有出现任何错误,自硬件故障以来,我没有更改任何代码/数据库设置。

在命令行中,只需输入“sudo mysql”即可返回

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我无法使用 PhpMyAdmin 登录,收到 2 个错误:

#2002 Cannot log in to the MySQL server
Connection for controluser as defined in your configuration failed.

我的网络应用程序(Codeigniter)返回以下错误

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: core/Loader.php

Line Number: 346

我在 Ubuntu 10.04 上运行典型的 LAMP 堆栈。我的硬盘上仍然有足够的可用空间(剩余超过 20 GB),因此空间不足不是问题。

/var/log/mysql.err 中没有任何内容,它是一个空文件。我在 Google 上搜索了好久,但现在似乎完全不知所措。

编辑:

跑步mysqld给了我

mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
120630 18:41:10 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120630 18:41:10  InnoDB: Initializing buffer pool, size = 8.0M
120630 18:41:10  InnoDB: Completed initialization of buffer pool
120630 18:41:10  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

起初,现在运行时mysqld,我什么也没得到,只是返回到提示。

编辑 2:正在运行strace -e trace=file mysqld返回:

120630 19:17:12 [Note] Plugin 'FEDERATED' is disabled.
open("./mysql/plugin.frm", O_RDONLY)    = -1 EACCES (Permission denied)
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
120630 19:17:12 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
open("/tmp/ibzhYSAn", O_RDWR|O_CREAT|O_EXCL, 0600) = 1
unlink("/tmp/ibzhYSAn")                 = 0
open("/tmp/ibRf9302", O_RDWR|O_CREAT|O_EXCL, 0600) = 1
unlink("/tmp/ibRf9302")                 = 0
open("/tmp/ibN6AjrI", O_RDWR|O_CREAT|O_EXCL, 0600) = 1
unlink("/tmp/ibN6AjrI")                 = 0
120630 19:17:12  InnoDB: Initializing buffer pool, size = 8.0M
120630 19:17:12  InnoDB: Completed initialization of buffer pool
open("/tmp/ibGh8aSn", O_RDWR|O_CREAT|O_EXCL, 0600) = 1
unlink("/tmp/ibGh8aSn")                 = 0
open("./ibdata1", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
open("./ibdata1", O_RDWR)               = -1 EACCES (Permission denied)
120630 19:17:12  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

答案1

如果日志文件为空,请尝试mysqld手动启动,实际上只需mysqld在终端运行即可。

它应该自动获取您的配置文件(例如/etc/my.cnf/etc/mysql/my.cnf)并运行它。

之后,您应该可以看到错误,以便您进行修复。如果您也将它们放入原始问题中,我们可以进一步提供帮助。问题可能出在主机上:内存不足,甚至物理磁盘空间不足,即使您尚未达到分配量。

另外,我的看法是:暴发户当出现故障时,这很糟糕。当我遇到 MySQL 问题时,尽管没有出现任何消​​息,但我还是收到了这些“已在运行”消息mysql[d]- 所以暂时忽略它。


你能检查一下你的数据目录吗?听起来好像崩溃已经损坏了它,你丢失了一些文件。这很正常/var/lib/mysql

  1. 您能否检查一下权限(它们.cnf是否与您的文件相匹配)?
  2. 你看ibdata1,它的权限怎么样?

如果您有备份,使用它们可能是个好主意。

答案2

检查 /var/log/daemon.log 中是否存在 mysqld 启动错误。您遇到的问题很可能是 MySQL 无法启动。

grep mysql /var/log/daemon.log应该会为您提供相关错误消息的列表。请回复日志投诉。

相关内容