首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Linux 下 Navicat 連接 MySQL 報錯 1045 解決方案:跳過權限表重置 root 密碼

     編輯:Java 綜合教學

錯誤現象

1045 - Access denied for user 'root'@'localhost' (using password: YES)

原因:用戶名或密碼錯誤,MySQL 拒絕連接。不想重裝數據庫時,需通過跳過權限驗證重置密碼。

適用環境

  • Linux 系統(CentOS/Ubuntu/Debian 等)
  • MySQL/MariaDB/Percona Server
  • 擁有系統 root/sudo 權限

操作步驟

1. 停止 MySQL 服務

# 系統服務管理方式可能不同,嘗試以下命令
/etc/init.d/mysql stop
# 或
/etc/init.d/mysqld stop
# 或 systemd
systemctl stop mysqld
# 確認進程已停
ps -ef | grep mysql

2. 啟動跳過權限表的 MySQL 實例

# 後台運行,輸出重定向到 /dev/null
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 &

# 若路徑不同,用 find 定位
find / -name mysqld_safe 2>/dev/null

關鍵參數:--skip-grant-tables 使 MySQL 啟動時不載入權限表,任意用戶無密碼可登錄。

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

# 登錄 mysql 命令行(無需密碼)
/usr/local/mysql/bin/mysql -u root mysql

# 修改 root 密碼(MySQL 5.7+ authentication_string 字段)
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE user='root';
FLUSH PRIVILEGES;
EXIT;

版本差異:

  • MySQL 5.6 及之前:UPDATE user SET password=PASSWORD('newpwd') WHERE user='root';
  • MySQL 5.7+:authentication_string 字段存儲加密密碼。
  • MariaDB 10.4+:可能使用 mysql.global_priv 表,建議用 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');。

4. 重啟 MySQL 正常模式

# 關閉跳過權限的實例
killall mysqld
# 或
pkill -9 mysqld

# 啟動正常服務
/etc/init.d/mysql start
# 或
systemctl start mysqld

5. 驗證新密碼

mysql -u root -p'new_password' -e "SELECT VERSION();"

安全加固建議

  1. 執行 mysql_secure_installation:移除匿名用戶、禁止 root 遠程登錄、刪除 test 庫、重新加載權限。
  2. 使用強密碼策略:validate_password 插件強制長度、大小寫、數字、特殊字符。
  3. 生產環境禁用 skip-grant-tables 參數,防止未授權訪問。
  4. 定期輪換 root 密碼,使用專用業務賬號、最小權限原則。

Windows 系統差異

Windows 下需編輯 my.ini 在 [mysqld] 區段添加 skip-grant-tables,重啟服務,修改密碼後移除該行再重啟。詳見《Navicat for MySQL 1045 錯誤如何解決 (Windows 版)》。

總結

Linux 下重置 MySQL root 密碼核心流程:停服務 → skip-grant-tables 啟動 → 進 mysql 庫更新 authentication_string → FLUSH PRIVILEGES → 重啟正常服務。操作需謹慎,修改完成後務必移除臨時參數,恢復權限保護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved