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

时间:2012-07-25 20:10:15

标签: mysql phpmyadmin lamp forgot-password mysql-error-2002

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

  

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

我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。

82 个答案:

答案 0 :(得分:212)

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

该错误表示文件/var/run/mysqld/mysqld.sock不存在,如果您未安装mysql-server,则该文件将不存在。但是如果mysql-server已经安装并且正在运行,那么您需要检查配置文件。

配置文件是:

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

/etc/my.cnf中,套接字文件配置可能是/tmp/mysql.sock,而/etc/mysql/my.cnf中的套接字文件配置可能是/var/run/mysqld/mysqld.sock。因此,删除或重命名/etc/mysql/my.cnf,让mysql使用/etc/my.cnf,然后问题就可以解决了。

答案 1 :(得分:172)

试试这个:

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

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

telnet 127.0.0.1 3306 

my.cnf文件/etc/somewhere中的错误配置可能只是错误配置(取决于Linux distribution)。

答案 2 :(得分:103)

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

重设密码

按照以下步骤操作(如果您真的忘记了密码,可以提供帮助,即使您目前不在这种情况下也可以随时尝试使用密码):

  1. 停止class A < B::C::D include B attr_accessor :d def initialize @msg = 'Hello world' super end end

    mysql

    或其他分销版本:

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

    sudo /etc/init.d/mysqld stop
    
  3. 使用root

    登录MySQL
    sudo mysqld_safe --skip-grant-tables &
    
  4. 选择要使用的MySQL数据库

    mysql -uroot
    
  5. 重设密码

    use mysql;
    
  6. 冲洗权限

    update user set password=PASSWORD("mynewpassword") where User='root';
    
  7. 重启服务器

    flush privileges;
    
  8. 再次停止并启动服务器

    Ubuntu和Debian:

    quit
    

    在CentOS,Fedora和RHEL上:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start
    
  9. 使用新密码登录

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
    
  10. 输入新密码并再次享受您的服务器

  11. 这取自 Reset a MySQL root password

    更新来自@ Daniel的评论:

    在MySQL 5.7中,mysql.user表字段中的密码字段已被删除,现在字段名称为&#39; authentication_string&#39;,因此步骤5应为:

    mysql -u root -p
    

答案 3 :(得分:61)

我尝试了以下步骤:

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

答案 4 :(得分:36)

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

mysql.server start

如果您使用的是mac并使用brew来安装mysql,只需使用:

brew services start mysql

答案 5 :(得分:30)

我有类似的问题。 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,

答案 6 :(得分:27)

我通过杀死mysql进程解决了这个问题:

ps -ef | grep mysql
kill [the id]

然后我再次启动服务器:

sudo /etc/init.d/mysql restart

start也有效:

sudo /etc/init.d/mysql start

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

答案 7 :(得分:26)

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

尝试重启mysql服务。

  

service mysql restart

  

服务mysql停止

     

service mysql start

如果它无法识别“停止”命令,那么肯定是磁盘空间。你应该在分区mysql中分配一些空间,或者让磁盘变大。

使用

检查磁盘空间
  

df -h

答案 8 :(得分:19)

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

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

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

这样的行
socket = /var/run/mysqld/mysqld.sock

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

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

答案 9 :(得分:19)

我刚刚重启生产服务器后遇到了同样的问题。我在DigitalOcean Droplet上运行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. 完成“2”后,输入service mysql restart/etc/init.d/mysql restart重启MySQL服务。

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

答案 10 :(得分:15)

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

答案 11 :(得分:11)

这对我有用:

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

这会创建一个链接。

答案 12 :(得分:11)

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

请尝试使用以下命令:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h for host 127.0.0.1,即localhost

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

答案 13 :(得分:10)

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

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2没有安装服务器(只安装了客户端),因此如果需要在您的实例上安装,请尝试

 mysql -u root -p

检查是否有效。

答案 14 :(得分:9)

而不是使用localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

使用127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

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

享受:)

答案 15 :(得分:9)

我想每当你收到错误

  

ERROR 2002(HY000):无法通过socket&#39; /var/lib/mysql/mysql.sock'连接到本地MySQL服务器;

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

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

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

我敢打赌,这将有效率达到110%。

答案 16 :(得分:8)

确保您拥有重要数据库的备份,然后尝试卸载MySQL 相关内容:

apt-get remove --purge mysql\*

然后再次安装

apt-get install mysql-server mysql-client

这对我有用,数据保存。

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

apt-get install php5-fpm php5-mysql

答案 17 :(得分:7)

我也遇到了这个问题,但我刚刚做了:

sudo service mysql restart 

它对我有用。

答案 18 :(得分:7)

如果您的Linux计算机上安装了XAMPP,请尝试将my.cnf文件从/opt/lampp/etc/my.cnf复制到/etc/my.cnf

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

答案 19 :(得分:6)

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

sudo service mysql start

答案 20 :(得分:6)

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

答案 21 :(得分:6)

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

答案 22 :(得分:6)

我找到了解决方案

发布前 命令:mysql_secure_installation

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

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

答案 23 :(得分:6)

在我的情况下,通过做一些R&amp; D:

我可以使用

连接到MySQL
root-debian#mysql -h 127.0.0.1 -u root -p

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

我在 my.cnf 中找不到任何bind-address。所以我在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)

答案 24 :(得分:5)

mysqld stop
mysql.server start

答案 25 :(得分:5)

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

