Mysql 错误“无法通过套接字‘/var/run/mysqld/mysqld.sock’(13) 连接到本地 MySQL 服务器”并且我也无法重置 root 密码

Mysql 错误“无法通过套接字‘/var/run/mysqld/mysqld.sock’(13) 连接到本地 MySQL 服务器”并且我也无法重置 root 密码

当我尝试运行几个命令时,我得到了以下错误,并且每当我提示输入密码时我都不知道密码。(注意:我刚刚将我的 ubuntu 发行版更新到 22.04,但我之前没有设置密码/“root”的密码是空的)。

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)'

从大多数帖子来看,常见问题是 mysql-server 实际上没有运行。但我可以看到我的正在运行,并且sudo service mysql status以下命令返回...

$ cat /etc/services | grep 3306
    mysql           3306/tcp
$  netstat -tulpn | grep 3306
    (No info could be read for "-p": geteuid()=1000 but you should be root.)
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -
    tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN  

这些命令给出了“无法连接...”错误:

  • mysqladmin -u root -p 关机
  • mysqladmin 版本
  • mysql
  • mysql -u 根目录
  • mysql -u 根目录 -h 本地主机 -p

运行mysql -u root -h 127.0.0.1 -p似乎有效,因为它会提示我输入密码,但我以前的密码都不起作用,而且我无法运行sudo mysqld_safe --skip-grant-tables &sudo mysqld_safe --skip-grant-tables --skip-networking &成功重置根密码。

我也跑过...

附加随机信息:

我也知道/var/run/mysqld/mysqld.sock在该过程的早期确实存在(我现在在那个目录中只有 mysql.bak),但是当我运行时sudo find / -type s,它只返回一堆带有“权限被拒绝”的文件/目录(我假设是因为我在 WSL 中),所以我还没有检查某处是否还有另一个 mysql.sock。

我也知道这/etc/mysql/my.cnf只是指向 -> /etc/alternatives/my.cnf,其中只有以下内容(除了一些评论):

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

答案1

  1. 停止 MySQL(sudo systemctl stop mysql)
  2. 验证进程已停止
  3. 使用 --skip-grant-tables 启动 MySQL

或者清除 mysql:sudo apt purge mariadb-server mysql-common 验证 /etc/mysql 和 /var/lib/mysql 为空/已删除

重新安装

相关内容