首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Ubuntu 下重置 MySQL Root 密碼圖文教程

     編輯:MySQL 資料庫相關知識

適用場景

  • 忘記 root 密碼
  • 全新安裝後未設密碼
  • 密碼策略導致無法登入

操作步驟(MySQL 5.5+ / Ubuntu 12.04+ 驗證)

1. 停止 MySQL 服務

sudo service mysql stop

2. 啟動跳過權限表模式

sudo mysqld --user=mysql --skip-grant-tables --skip-networking &
# 關鍵參數:
# --skip-grant-tables  不載入權限表,允許無密碼登入
# --skip-networking    禁止網絡連接,僅本地 socket,安全隔離
# &                    後台運行,返回 PID(如 3591)

3. 無密碼登入並修改密碼

mysql -u root mysql
# 進入 mysql 系統庫
UPDATE user SET Password=PASSWORD('mynewpasswd') WHERE user='root';
FLUSH PRIVILEGES;
QUIT;

注意:MySQL 5.7+ 密碼列改為 authentication_string,語句需調整:
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE user='root';

4. 終止臨時進程並正常啟動

sudo kill 3591   # 替換為實際 PID
sudo service mysql start
mysql -u root -pmynewpasswd   # 驗證新密碼

常見坑點與解決

現象原因解決
Access denied 即使進入 mysql 庫MySQL 8.0+ 默認 caching_sha2_password 插件臨時用 --skip-grant-tables 並改用 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass';
mysqld: Can't create test file數據目錄權限錯誤chown -R mysql:mysql /var/lib/mysql
啟動報 Address already in use舊進程未完全退出pkill -9 mysqld 後重試

安全建議

  1. 修改密碼後立即執行 mysql_secure_installation
  2. 生產環境禁用 --skip-grant-tables 歷史記錄(history -c)
  3. 使用強密碼策略:VALIDATE_PASSWORD 插件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved