ERROR 2002 (HY000):无法通过socket '/var/run/mysqld/mysqld.sock'(2)

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

ERROR 2002 (HY000):无法通过套接字连接本地MySQL服务器 ' / var /运行/ mysqld / mysqld。袜子”(2)< / p >

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

2464108 次浏览

MySQL服务器进程没有创建套接字,或者客户端在错误的地方寻找套接字。

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

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

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

看看是否与你在文章中提到的套接字位置相匹配。

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

试试这个:

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

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

telnet 127.0.0.1 3306

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

我也遇到过类似的问题。Mysql无法启动:

sudo service mysql start
start: Job failed to start

如果我禁用了apparmor:

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

问题解决了。问题是mysqld试图访问/运行/mysqld/mysqld。Sock,但是apparmor配置文件只允许/var/run/mysqld/mysqld. SockSock (/var/run是符号链接到/run的,所以它们实际上是相同的)。不确定为什么mysqld不使用var路径,因为这是在所有配置文件中设置的,但你可以通过在/etc/ apparor .d/usr.sbin.mysqld中添加以下内容来解决这个问题

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,

我尝试了以下步骤:

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

这对我很有效。

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

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

我曾经遇到过这个问题,并通过安装mysql-server来解决它,所以请确保您安装了mysql-server,而不是mysql-client或其他东西。

这个错误意味着文件/var/run/mysqld/mysqld.sock不存在,如果你没有安装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中,套接字文件配置可能是/tmp/mysql.sock,在/etc/mysql/my.cnf中,套接字文件配置可能是/var/run/mysqld/mysqld.sock。所以,删除或重命名/etc/mysql/my.cnf,让mysql使用/etc/my.cnf,那么问题就可以解决了。

我不能解释,但在kubuntu 12.04.2之后

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

它开始起作用了

在我的情况下,它是磁盘已满,mysqld不能再启动。

尝试重新启动mysql服务。

> service mysql restart

> service mysql stop


> service mysql start

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

检查磁盘空间

> df -h

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

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

我解决了这个问题,从我的/etc/mysql/my.confmysqld节([mysqld]):

default-character-set=utf8

重新启动,它可以正常工作。

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

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

innodb_force_recovery = 4

略低于

[mysqld]
然后重新启动mysql。 现在在检查一切工作正常后,再次删除该行

如果你使用Ubuntu,这可能是特权的问题。

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

这对我很有帮助。

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

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

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

否则,尝试使用命令:

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

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

为了防止出现这个问题,您必须从命令行优雅地关闭服务器,而不是直接下电服务器。

shutdown -h now

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

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

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


service mysqld start

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

在我的例子中,默认端口3306正在被其他进程使用,因此它没有启动。在我停止其他服务并执行sudo service mysql start之后,它工作得很好。顺便说一句,你可以使用sudo lsof -Pn -iTCP:3306之类的东西来查看谁可能正在使用这个端口。

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

sudo service mysql restart

这对我很管用。

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

尽管您安装了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

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

我也有同样的问题。我找了半天也没找到答案。

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

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

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

我通过执行以下命令修复了这个问题:

mysql.server start

如果你在mac上使用brew安装mysql,只需使用:

brew services start mysql

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

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

如果不是,请与系统管理员或数据库管理员检查,以提供对这些目录的足够的读/执行访问,或将套接字文件移到其他位置。

升级MySQL为我解决了这个问题。在基于rhel的服务器上,只需运行:

sudo yum upgrade mysql-server

我认为当你得到错误的时候

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

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

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

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

我打赌它会110%有效。

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

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

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

sudo bash <path>/lampp start

对我来说,路径就是

sudo bash /opt/lampp/lampp start

可能是配置文件有问题。我也遇到过类似的问题,但我在网上找不到解决方案。我注意到我有两个my.cnf文件,一个在/etc/mysql,另一个在/etc

.

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

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

尝试再次运行MySQL。

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

sudo chmod 755 /var/lib/mysql/mysql

我也有同样的问题,这个方法对我很有效。这样做之后,我就可以启动MySQL了。

sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart

当我有这个问题的时候

在我的例子中,它通过做一些R&D来起作用:

我能够连接到MySQL使用

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

但是它不能与mysql -u root -p一起工作。

我没有在my.cnf中找到任何bind-address。所以我在my.cnf中注释了参数socket=/var/lib/mysql/mysqld.sock,这导致我登录时出现问题。

重新启动服务后,一切正常:

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)

我也有同样的问题。我找到了这个。

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

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

修复:

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

/etc/init.d/mysqld start
mysql

修改MySQL Root密码

默认情况下,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>

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

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

ps -ef | grep mysql
kill [the id]

然后我再次启动服务器:

sudo /etc/init.d/mysql restart

但是start也可以:

sudo /etc/init.d/mysql start

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

Ubuntu 14.04 (Trusty Tahr)也是如此。

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

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

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

相反,把它改为:

/var/run/mysqld/mysqld.sock

只需复制/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;

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

所以你必须开始:

sudo service mysql start

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

apt-get remove --purge mysql\*

然后# EYZ0:

apt-get install mysql-server mysql-client

这对我来说很有效,数据被保存了下来。

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

apt-get install php5-fpm php5-mysql

打开终端,输入:

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

这对我很管用。

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

以下是对我有效的方法:

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

这将创建一个链接。

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

!includedir /etc/mysql/conf.d/

我也有这个问题,但这些答案都帮不了我。问题是不同的,但错误是由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服务器计划重新启动,这个错误突然出现。

安装mysql服务器:

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

登录:

mysql -u root -p root

这里-u user name-p password是在安装MySQL服务器时给出的。它会起作用,就像它对我起作用一样。

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

这个答案与在内存较小的机器上更新到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)。

一个建议:总是问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中取消了该选项的注释,但在注释该选项后,它启动时没有任何问题。

我不得不说:

sudo /etc/init.d/mysqld start

我只是在不得不重新启动生产服务器后遇到了同样的问题。我正在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. 一旦完成了“2”,通过输入service mysql restart/etc/init.d/mysql restart重新启动MySQL服务。

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

mysqld stop
mysql.server start

对我来说是:

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

而不是使用localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

使用127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(注意,-p和mpassword之间没有空格)

享受:)

如果你正在使用Amazon EC2,并且你在实例上有这个问题,那么你只需要做:

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2没有安装服务器(只安装了客户端),因此在这种情况下,您需要在实例上安装服务器,然后尝试

 mysql -u root -p

来检验这是否有效。

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


重置密码

遵循以下步骤(如果你真的忘记了密码,这可能会有帮助,你可以随时尝试,即使你现在没有这种情况):

  1. < p > # EYZ0停止

    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. 输入新密码,再次享受您的服务器,就像什么都没有发生一样

这是从重置MySQL根密码中截取的。

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

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

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

在Ubuntu上:

sudo apt-get update
sudo apt-get upgrade

CentOS:

sudo yum update

尝试重新启动服务器

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

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

  1. # EYZ0

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

mysqld:不能更改目录为 “/ usr /地方/ mysql-5.7.14-osx10.11-x86_64 /数据/(错误码:13 -权限被拒绝)2016-10-04T14:09:19.392581Z 0[警告]时间戳 不推荐使用隐式默认值。请使用 ——explicit_defaults_for_timestamp服务器选项(更多细节请参阅文档)。2016-10-04T14:09:19.392847Z 0[警告]不安全 configuration for——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 /数据/ Sudharshan。降低测试
2016-10-04T14:09:19.397597Z 0[警告]无法创建测试文件 /usr/local/mysql-5.7.14-osx10.11-x86_64 /数据/ Sudharshan。降低测试
2016-10-04T14:09:19.397712Z 0 [ERROR] set datadir to失败 /usr/local/mysql-5.7.14-osx10.11-x86_64 /数据/
2016-10-04T14:09:19.397776Z 0 [ERROR]中止
2016 - 10 - 04 - t14:09:19.397795z 0[注]Binlog
结束 2016-10-04T14:09:19.397925Z 0[注]mysqld: Shutdown complete

  1. # EYZ0

注意,在之前的日志中MySQL文件夹的路径是< em > / usr /当地< / em >,在我的例子中是< em > mysql-5.7.14-osx10.11-x86_64 < / em >,你必须在你的机器上设置根据你得到的日志更新它来为MySQL目录提供读访问

  1. # EYZ0

Starting MySQL
. 成功!< / p >

现在有用了……

我遵循教程在Mac OS X上使用Homebrew安装MariaDB 10.1.16 来解决这个问题。

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

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

在我的情况下,似乎我不能真正杀死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:我在更新根密码时遇到了麻烦,似乎是“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

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

