我嘗試運行的幾個命令出現以下錯誤,並且每次提示時我都不知道密碼。 (注意:我剛剛將我的 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 root -h localhost -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 --重新安裝 mysql-server
- 須藤apt更新
- sudo apt 升級
- sudo apt install mysql 伺服器
- sudo apt install 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 為空/已刪除
重新安裝