欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Window中MySQL繞過密碼登錄的底層原理詳解

 更新時間:2025年02月14日 10:48:03   作者:碼農(nóng)研究僧  
在 MySQL 中,root 用戶的密碼存儲和認證機制隨著版本的升級發(fā)生了變化,繞過密碼登錄主要依賴于 --skip-grant-tables 選項,本文將詳細分析 MySQL 繞過密碼的底層原理,并解釋為什么某些操作在 --skip-grant-tables 模式下無效,以及如何正確生效修改

1. 基本知識

在 MySQL 中,root 用戶的密碼存儲和認證機制隨著版本的升級發(fā)生了變化
繞過密碼登錄主要依賴于 --skip-grant-tables 選項,但這一過程涉及 MySQL 的用戶認證體系、權(quán)限管理以及數(shù)據(jù)庫安全策略

本文將詳細分析 MySQL 繞過密碼的底層原理,并解釋為什么某些操作在 --skip-grant-tables 模式下無效,以及如何正確生效修改

一、MySQL 用戶認證機制

MySQL 的用戶認證由以下幾個核心組件組成:

mysql.user 表:存儲用戶信息,如 user、host、authentication_string(MySQL 5.7+)
身份驗證插件(Authentication Plugin):MySQL 使用不同的插件來管理用戶登錄,例如:
mysql_native_password
caching_sha2_password(MySQL 8.0 默認)
sha256_password
權(quán)限系統(tǒng)(Privilege System):用于控制用戶在數(shù)據(jù)庫中的操作權(quán)限

當用戶登錄 MySQL 時,服務(wù)器會:

  1. 檢查 mysql.user 表,確認用戶名、主機匹配的賬號是否存在
  2. 調(diào)用身份驗證插件,使用 authentication_string 進行密碼驗證
  3. 檢查權(quán)限系統(tǒng),確定用戶的訪問權(quán)限

二、 --skip-grant-tables 繞過權(quán)限驗證

--skip-grant-tables 選項允許 MySQL 啟動時跳過權(quán)限系統(tǒng),這意味著:
MySQL 不會檢查用戶權(quán)限,所有用戶都可以直接訪問數(shù)據(jù)庫,由于 權(quán)限系統(tǒng)未啟用,某些 SQL 語句(如 ALTER USER)可能無法執(zhí)行,仍然需要 手動刷新權(quán)限(FLUSH PRIVILEGES;) 才能使修改生效
問題點:如果 FLUSH PRIVILEGES; 未執(zhí)行,MySQL 仍然會使用舊的用戶認證規(guī)則,導(dǎo)致密碼修改后仍然無法登錄

三、password() 函數(shù)被移除

在 MySQL 8.0 及以上版本中,password() 函數(shù)已被移除,所以UPDATE mysql.user SET password = PASSWORD('root') WHERE user = 'root';會導(dǎo)致 語法錯誤

正確方式(適用于 MySQL 5.7 及以上):

UPDATE mysql.user SET authentication_string = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

注意:
authentication_string 取代了 password 字段;ALTER USER 是修改密碼的推薦方法

四、以管理員權(quán)限運行命令行

在 Windows 上,如果沒有以管理員身份運行 cmd,則可能遇到權(quán)限問題,導(dǎo)致 ALTER USER 操作失敗

五、 --skip-grant-tables 退出后密碼失效的原因

如果在 --skip-grant-tables 模式下修改了密碼,然后退出 MySQL 后密碼仍然無效,可能的原因有:
沒有執(zhí)行 FLUSH PRIVILEGES;,導(dǎo)致修改未生效
MySQL 仍然使用緩存,未完全刷新認證信息
未使用 ALTER USER,仍然在 mysql.user 直接修改 authentication_string,但沒有正確同步
MySQL 版本不同,認證機制發(fā)生變化,導(dǎo)致密碼修改失敗

解決方案:

  1. 確保 FLUSH PRIVILEGES; 執(zhí)行成功。
  2. 直接使用 ALTER USER 而不是 UPDATE mysql.user。
  3. 重啟 MySQL 以清除緩存

2. 實戰(zhàn)Demo

以實戰(zhàn)Demo進行演示

cmd窗口一定要管理員權(quán)限

cmd窗口一定要管理員權(quán)限

cmd窗口一定要管理員權(quán)限