service mysql restart
service mysql reload

作为root用户

我找到了解决办法

发射前< em > < / em >命令:mysql_secure_installation

  • 步骤1:sudo systemctl stop mariadb
  • 第二步:sudo systemctl start mariadb
  • 第三步:mysql_secure_installation

然后它会问根密码,你可以简单地新闻 < em > < / em >输入,并设置你的新根密码。

对于CentOS Linux release 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

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

# EYZ0

而且

# EYZ0

就是这样。

我也面临着同样的问题,如果你的mysql server默认不运行,它会在一些秒后再次停止,所以你再次运行($ sudo service mysql start)命令,如果知道,你可以更改。

对于那个use命令

$ sudo service mysql start

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

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

现在你有了数据库

您缺少创建/var/run/mysqld目录的权限。所以请创建和

.

.
  • Mkdir -p /var/run/mysqld
  • Chown mysql:mysql /var/run/mysqld

我的服务器存储空间已满,导致Mysql无法启动。从在这里得到的想法。增加高清和重新启动修复了这个问题。

在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,但是没有为user-as ususl设置根密码,直到更改根用户使用mysql_native_password插件。 不确定,但似乎袜子是创建的,但服务器由于我的VPS内存不足而关闭

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

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

首先,尝试重新启动它

停止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替换php7.4。X或php8.0.12或更高版本

❗️小心,如果没有保存,您将丢失数据。如果可能的话,请备份您的数据。

在我的情况下,我有文件损坏在我的mysql数据文件夹

Mv /var/lib/mysql /var/lib/mysql_old

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

< p >解决方案1 清除(或删除,如果你想保留数据库)任何mysql包,重新重复安装
sudo apt purge "mysql*"

-Autoremove包

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中执行-do操作

创建数据库中的食物

-切换到另一个终端,按“s”(提示说这是“扫描”)

-对你认为合适的apparmor的政策说“是”(我猜所有的mysql),说“是”按“a”允许

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

-重启apparmor服务

sudo systemctl start apparmor

检查一下你是否可以在其他终端上使用mysql

mysql >退出

mysql -u root -p

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

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

sudo systemctl start mysql

sudo systemctl restart mysql

似乎你的MYSQL停止了。使用下面的命令重新启动MySQL

sudo service mysql start

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

sudo apt-get install mysql-server

在我的情况下,我错过了mysql服务器。所以在通过sudo apt-get install mysql-server安装后,我能够再次连接。

在我的情况下,我不能访问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

你会节省宝贵的时间。

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

sudo /etc/init.d/mysql start
令人惊讶的是,这个问题的另一个原因是删除了/var/log/mariadb文件夹 这是我的情况后,我删除了这个日志文件夹。

.创建后错误消失

我以前在Kubuntu 20.04中遇到过这个问题。我的解决办法就是跑:

sudo dpkg --configure -a

原因是dpkg崩溃了。

我以前也遇到过这个问题,我通过跑步解决了它:

sudo /etc/init.d/mysql start

我想服务停止了。

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

systemctl start mariadb.service

我也遇到了同样的问题,问题是mysql服务器已经安装,但它没有运行。

< p >尝试, 启动mysql服务 或 Systemctl start mysql

在我的情况下,我的问题是,我试图从我的linux终端访问,而不是从我的docker容器与mysql。

如果您的服务器/db工作正常,突然出现这个问题,那么只需重新启动您的db服务器。 对于Centos,我使用以下命令和我的问题“连接拒绝”“无法通过套接字连接到本地mysql”固定

sudo systemctl start mysqld

您可以查看/var/log/mysql.log日志

对我来说,这不是工作的BCS的错误:

无法为缓冲池错误分配内存

我在/etc/my.cnf中添加了这一行,并启动了服务:

通过innodb_buffer_pool_size = 100

发生此问题是因为MySQL服务器未启动。使用以下命令检查活动状态。

service mysql status

如果active状态为stop,请尝试启动MySQL服务器。

service mysql start

我在mariadb的termux中遇到了这个问题,它解决了我的问题是以下两行命令-

# EYZ0

# EYZ0

我也遇到过同样的问题。对我来说,我加载了Garuda Linux的快照,但我没有恢复它,因此得到了上述错误。

解决这个问题的方法是恢复快照。一旦完成,一切都会好起来的。