548

我在Ubuntu 12.04 LTS (Precise Pangolin) 上安装了LAMP,然后在phpMyAdmin上设置了 root 密码。我忘记了密码,现在无法登录。当我尝试通过终端更改密码时,我得到:

ERROR 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)

我怎样才能解决这个问题?我无法打开、卸载或重新安装 LAMP。

4

84 回答 84

333

我曾经遇到过这个问题并通过安装解决了它mysql-server,因此请确保您已经安装了mysql-server,而不是mysql-client其他的。

该错误意味着该文件/var/run/mysqld/mysqld.sock不存在,如果您没有 install mysql-server,则该文件将不存在。所以在这种情况下,安装它

sudo apt-get install mysql-server

但是如果mysql-server已经安装并且正在运行,那么您需要检查配置文件。

配置文件是:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

/etc/my.cnf,socket 文件 config 可能是/tmp/mysql.sock/etc/mysql/my.cnfsocket 文件中的 config 可能是/var/run/mysqld/mysqld.sock. 所以,删除或重命名/etc/mysql/my.cnf,让mysql使用/etc/my.cnf,那么问题可能就解决了。

于 2013-02-23T09:38:34.847 回答
267

尝试这个:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

另外(查看它是否正在运行):

telnet 127.0.0.1 3306 

可能它只是my.cnf文件中的错误配置,在/etc/somewhere(取决于Linux 发行版)。

于 2012-07-25T20:32:49.560 回答
168

我看到了所有这些答案,但没有一个提供重置密码的选项并且没有接受的答案。实际的问题是他忘记了密码,所以他需要重置,而不是查看它是否正在运行(安装与否),因为这些答案中的大多数暗示。


重置密码

请按照以下步骤操作(如果您真的忘记了密码会很有帮助,并且您可以随时尝试,即使您目前不在这种情况下):

  1. 停止mysql

    sudo /etc/init.d/mysql stop
    

    或者对于其他发行版本:

    sudo /etc/init.d/mysqld stop
    
  2. 以安全模式启动 MySQL

    sudo mysqld_safe --skip-grant-tables &
    
  3. 使用 root 登录 MySQL

    mysql -u root
    
  4. 选择要使用的 MySQL 数据库

    use mysql;
    
  5. 重置密码

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
    
  6. 刷新权限

    flush privileges;
    
  7. 重启服务器

    quit
    
  8. 停止并重新启动服务器

    Ubuntu 和 Debian:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start
    

在 CentOS、Fedora 和 RHEL 上:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
  1. 使用新密码登录

    mysql -u root -p
    
  2. 输入新密码并再次享受您的服务器,就像什么都没发生一样

这取自Reset a MySQL root password

于 2016-02-02T01:18:20.617 回答
72

我尝试了以下步骤:

  1. 登录super user或使用sudo
  2. /etc/mysql/my.cnf使用gedit打开
  3. 查找bind-address,并将其值更改为数据库服务器主机的 IP 地址。对我来说,它是localhost127.0.0.1
  4. 保存并关闭文件。
  5. 回到终端并执行sudo service mysql start

它对我有用。

于 2012-10-11T06:27:36.797 回答
63

在我的情况下,磁盘已满,mysqld 无法再启动。

尝试重启mysql服务。

> service mysql restart

或者

> service mysql stop

> service mysql start

如果它不识别stop命令,那么它肯定是磁盘空间。您应该在分区mysql中分配一些空间或使磁盘更大。

检查磁盘空间

> df -h
于 2013-06-19T07:46:08.703 回答
44

我通过执行以下命令解决了这个问题:

mysql.server start

如果您在 Mac 上并使用 brew 安装 mysql,只需使用:

brew services start mysql
于 2014-02-27T15:45:25.630 回答
39

我有一个类似的问题。mysql 无法启动:

sudo service mysql start
start: Job failed to start

如果我禁用 apparmor:

sudo aa-complain /etc/apparmor.d/*

问题消失了。问题是 mysqld 试图访问 /run/mysqld/mysqld.sock 但 apparmor 配置文件只授予 /var/run/mysqld/mysqld.sock 权限(/var/run 符号链接到 /run,所以这些实际上是相同)。不知道为什么 mysqld 不使用 var 路径,因为这是在所有配置文件中设置的,但是您可以通过将以下内容添加到 /etc/apparmor.d/usr.sbin.mysqld 来解决问题

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
于 2012-09-12T16:22:18.300 回答
31

我通过终止mysql进程解决了这个问题:

ps -ef | grep mysql
kill [the id]

然后我再次启动服务器:

sudo /etc/init.d/mysql restart

start也可以:

sudo /etc/init.d/mysql start

然后我以 登录admin,我就完成了。

于 2014-07-30T09:43:17.430 回答
22

不知何故,MySQL 服务器进程没有创建套接字,或者客户端在错误的位置寻找套接字。

我的第一个建议是检查 MySQL 服务器是否正在运行。第二个建议可能是,MySQL 服务器是否在另一台主机上运行?如果是这样,请将-h <hostname>标志添加到终端中的 MySQL 客户端。

如果 MySQL 确实在运行,并且在本地运行,请检查您的my.cnf文件。应该有一条线

socket = /var/run/mysqld/mysqld.sock

看看这是否与您在帖子中提到的套接字位置相匹配。

根据经验,我会说最有可能的情况是您的 MySQL 服务器根本没有运行,或者没有在与您从终端运行 MySQL 客户端的主机上运行。

于 2012-07-25T20:32:34.100 回答
21

在我不得不重新启动生产服务器后,我刚刚遇到了同样的问题。我在 DigitalOcean 液滴上运行 Debian 8.1 (Jessie)。

这是我为解决我的问题所做的:

  1. 检查文件是否/var/run/mysqld/mysqld.sock存在。如果没有,请通过输入手动创建它touch /var/run/mysqld/mysqld.sock(这是我必须做的)。

  2. 所以 MySQL 进程可以使用这个文件。通过输入更改所述文件的所有权chown mysql /var/run/mysqld/mysqld.sock

  3. service mysql restart完成“2”后,输入or重新启动 MySQL 服务/etc/init.d/mysql restart

完成以上步骤后,我的问题就解决了。我很少遇到这个问题,可能有更好的方法,所以如果需要的话,一定要提供建设性的反馈:)。

于 2015-08-18T00:32:50.967 回答
19

检查"bind-adress"my.cnf 中的参数。

否则尝试使用以下命令:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h 代表主机127.0.0.1,即 localhost

  • -P (注意 -P 为大写) port 3306,即 MySQL 的默认端口

于 2013-11-17T11:02:15.087 回答
15

您的 mysql-server 可能没有运行。mysql.server start通过在终端中键入来确保它运行。

于 2014-07-18T06:24:29.457 回答
12

我想每当你得到错误

错误 2002 (HY000): 无法通过套接字 '/var/lib/mysql/mysql.sock' 连接到本地 MySQL 服务器

我会建议首先检查您的mysql守护程序是否正在运行......大多数情况下默认情况下它不会运行。您可以通过/etc/init.d/mysqld status.

如果它没有运行,请先启动它:

.../etc/init.d/mysqld start.

我敢打赌它会 110% 工作。

于 2014-03-19T06:38:28.773 回答
12

如果您使用的是Amazon EC2,并且您在实例上遇到此问题,那么您只需执行以下操作:

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2 没有安装服务器(仅安装了客户端),因此如果出现这种情况,您需要在您的实例上安装它,然后尝试

 mysql -u root -p

检查是否有效。

于 2015-10-30T06:11:09.630 回答
11

这对我有用:

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

这将创建一个链接。

于 2015-02-25T00:19:04.303 回答
11

而不是使用本地主机:

mysql -u myuser -pmypassword -h localhost mydatabase

使用 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(另请注意,-p 和 mypassword 之间没有空格)

享受 :)

于 2015-10-20T20:43:25.567 回答
10

我也面临同样的问题,如果您mysql server默认情况下未运行,它将在几秒钟后再次停止,因此您再次运行($ sudo service mysql start )命令,如果知道,您可以更改。

对于那个使用命令

$ sudo service mysql start   

(如果需要,请输入用户密码,因为我们使用sudo)然后运行

$ sudo mysql -u root -p          (put user password if required )

现在你有了你的数据库

于 2018-10-19T13:45:01.353 回答
9

我也遇到了这个问题,但我只是这样做了:

sudo service mysql restart 

它对我有用。

于 2014-02-03T01:34:11.273 回答
9

确保你有重要数据库的备份,然后尝试卸载 MySQL相关的东西:

apt-get remove --purge mysql\*

然后再次安装

apt-get install mysql-server mysql-client

这对我有用,并且保留了数据。

如果 PHP MySQL 显示错误,您可能需要重新安装 PHP MySQL

apt-get install php5-fpm php5-mysql
于 2014-11-01T14:29:17.993 回答
9

看来您的 MYSQL 已停止。使用以下命令再次启动 MySQL

sudo service mysql start
于 2020-02-09T11:05:57.013 回答
8

我找到了解决方案

在触发命令之前:mysql_secure_installation

  • 步骤1:sudo systemctl stop mariadb
  • 第2步:sudo systemctl start mariadb
  • 第 3 步:mysql_secure_installation

然后它会询问 root 密码,您只需 Enter并设置新的 root 密码。

于 2017-06-20T01:55:54.137 回答
7

如果您的安装是最近的,您应该确认您的安装是否是安装服务器... as mysql-server-5.5 .. 也许您只安装了“mysql” .. 这只是客户端而不是服务器。

于 2013-01-25T22:07:39.707 回答
7

如果您的 Linux 机器上安装了XAMPP,请尝试将my.cnf文件/opt/lampp/etc/my.cnf/etc/my.cnf.

然后,mysql -u root再次运行...您现在应该拥有正确的套接字并能够运行 MySQL 客户端。

于 2013-11-01T23:17:47.863 回答
6

就我而言,它通过一些研发工作:

我可以使用连接到 MySQL

root-debian#mysql -h 127.0.0.1 -u root -p

但它不适用于mysql -u root -p.

bind-address我在my.cnf中没有找到任何内容。所以我排除了导致我登录问题的socket=/var/lib/mysql/mysqld.sock参数my.cnf

重启服务后一切正常:

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)
于 2014-06-13T06:08:25.713 回答
6

在我的情况下,默认端口 3306 正在被其他进程使用,因此它没有启动。在我停止其他服务并执行之后sudo service mysql start,它运行良好。顺便说一句,您可以使用类似的东西sudo lsof -Pn -iTCP:3306来查看谁可能正在使用该端口。

于 2014-01-21T20:03:40.990 回答
6

就我而言,当我运行时,似乎我真的无法杀死 mysql 进程

sudo service mysql stop
ps -ef | grep mysql

mysql 进程一直在那里,看起来它正在阻塞套接字文件,并且新的 mysql 进程无法自己创建它。

所以这有帮助

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

现在我可以使用登录数据库

mysql -u root

然后更新root密码:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS:我在更新 root 密码时遇到了问题,似乎是“auth_socket”插件的问题,所以我必须创建具有完全权限的新用户

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

这将创建没有密码的用户“super”,然后您可以连接mysql -u super

于 2017-05-09T06:57:30.867 回答
6

拳头,尝试重新启动它

服务 mysql 停止

服务 mysql 启动

如果上面没有解决问题,现在让我们去......

完全卸载 MySQL

sudo apt-get remove --purge mysql\*

重新安装它

sudo apt install mysql-server mysql-client

测试它是否运行

sudo mysql

安装php驱动

sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-cgi php7.4-cli php7.4-common

您可以用 php7.x 或 php8.0.12 或更高版本替换 php7.4 非常好!

于 2019-10-26T19:53:08.653 回答
6

在 Debian 服务器 Jessie 上,我的工作解决方案是简单地做

service mysql restart
service mysql reload

作为根用户

于 2017-06-01T09:12:03.537 回答
6

我用重启mysql解决了这个问题

/etc/init.d/mysql stop

/etc/init.d/mysql start

而已。

于 2018-08-16T00:48:21.470 回答
5

打开终端并输入:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

MySQL 数据库核心客户端和 MySQL 服务器包都将是相同的 5.5 版本。MySQL Client 5.5 和 MySQL Server 5.5 是 Ubuntu 14.04 中这些包的当前“最佳”版本,由包维护者确定。

如果您希望安装 MySQL Client 5.6 和 MySQL Server 5.6,您还可以在 Ubuntu 软件中心找到 mysql-client-core-5.6 和 mysql-server-5.6 软件包。重要的是客户端和服务器版本号在任何一种情况下都匹配。

这对我有用。

于 2014-11-15T17:54:47.410 回答
5

检查您是否拥有正确的权限:

sudo chmod 755 /var/lib/mysql/mysql

我有同样的问题,这对我有用。完成此操作后,我能够启动 MySQL。

于 2014-05-16T20:47:21.767 回答
5

在 Ubuntu 14.04 (Trusty Tahr) 上也是如此。

如果您已经安装了 XAMPP,安装 mysql-server 不是解决方案,因为您将访问另一个 MySQL!

您必须使用正确的套接字才能访问。通常是这样的:

/opt/lampp/var/mysql/mysql.sock

相反,将其更改为:

/var/run/mysqld/mysqld.sock
于 2014-08-07T19:06:19.053 回答
5

根据经验,我说您需要先检查服务器是否正在运行,然后再尝试配置 MySQL。最后的解决方案是重新安装 MySQL。

于 2012-11-01T15:56:37.050 回答
5
mysqld stop
mysql.server start
于 2015-09-08T21:19:32.120 回答
4

我有同样的问题。经过大量搜索,我没有找到任何答案。

最后查看/tmp目录,权限是755,改成777,mysqld启动正常,没有任何问题。

于 2014-02-18T06:39:46.637 回答
4

我遇到过同样的问题。如果您的 MySQL 服务被关闭,有时会发生这种情况。

所以你必须启动它:

sudo service mysql start
于 2014-10-21T14:07:32.790 回答
4

它现在工作...

我已经按照教程在 Mac OS X 上使用 Homebrew 安装 MariaDB 10.1.16来克服这个问题。

但是不要忘记杀死或卸载旧的 MariaDB 安装。

于 2016-12-27T11:41:19.497 回答
3

对我来说,更新解决了这个问题:

在 Ubuntu 上:

sudo apt-get update
sudo apt-get upgrade

在 CentOS 上:

sudo yum update
于 2016-07-17T13:16:08.187 回答
3

当我停止 mysql 服务时,我得到了完全相同的错误,这里如何解决它:通过(重新)使用以下命令启动 mysql:

sudo systemctl start mysql

或者

sudo systemctl restart mysql
于 2019-12-16T16:09:29.793 回答
3

对于 CentOS Linux 7.3 版,mysql.sock 文件路径为/var/lib/mysql/mysql.sock

编辑/etc/my.cnf文件并放入下面的条目这将解决您的问题。

[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0

在此之后重新启动服务

service mysql restart
于 2017-09-05T06:05:58.583 回答
3

尝试重新启动服务器

sudo /usr/local/mysql/support-files/mysql.server start

如果有任何错误,请按照以下步骤操作

  1. mysqld

您将看到以下日志。请注意此处 MySQL 目录的突出显示部分

mysqld:无法将目录更改为 “/usr/local/mysql-5.7.14-osx10.11-x86_64/data/”(错误代码:13 - 权限被拒绝)2016-10-04T14:09:19.392581Z 0 [警告] 带有隐式 DEFAULT 值的 TIMESTAMP 已弃用。请使用 --explicit_defaults_for_timestamp 服务器选项(有关详细信息,请参阅文档)。2016-10-04T14:09:19.392847Z 0 [警告] --secure-file-priv 的不安全配置:当前值不限制生成文件的位置。考虑将其设置为有效的非空路径。2016-10-04T14:09:19.392921Z 0 [注意] mysqld (mysqld 5.7.14) 从进程 1402 开始 ... 2016-10-04T14:09:19.397569Z 0 [警告] 无法创建测试文件
/usr /local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14:09:19.397597Z 0 [警告] 无法创建测试文件 /usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14: 09:19.397712Z 0 [错误] 无法将 datadir 设置为 /usr/local/mysql-5.7.14-osx10.11-x86_64/data/
2016-10-04T14:09:19.397776Z 0 [错误] 中止
2016-10 -04T14:09:19.397795Z 0 [Note] Binlog end
2016-10-04T14:09:19.397925Z 0 [Note] mysqld: 关机完成

  1. sudo chown -R _mysql:_mysql /usr/local/mysql-5.7.14-osx10.11-x86_64

注意上一个日志中的 MySQL 文件夹路径/usr/local,在我的例子中是mysql-5.7.14-osx10.11-x86_64,你必须根据你机器上提供的日志来更新它对 MySQL 目录的读取权限

  1. sudo /usr/local/mysql/support-files/mysql.server start

启动 MySQL
成功!

于 2016-10-04T14:26:14.283 回答
3

您缺少创建 /var/run/mysqld 目录的权限。所以请创建并授予以下权限。

  • mkdir -p /var/run/mysqld
  • chown mysql:mysql /var/run/mysqld
于 2018-10-30T11:56:10.667 回答
2

您可以首先检查服务是否正在运行,使用:

ps ax | grep mysql

我得到了这样的回应:

6104 pts/0    S      0:00 /bin/sh /usr/bin/mysqld_safe
6431 pts/0    Sl     0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/m

没有响应意味着服务没有运行,所以这样做:

service  mysql start
于 2013-06-29T10:16:58.823 回答
2

就我而言,问题是我所有数据库中的页面损坏(检查 mysql 错误日志)。

我用强制 InnoDB Recovery解决了它。诀窍是编辑 /etc/mysql/my.cnf 并添加

innodb_force_recovery = 4

略低于

[mysqld]

然后重启mysql。现在检查一切正常后,再次删除线。

于 2013-09-19T13:52:49.733 回答
2

只需将您的/opt/lampp/etc/my.cnf文件复制到/etc/mysql/my.cnf.

在终端类型中:

mysql -u root

您将收到mysql>提示:

mysql> Update mysql.user set Password=PASSWORD('your_password') where user='root';

mysql> FLUSH PRIVILEGES;
于 2014-08-30T21:07:16.273 回答
2

安装mysql服务器:

sudo apt-get install mysql-server
enter password as root

登录:

mysql -u root -p root

这里是安装 MySQL 服务器时给出的-u user name-p password它会像对我一样有效。

于 2015-05-15T08:21:36.620 回答
2

对我来说 mysql 没有运行,所以我修复了它

sudo /etc/init.d/mysql start
于 2021-02-01T18:38:23.270 回答
2

我的服务器存储已满,这导致 Mysql 无法启动。从这里得到想法。增加 HD 并重新启动解决了该问题。

于 2018-12-30T11:10:55.573 回答
1

为防止发生此问题,您必须从命令行正常关闭服务器,而不是关闭服务器电源。

shutdown -h now

这将在关闭机器之前停止正在运行的服务。

基于 Centos,当你遇到这个问题时,另一种方法是移动 mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

重新启动服务会创建一个名为 mqsql.sock 的新条目

于 2013-12-19T11:29:42.097 回答
1

您在本地运行,这意味着您的客户端与您的服务器在同一台机器上运行。

确保您的 Unix 用户实际上可以访问/阅读/var/run/mysqld/mysqld.sock

ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock

如果没有,请咨询您的系统管理员或数据库管理员,以提供对这些目录的足够读取/执行访问权限,或将套接字文件移至其他位置。

于 2014-03-12T17:47:24.340 回答
1

我遇到过同样的问题。我找到了这个。

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

这是因为您mysqld在启动 MySQL 客户端之前没有运行守护程序。该文件/var/lib/mysql/mysql.sock将在运行 MySQL 的第一个实例时自动创建。

修理:

首先启动 MySQL 守护进程,然后键入mysql

/etc/init.d/mysqld start
mysql

更改 MySQL 根密码

默认情况下,MySQL 数据库的 root 密码为空。从安全的角度来看,将 MySQL 根密码更改为新密码是个好主意。

mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;

完成后,通过登录检查:

mysql -u root -p
Enter Password: <your new password>
于 2014-06-15T10:49:57.647 回答
1

我现在刚刚遇到这个问题并解决了。

尽管您安装了 mysql-server,但需要运行守护程序才能让客户端连接到它。

首先检查mysql服务器是否正在运行:

netstat -tap | grep mysql

您应该看到如下内容:

$ sudo netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*          LISTEN     6639/mysqld     

如果您没有运行服务器,请通过以下命令启动守护程序:

/etc/init.d/mysql restart

如果已安装,这应该可以解决您的问题。

于 2014-02-08T08:05:30.297 回答
1

如果您使用的是 Ubuntu,则可能是权限问题。

检查您的目录权限。在根组中是不够的,还要在 MySQL 写入的目录上使用chmod(例如,/var/run/mysqld/用于创建mysqld.pid文件)。

这对我很有帮助。

于 2013-10-05T10:25:36.557 回答
1

我无法解释,但在 kubuntu 12.04.2 之后

sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic

它开始起作用了

于 2013-03-18T08:51:41.667 回答
1

还要检查您的my.conf( /etc/mysql/my.cnf) 并查看绑定地址是否设置为 127.0.0.1。

如果不是,这可能会导致此问题。

于 2014-04-18T11:28:20.667 回答
1

这个答案与在具有少量 RAM 的机器上更新到 MySQL 5.6 有关

在我的 Debian 8 (Jessie) 上从 MySQL 5.5 升级到 5.6 时,我遇到了同样的问题。MySQL 没有启动(状态显示为活动/退出)并且简单地制作service mysql start不起作用,因为我从/var/logs/mysql/error.log日志文件中发现:

InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
Cannot allocate memory for the buffer pool

内存不够:我只有 256 MB 的 RAM。

在 MySQL 中有一个设置,performance_schema. 默认情况下,它在 MySQL 5.5 中是关闭的。

https://dev.mysql.com/doc/refman/5.5/en/performance-schema-startup-configuration.html

但是在 MySQL 5.6 中默认是打开的,只需在/etc/mysql/my.cnf文件中添加以下行并重新启动,它就可以工作。

performance_schema = off

警告:关闭此设置您可能会遇到性能问题,但我想在开发环境中不会有问题。

此外,这里有一篇文章可能有助于配置 MySQL 以使用最少的内存,配置 MySQL 以使用最少的内存(Web 存档链接,以防原始链接将来过期https://web.archive.org/web/20201112041608/ http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html)。

于 2015-06-17T11:38:48.853 回答
1

就我而言,我的问题是我试图从我的 linux 终端访问,而不是从我的带有 mysql 的 docker 容器访问。

于 2021-09-09T14:59:56.840 回答
1

对我来说是:

打开/etc/mysql/my.cnf/etc/my.cnf搜索“绑定地址”。它是127.0.0.1。我将它转换为 localhost,所以行结果应该是'bind-address = localhost'。

否则,您应该使用存在于 bind-address 指令中的 IP 地址运行 MySQL 服务器,即mysql -h 127.0.0.1.

于 2015-10-01T14:18:53.427 回答
1

就我而言,我无法访问 mysql,经过 3 天的研究,我找到了解决方案。这是完美的解决方案,因为我已经搜索过/var/run/mysqld/mysqld.sock,但没有找到该文件夹​​。您可以在 putty 上运行下面列出的命令。

sudo mkdir /var/run/mysqld/
sudo chown -R mysql:mysql /var/log/mysql
sudo mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --socket=/var/run/mysqld/mysqld.sock
sudo /etc/init.d/mysql restart

您将节省宝贵的时间。

于 2021-01-19T06:42:39.427 回答
1

就我而言,我的 mysql 数据文件夹中的文件已损坏

mv /var/lib/mysql /var/lib/mysql_old

所以当我有备份时,我将目录移动到“_old”,然后再次启动 docker。它使用干净的数据创建了一个新文件夹 mysql ,并且套接字工作。

于 2019-11-06T11:58:03.107 回答
1

我的服务器上的简单解决方案:在使用我的 MySQL 数据库迁移到新的 Debian 7 服务器后,我的主机文件中缺少第二个本地 IP 地址。添加这个解决了警告:127.0.1.1

echo -e "\n127.0.1.1       $(hostname)" >> /etc/hosts
于 2016-02-20T22:23:16.343 回答
1

安装 mysql-server 解决了这个问题

sudo apt-get install mysql-server
于 2020-03-13T13:06:18.267 回答
1

在 Ubuntu 18:10 Linode 1GB Ram 中,我遇到了这个错误。在检查 /var/log/mysql/error.log 之后,我遇到了这个:

[注意] InnoDB:innodb_empty_free_list_algorithm 已更改为 legacy,因为缓冲池大小较小。为了使用退避,将缓冲池至少增加到 20MB。

我将我的 linode 升级到 2GB 并使用 sudo mysql 重新启动了 mariadb。接下来 mysql_secure_admin 运行,但没有为用户设置 root 密码-as ususl unitl 将 root 用户更改为使用 mysql_native_password 插件。不确定,但似乎创建了 sock,但由于我的 VPS 内存不足,服务器关闭了。

于 2019-05-14T23:10:47.313 回答
1

如果您的服务器/数据库工作正常并且突然出现此问题,那么只需尝试重新启动您的数据库服务器。对于 Centos,我使用以下命令,并且我的问题“连接被拒绝”“无法通过套接字连接到本地 mysql”已修复

sudo systemctl start mysqld
于 2021-10-24T06:16:36.653 回答
0

您应该验证组的所有者/var/run/mysqld。如果不是mysql.mysql,请执行以下操作:

su root
chown mysql.mysql /var/run/mysqld
于 2014-02-25T12:30:48.680 回答
0
sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart

当我遇到这个问题时为我工作

于 2014-06-12T20:41:15.217 回答
0

我在 Ubuntu 上有这个,我发现,mysqld 的实例不止一个。

之前的似乎还没有完全停止,而新的已经开始了。运行“/etc/init.d/mysql stop”没有帮助,它总是返回“OK”,之后立即自动启动一个新实例:

        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28315
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28570
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28763
        ..... etc ...

幸运的是,下面的命令已经解决了这个问题:

    $ sudo service mysql stop
    mysql stop/waiting

    $ ps -ef | grep mysql
    29841 26858  0 10:59 pts/8    00:00:00 grep --color=auto mysql <--- IT's gone ! 

之后,我能够再次启动 mysql 并看到 mysql.sock 已成功创建。

于 2014-12-04T19:24:18.857 回答
0

我也遇到了这个问题,这些答案都没有帮助我。问题有所不同,但错误是由 OP 描述的。

我检查了 MySQL 的日志/var/log/mysql,我看到了这个:

150309  5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable   'lower_case_tables_names=1'

我打开了/etc/mysql/my.cnf文件并取消了该行的注释#。之后,我能够连接到数据库。

老实说,我不知道问题出在哪里。由于维护,linode服务器计划重新启动,并且这个错误突然出现。

于 2015-03-09T02:41:33.897 回答
0

您是否检查过 LAMPP 是否正在运行?

sudo bash <path>/lampp start

对我来说,路径是

sudo bash /opt/lampp/lampp start
于 2014-04-23T16:16:53.160 回答
0

我通过从我/etc/mysql/my.confmysqld部分([mysqld])中删除这一行来解决这个问题:

default-character-set=utf8

重新启动,它工作正常。

于 2013-07-29T09:40:16.897 回答
0

升级 MySQL 为我修复了它。在基于 RHEL 的服务器上,只需运行:

sudo yum upgrade mysql-server
于 2014-03-13T22:36:19.477 回答
0

可能是配置文件的问题。我遇到了类似的问题,我在网上找不到解决方案。我注意到我有两个my.cnf文件,一个/etc/mysql/etc. 请按照以下步骤操作:

  1. 使用 .检查my.cnf计算机上的文件locate my.cnf

  2. 如果有两个条目,即/etc/my.cnfand /etc/mysql/my.cnf,则重命名/etc/mysql/my.cnf为其他内容,例如/etc/mysql/my.cnf.old

尝试再次运行 MySQL。

于 2014-05-06T10:29:45.793 回答
0

/etc/mysql/my.cnf中,检查最后一行是:

!includedir /etc/mysql/conf.d/
于 2015-02-26T12:44:19.750 回答
0

D如果您尝试更改存储数据库的目录,但在配置文件中输入了错误的目录(例如第二个驱动器中的拼写错误而不是准确的) ,也会发生此错误D_。它不会告诉您拼写错误目录不存在,而是告诉您您没有访问它的权限(导致您尝试更改拼写错误目录的权限,它会让您这样做)。因此,如果您在更改目录时遇到此错误,请仔细检查配置文件并确保您没有拼写错误。

于 2015-05-15T19:17:34.840 回答
0

我遇到了同样的问题,问题是 mysql-server 已安装但未运行。

试试, service mysql start 或者 systemctl start mysql

于 2021-08-29T14:22:03.473 回答
0

对我来说,在 CentOS 上,我必须mariadb像这样重新启动服务:

systemctl start mariadb.service
于 2021-05-04T07:56:47.953 回答
0

我的情况只是因为 .mysql 中/var/log/mysql定义的缺少文件夹而停止了 mysql /etc/mysql/my.cnf。创建它后,我可以启动 mysql 并照常运行。

于 2017-03-23T09:30:41.077 回答
0

解决方案 1 清除(如果要保留数据库,则删除)任何 mysql 包以重新重复安装:

sudo apt purge "mysql*"

- 自动删除包

sudo apt autoremove

-停止apparmor服务

sudo systemctl stop apparmor

- 让 apparmor 删除它的配置文件(我认为 stop 就足够了,但对我来说不是。使用 systemctl 它不起作用)

sudo service apparmor teardown

-重新安装mysql服务器

sudo apt install mysql-server

-安装apparmor-utils,在apparmor中为mysql创建一个配置文件,允许mysql运行

sudo apt install apparmor-utils

-检查mysql-server的状态(必须是Active(running))

sudo systemctl status mysql

- 在 apparmor 中为 mysql 生成配置文件

sudo aa-genprof mysql

- 在其他终端运行mysql(输入root密码)

mysql -u root -p

- 当 apparmor 在另一个终端中生成配置文件时,在 MySQL 中执行操作

mysql> 创建数据库 fooDB

-切换到另一个终端并按“s”(提示告诉你这是“扫描”)

- 对您认为合适的 apparmor 政策说“是”(我猜它们都适用于 mysql),说“是”按“a”表示允许

- 按“f”完成 Apparmor 配置文件

-重启apparmor服务

sudo systemctl start apparmor

-检查你是否仍然可以在其他终端使用mysql

mysql>退出

mysql -u root -p

如果一切顺利,您可以从命令行使用 mysql。

于 2019-11-19T00:47:42.567 回答
0

一个建议:总是问 MySQL 问题是什么。就我而言,less /var/log/mysql/error.log看看这个:

2015-07-28 12:01:48 23224 [ERROR] /usr/sbin/mysqld: unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2015-07-28 12:01:48 23224 [ERROR] Aborting

它在抱怨,因为我在 中取消了这个选项的注释my.cnf,但是在注释了这个选项之后,它开始没有任何问题。

于 2015-07-28T12:38:53.590 回答
0

我不得不说:

sudo /etc/init.d/mysqld start
于 2015-08-04T17:45:07.290 回答
0

这个答案很可能在这里被淹没,但也许有人不小心偶然发现了它。

在我的例子中,SELinux 阻止了用户/应用程序连接到 MySQL (MariaDB) 服务器套接字。在 RHEL 上,检查/var/log/audit/audit.log您是否启用了 SELinux。

于 2019-05-28T09:22:40.313 回答
0

就我而言,我缺少 mysql-server。因此,通过安装它后,sudo apt-get install mysql-server我能够再次连接。

于 2020-05-11T14:51:14.497 回答
0

我以前在 Kubuntu 20.04 中遇到过这个问题。它为我解决的方法是运行:

sudo dpkg --configure -a

原因是 dpkg 崩溃了。

我在其他时间遇到了问题,我通过运行解决了它:

sudo /etc/init.d/mysql start

认为服务已停止。

于 2021-03-07T05:02:34.160 回答
0

令人惊讶的是,此问题的另一个原因是删除了文件夹 /var/log/mariadb 这是我删除此日志文件夹后的情况。创建后,错误消失了。

于 2021-02-03T21:50:50.707 回答