開啟跳過密碼登錄:mysqld --console --skip-grant-tables --shared-memory (此窗口勿關(guān)閉)

后續(xù)在另外一個窗口cmd管理員,輸入如下:

直接登錄,跳過密碼:mysql -u root -p

鏈接數(shù)據(jù)庫:USE mysql;

如果是 MySQL 5.7 及以上(包括 MySQL 8.0),請執(zhí)行:

UPDATE mysql.user SET authentication_string = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

然后再執(zhí)行:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

注意:這里 authentication_string 字段在 MySQL 5.7 及以上版本中取代了 password 字段

別忘記刷新權(quán)限以及退出:

FLUSH PRIVILEGES;
quit;

總體截圖如下:

先關(guān)閉 MySQL 服務(wù)器:net stop mysql

然后重新啟動:net start mysql

重新登錄 MySQL:mysql -u root -p

到此這篇關(guān)于Window中MySQL繞過密碼登錄的底層原理詳解的文章就介紹到這了,更多相關(guān)MySQL繞過密碼登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql之group by和having用法詳解

    mysql之group by和having用法詳解

    這篇文章主要介紹了mysql之group by和having用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL循環(huán)查詢的實現(xiàn)示例

    MySQL循環(huán)查詢的實現(xiàn)示例

    MySQL循環(huán)查詢是指在MySQL數(shù)據(jù)庫中使用循環(huán)結(jié)構(gòu)進行數(shù)據(jù)查詢的一種方法,本文主要介紹了MySQL循環(huán)查詢的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • MySQL中on?duplicate?key?update的使用方法實例

    MySQL中on?duplicate?key?update的使用方法實例

    在做數(shù)據(jù)統(tǒng)計的時候,我們經(jīng)常會用到mysql的on duplicate key update語法來自動更新數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL中on?duplicate?key?update的使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • MySQL表的基本查詢詳細圖文教程

    MySQL表的基本查詢詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于MySQL表的基本查詢的相關(guān)資料,需要的朋友可以參考下
    2024-10-10
  • SUSE Linux下源碼編譯方式安裝MySQL 5.6過程分享

    SUSE Linux下源碼編譯方式安裝MySQL 5.6過程分享

    這篇文章主要介紹了SUSE Linux下源碼編譯方式安裝MySQL 5.6過程分享,本文使用SUSE Linux Enterprise Server 10 SP3 (x86_64)系統(tǒng),需要的朋友可以參考下
    2014-09-09
  • MySQL 刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)方法小結(jié)

    MySQL 刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)方法小結(jié)

    在實際項目中,我們經(jīng)常會遇到刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的問題,貌似是很簡單的問題哈,下面我們來探討下
    2014-07-07
  • MySQL 主主同步配置步驟

    MySQL 主主同步配置步驟

    創(chuàng)建同步用戶、修改 /etc/my.cnf 配置文件,為其添加以下內(nèi)容、分別重啟服務(wù)器ODD EVEN 上的mysql服務(wù)
    2013-05-05
  • 一文帶你徹底了解MySQL事務(wù)機制

    一文帶你徹底了解MySQL事務(wù)機制

    一個事情由n個單元組成,這n個單元在執(zhí)行過程中,要么同時成功,要么同時失敗,這就把n個單元放在了一個事務(wù)之中,這篇文章主要給大家詳細介紹MySQL的事務(wù)機制,感興趣的同學歡迎閱讀本文
    2023-06-06
  • MySQL 中  DATE_FORMAT() 函數(shù)的使用及應(yīng)用場景

    MySQL 中  DATE_FORMAT() 函數(shù)的使用及應(yīng)用場景

    DATE_FORMAT() 是 MySQL 中的一個內(nèi)置函數(shù),用于格式化日期和時間數(shù)據(jù),它可以根據(jù)指定的格式字符串來展示日期和時間,使得數(shù)據(jù)更容易閱讀和理解,本文檔將詳細介紹 DATE_FORMAT() 函數(shù)的使用方法及其常見應(yīng)用場景,感興趣的朋友一起看看吧
    2024-12-12
  • 詳解MySQL性能優(yōu)化(二)

    詳解MySQL性能優(yōu)化(二)

    本文對MySQL性能優(yōu)化進行了詳細的總結(jié)與介紹,需要的朋友可以參考下
    2015-08-08

最新評論