当我尝试运行几个命令时,我得到了以下错误,并且每当我提示输入密码时我都不知道密码。(注意:我刚刚将我的 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 &
成功重置根密码。
我也跑过...
- sudo apt-get install --reinstall mysql-server
- sudo apt 更新
- sudo apt 升级
- sudo apt 安装 mysql 服务器
- sudo apt 安装 mysql 客户端
- sudo usermod -d /var/lib/mysql/mysql
- sudo dpkg--configure-a
- 并遵循了这篇文章中前两个答案的建议:https://stackoverflow.com/questions/41984956/cant-reset-root-password-with-skip-grant-tables-on-ubuntu-16
- 并尝试按照以下指示卸载 MySQL这里
- 并尝试备份 sock 文件夹并按照建议恢复它这里
附加随机信息:
我也知道/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
- 停止 MySQL(sudo systemctl stop mysql)
- 验证进程已停止
- 使用 --skip-grant-tables 启动 MySQL
或者清除 mysql:sudo apt purge mariadb-server mysql-common 验证 /etc/mysql 和 /var/lib/mysql 为空/已删除
重新安装