it-swarm.cn

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

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

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

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

356
sushmit sarmah

我曾经遇到过这个问题并通过安装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,那么问题可能就解决了。

212
towry

试试这个:

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

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

telnet 127.0.0.1 3306 

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

172
Yannick

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


重置密码

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

  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 -uroot
    
  4. 选择要使用的MySQL数据库

    use mysql;
    
  5. 重置密码

    update user set password=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
    
  9. 使用新密码登录

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

这取自重置MySQL root密码


更新来自@ Daniel的评论如下:

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

 update user set authentication_string=password('mynewpassword') where user='root';
101
davejal

我尝试了以下步骤:

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

它对我有用。

61
rshahriar

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

mysql.server start

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

brew services start mysql
36
sbodanis

我遇到了类似的问题。 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,
29
dkoes

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

ps -ef | grep mysql
kill [the id]

然后我再次启动服务器:

Sudo /etc/init.d/mysql restart

start也可以:

Sudo /etc/init.d/mysql start

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

27
Wartari

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

尝试重启mysql服务。

service mysql restart

要么

服务mysql停止

服务mysql启动

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

检查磁盘空间

df -h

26
Martin Schultz

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

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

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

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

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

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

19
Wouter

在我不得不重新启动生产服务器之后,我刚刚遇到了同样的问题。我在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服务。

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

18
Rob

你的mysql服务器可能没有运行。通过在终端中键入mysql.server start确保它运行。

15
Moses Wasswa

这对我有用:

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

这会创建一个链接。

11
User

检查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的默认端口

11
Amit Girme

如果您正在使用 Amazon EC2 ,并且您在实例上遇到此问题,那么您只需要:

Sudo yum install mysql-server
Sudo service mysqld restart

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

 mysql -u root -p

检查是否有效。

10
Murtaza Kanchwala

我想每当你收到错误

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

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

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

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

我打赌它会110%起作用。

9
vikash kumar singh

而不是使用localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

使用127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

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

请享用 :)

9
mpinvidio

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

apt-get remove --purge mysql\*

然后 再次安装

apt-get install mysql-server mysql-client

这对我有用,数据保存。

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

apt-get install php5-fpm php5-mysql
8
user3162468

如果在Linux机器上安装了 _ xampp _ ,请尝试将my.cnf文件从/opt/lampp/etc/my.cnf复制到/etc/my.cnf

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

7
Toni Widiarto

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

Sudo service mysql restart 

它对我有用。

7
Kenny Ong

我发现了解决方案

在开火前 命令:mysql_secure_installation

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

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

6
sagar mahajan

在我的情况下,它通过做一些研发工作:

我可以使用连接到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进行了评论,这导致了登录问题。

重新启动服务后,它很好:

[email protected]:~# 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)
6
Swapna Kumar

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

6
Bhaskar

打开终端并输入:

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

这对我有用。

5
Akshay

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

5
Leandro Souza

在我的情况下,当我运行时,似乎我真的无法杀死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连接

5
Buksy

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

5
elmaazouz

在Debian服务器Jessie上,我的工作解决方案就是这样做

service mysql restart
service mysql reload

以root用户身份

5
Thomas Webber

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

所以你必须开始它:

Sudo service mysql start
5
Rahul Mohanraj

我也面临同样的问题,如果你的mysql server没有默认运行会发生它会在几秒后再次停止所以你再次运行($ Sudo service mysql start)命令如果知道就可以改变。

对于该使用命令

$ Sudo service mysql start   

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

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

现在你有了数据库

5
Roko
mysqld stop
mysql.server start
5
vimx

它现在有效......

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

但是别忘了杀死或卸载MariaDB的旧安装。

4
Hany Sakr

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

/etc/init.d/mysql stop

/etc/init.d/mysql start

而已。

4
Jazuly

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

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

4
shgnInc

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

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

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

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

相反,将其更改为:

/var/run/mysqld/mysqld.sock
4
Luca122131

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

Sudo chmod 755 /var/lib/mysql/mysql

我有同样的问题,这对我有用。这样做后我就能启动MySQL。

4
user3599321

我的服务器存储已满,这阻止了Mysql的启动。从 这里得到了主意 。增加高清和重新启动修复了问题。

2
Dawoodjee

您可以先检查服务是否正在运行,其中包括:

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
2
Amos Kosgei

只需将/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;
2
Sudarsan Rajagopalan

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

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

它开始起作用了

2
alsator

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

  • mkdir -p/var/run/mysqld
  • chown mysql:mysql/var/run/mysqld
2
Namjith Aravind

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

在Ubuntu上:

Sudo apt-get update
Sudo apt-get upgrade

在CentOS上:

Sudo yum update
2
mFlorin

安装mysql-server:

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

登录:

mysql -u root -p root

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

2
Mohit Singh

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

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

innodb_force_recovery = 4

略低于

[mysqld]

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

2
Michiel
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
2
Ishwar Chincholkar

这个答案与在具有少量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以使用最少的内存

1
dav

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

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

这对我很有帮助。

1
blackpanther

尝试使用重新启动服务器

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

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

  1. mysqldname__

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

mysqld:无法将dir更改为 '/usr/local/mysql-5.7.14-osx10.11-x86_64/data/' (错误代码:13 - 权限被拒绝)2016-10-04T14:09:19.392581 Z 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 /本地/ MySQL的-5.7.14-osx10.11-x86_64的/数据/ Sudharshan.lower测试
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

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

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

启动MySQL
成功!

1
Sudharshan

还要检查my.conf/etc/mysql/my.cnf)并查看bind-address是否设置为127.0.0.1。

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

1
BonifatiusK

对我来说是:

打开/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

1
Omar Alahmed

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

虽然您安装了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

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

1
user1527227

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

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

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

shutdown -h now

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

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

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

service mysqld start

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

1
Ali Hashemi

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

确保您的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

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

1
TVNshack

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

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>
1
user3742084
Sudo touch /var/lib/mysql/.force_upgrade
Sudo rcmysql restart

我有这个问题时为我工作

0
t0dbld

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

0
Michael

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

Sudo bash <path>/lampp start

对我来说,路径是

Sudo bash /opt/lampp/lampp start
0
thecheech

我也遇到了这个问题,这些答案都没有帮助我。问题不同,但错误是由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服务器计划重新启动,并且此错误无处不在。

0
Camauu

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

su root
chown mysql.mysql /var/run/mysqld
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

尝试再次运行MySQL。

0
enowman

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

0
ownking

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

Sudo yum upgrade mysql-server
0
sffc

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

default-character-set=utf8

重启,它工作正常。

0
aotero

我在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已成功创建。

0
Oleg Gryb

建议:总是问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中取消注释了这个选项,但在评论此选项后,它开始没有任何问题。

0
K-Gun

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

!includedir /etc/mysql/conf.d/
0
FS Karimi

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

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

0
Richlv

在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密码 - 因为ususl unitl将root用户更改为使用mysql_native_password插件。不确定,但似乎袜子已经创建,但是由于我的VPS内存不足导致服务器关闭。

0
uberdave