答案 26 :(得分: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软件包。重要的是客户端和服务器版本号在任何一种情况下都匹配。

这对我有用。

答案 27 :(得分:5)

我有同样的问题。如果您的MySQL服务被拒绝,有时会发生这种情况。

所以你必须开始它:

sudo service mysql start

答案 28 :(得分:5)

就我而言,当我运行

时,似乎我真的无法杀死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 passwod,看起来像“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";

这会创建没有密码的用户“超级”,然后您可以使用mysql -u super

进行连接

答案 29 :(得分:5)

我通过重启mysql解决了这个问题

/etc/init.d/mysql stop

/etc/init.d/mysql start

就是这样。

答案 30 :(得分:5)

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

service mysql restart
service mysql reload
以root用户身份

答案 31 :(得分:5)

如果您的mysql server默认未运行,也会遇到同样的问题,它会在几秒钟后再次停止,因此您可以再次运行($ sudo service mysql start)命令,如果知道的话,可以更改。 / p>

该使用命令

$ sudo service mysql start   

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

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

现在您有了数据库

答案 32 :(得分:4)

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

sudo chmod 755 /var/lib/mysql/mysql

我遇到了同样的问题,这对我有用。在这之后,我能够启动MySQL。

答案 33 :(得分:4)

现在有效......

我已按照教程 Installing MariaDB 10.1.16 on Mac OS X with Homebrew 来解决此问题。

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

答案 34 :(得分:4)

在Ubuntu 14.04(Trusty Tahr)上也一样。

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

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

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

相反,请将其更改为:

/var/run/mysqld/mysqld.sock

答案 35 :(得分:4)

我遇到了同样的问题。经过多次搜索,我没有找到任何答案。

最后,我检查了/tmp目录,其权限是755.我将其权限更改为777,mysqld启动良好,没有任何问题。

答案 36 :(得分:2)

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

在Ubuntu上:

sudo apt-get update
sudo apt-get upgrade

在CentOS上:

sudo yum update

答案 37 :(得分:2)

在我的情况下,问题是我的所有数据库中的页面损坏(检查mysql错误日志)。

我用Forcing InnoDB Recovery解决了这个问题。诀窍是编辑/etc/mysql/my.cnf并添加

innodb_force_recovery = 4

正好在

之下
[mysqld]

然后重启mysql。 检查一切正常后,再次删除该行。

答案 38 :(得分: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

答案 39 :(得分:2)

安装mysql-server:

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

登录:

mysql -u root -p root

安装MySQL服务器时给出了-u user name-p password。它会起作用,因为它对我有用。

答案 40 :(得分:2)

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

  • mkdir -p / var / run / mysqld
  • 小丑mysql:mysql / var / run / mysqld

答案 41 :(得分:2)

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

  

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

它开始起作用了

答案 42 :(得分:2)

For CentOS Linux release 7.3
The mysql.sock file path is /var/lib/mysql/mysql.sock
Edit /etc/my.cnf file and put below entry
This will solve your problem.

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

重启服务后

service mysql restart

答案 43 :(得分: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;

答案 44 :(得分:2)

我的服务器存储已满,这阻止了Mysql的启动。从here得到了这个想法。增加HD并重新启动即可解决此问题。

答案 45 :(得分:1)

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

echo -e "\n127.0.1.1       $(hostname)" >> /etc/hosts

答案 46 :(得分:1)

尝试使用

重新启动服务器
sudo /usr/local/mysql/support-files/mysql.server start

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

  1. mysqld
  2. 您将看到以下日志。请注意这里MySQL目录的突出显示部分

      

    mysqld:无法将dir更改为   &#39; /usr/local/mysql-5.7.14-osx10.11-x86_64/data /&#39; (错误代码:13 - 权限被拒)2016-10-04T14:09: 19.392581Z 0 [警告] TIMESTAMP   隐含DEFAULT值已弃用。请用   --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 [ERROR]无法将datadir设置为   /usr/local/mysql-5.7.14-osx10.11-x86_64/data/
      2016-10-04T14:09:19.397776Z 0 [ERROR]中止   
      2016-10-04T14:09:19.397795Z 0 [注意] Binlog结束
      2016-10-04T14:09:19.397925Z 0 [注意] mysqld:关闭完成

    1. sudo chown -R _mysql:_mysql /usr/local/mysql-5.7.14-osx10.11-x86_64
    2. 请注意上一个日志中的MySQL文件夹路径 / usr / local ,在我的情况下,它是 mysql-5.7.14- osx10.11-x86_64 ,您必须 根据计算机上的日志 对其进行更新,以提供读访问权限到MySQL目录

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

        启动MySQL
          SUCCESS!

答案 47 :(得分:1)

对我而言:

打开/etc/mysql/my.cnf/etc/my.cnf并搜索“bind-address”。那是127.0.0.1。我将它转换为localhost,因此行结果应为'bind-address = localhost'。

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

答案 48 :(得分: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

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

答案 49 :(得分:1)

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

  

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

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

答案 50 :(得分: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配置为使用最小内存 Configuring MySQL to use minimal memory

答案 51 :(得分: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

如果没有,请咨询系统管理员或database administrator以提供对这些目录的充分读/写访问权限,或将套接字文件移到其他位置。

答案 52 :(得分:1)

安装mysql-server解决了该问题

sudo apt-get install mysql-server

答案 53 :(得分:1)

同时检查您的my.conf/etc/mysql/my.cnf),看看bind-address是否设置为127.0.0.1。

如果没有,这可能会导致此问题。

答案 54 :(得分:1)

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

shutdown -h now

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

基于Centos,遇到此问题时再次备份它的另一种方法是移动mysql.sock:

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

service mysqld start

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

的新条目

答案 55 :(得分:1)

如果你正在使用Ubuntu,那可能是一个特权问题。

检查您的目录权限。它不足以在根组中,也在MySQL编写的目录上使用chmod(例如,/var/run/mysqld/用于创建mysqld.pid文件。 / p>

这对我有帮助。

答案 56 :(得分:1)

我有同样的问题。我发现了这个。

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

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

修复:

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

/etc/init.d/mysqld start
mysql

更改MySQL Root密码

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

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>

答案 57 :(得分:1)

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

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

您将节省宝贵的时间。

答案 58 :(得分:0)

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

[注意] InnoDB:由于缓冲池较小,innodb_empty_free_list_algorithm已更改为旧版。为了使用退避,请将缓冲池至少增加到20MB。

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

答案 59 :(得分:0)

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

sudo dpkg --configure -a

原因是dpkg崩溃了。

我其他时候遇到了这个问题,我通过运行解决了:

sudo /etc/init.d/mysql start

认为服务已停止。

答案 60 :(得分:0)

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

答案 61 :(得分:0)

对我来说 mysql 没有运行,所以我用

修复了它
sudo /etc/init.d/mysql start

答案 62 :(得分:0)

就我而言,我缺少mysql服务器。因此,通过sudo apt-get install mysql-server安装它之后,我可以再次连接。

答案 63 :(得分:0)

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

systemctl start mariadb.service

答案 64 :(得分:0)

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

sudo systemctl start mysql

sudo systemctl restart mysql

答案 65 :(得分:0)

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

sudo apt purge "mysql*"

-自动删除软件包

sudo apt autoremove

-停止apparmor服务

sudo systemctl stop apparmor

-使apparmor删除其配置文件(我以为停止就足够了,但对我而言却不是。使用systemctl则行不通)

sudo service apparmor teardown

-重新安装mysql-server

sudo apt install mysql-server

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

sudo apt install apparmor-utils

-检查mysql服务器的状态(必须处于活动(运行)状态)

sudo systemctl status mysql

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

sudo aa-genprof mysql

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

mysql -u root -p

-在apparmor在另一个终端中生成配置文件的同时在MySQL中进行操作

  

mysql>创建数据库fooDB

-Swith切换至另一个终端,然后按“ s”(提示提示您是“扫描”)

-对您认为合适的apparmor的策略说是(我想所有策略都适用于mysql),说“是”,按“ a”表示允许

-按“ f”完成装甲配置文件

-重新启动apparmor服务

sudo systemctl start apparmor

-检查是否仍然可以在另一个终端上使用mysql

  

mysql>退出

mysql -u root -p

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

答案 66 :(得分:0)

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

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

答案 67 :(得分:0)

我的情况只是因为/var/log/mysql中定义的/etc/mysql/my.cnf文件夹丢失而导致mysql停止了。创建它之后,我可以启动mysql并像往常一样运行。

答案 68 :(得分: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中取消注释了此选项,但在评论此选项后,它开始没有任何问题。

答案 69 :(得分:0)

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

答案 70 :(得分:0)

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

我在/var/log/mysql中查看了MySQL的日志,我看到了:

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

我打开了/etc/mysql/my.cnf文件,并对该行#进行了评论。在这之后,我能够连接到数据库。

老实说,我不知道问题是什么。由于维护,linode服务器计划重新启动,并且此错误无处不在。

答案 71 :(得分:0)

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

!includedir /etc/mysql/conf.d/

答案 72 :(得分: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已成功创建。

答案 73 :(得分:0)

sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart
当我遇到这个问题时

为我工作

答案 74 :(得分:0)

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

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

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

  3. 尝试再次运行MySQL。

答案 75 :(得分:0)

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

sudo bash <path>/lampp start

对我来说,路径是

sudo bash /opt/lampp/lampp start

答案 76 :(得分:0)

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

sudo yum upgrade mysql-server

答案 77 :(得分:0)

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

su root
chown mysql.mysql /var/run/mysqld

答案 78 :(得分:0)

我通过从/etc/mysql/my.conf部分([mysqld])中的mysqld删除此行来解决此问题:

default-character-set=utf8

重启并且工作正常。

答案 79 :(得分:-1)

我不得不说:

sudo /etc/init.d/mysqld start

答案 80 :(得分:-1)

完全卸载MySQL

sudo apt-get remove --purge mysql\*

重新安装

sudo apt-get install mysql-server mysql-client

测试它是否运行

sudo mysql

sudo apt-get install php7.2-fpm php7.2-mysql

答案 81 :(得分:-4)

执行命令

sudo reboot

为我工作。