在命令列輸入mysql -u root –p,輸入密碼,或透過工具連接資料庫時,經常出現下面的錯誤訊息,相信該錯誤訊息很多人在使用MySQL時都遇到過。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
通常從網路上都能找到解決方案
1.停止服務
停止MySQL服務;
# windows net stop mysql # linux service mysqld stop
2.跳過驗證
修改MySQL安裝目錄下的my.ini設定文件,使登入時跳過權限檢查;
#到mysql根目录找到mysql配置文件 vim my.ini #在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查 skip_grant_tables
3.修改密碼
啟動MySQL服務,登入MySQL,此時提示輸入密碼,輸入任何密碼回車即可進入MySQL。
#登录mysql mysql -u root -p
然後透過SQL語句修改root使用者的密碼;
#将数据库切换至mysql库 mysql> USE mysql; #修改密码 mysql> UPDATE user SET password=PASSWORD(‘newpasswd')WHERE user='root'; #刷新MySQL权限相关的表 mysql> flush privileges; mysql> exit;
4.重新啟動服務
將my.ini檔案中加入的跳過權限語句刪除或加#號註釋。
重啟服務,使用修改後的密碼登入即可。
原因分析
使用root使用者登入MySQL,查看user表中的使用者資訊如下,可以發現host的欄位分別為%和localhost。
mysql>select host,user,password from user;
在MySQL中’%'表示可以在任何主機上登入MySQL資料庫,那為什麼還需要明確建立登入主機為localhost的使用者呢?
這涉及到MySQL安裝時的初始化用戶,匿名用戶以及連接驗證策略等
下面進行深入的分析。
在安裝MySQL時,會預設初始化一些用戶,例如root用戶,以及host欄位為localhost,user欄位為空的用戶。
User欄位為空的用戶即為匿名用戶,該用戶的密碼也為空,任何人都可以使用匿名用戶登入MySQL資料庫,但可以做的事情卻是有限的,例如在命令列直接輸入mysql登錄,可以查看匿名使用者對哪些資料庫有權限:
mysql>select current_user;
mysql>show databases;
透過上面的圖片可以發現,匿名用戶僅對information_schema和test資料庫有權限。
而匿名用戶又是如何影響其他用戶登錄,進而出現28000錯誤的呢?
當試圖連線MySQL資料庫時,資料庫會根據提供的身分和密碼決定是否接受連線要求,身分由兩部分組成:使用者名稱和客戶端主機(即輸入mysql指令的主機)。
由於host欄位中的%符合任何主機或host欄位包含通配符,就可能出現多個符合行,伺服器必須決定要符合哪一個,伺服器將user表中的資料讀入記憶體中,依照host和user欄位對行進行排序。
mysql>select host,user,password from user order by host desc,user desc;
當客戶端試圖連線時,伺服器尋找已排序的行並使用第一個符合客戶端主機和使用者名稱的行,找到符合行後,在驗證密碼是否一致,如果一致則登入成功。
user欄位為空則表示可以符合任何使用者。
這裡關注:
user為空,即任意用戶,不使用密碼登入localhost時,匿名用戶僅對information_schema和test資料庫有權限,使用其他資料庫時,導致失敗。
如果user為root,密碼顯示為空,或host欄位顯示為非’%'的時候,依照預設的符合順序,或是提示密碼錯誤或提示為ERROR 1045。
下圖已修改完善,僅作參考,例如第一序列中,host為localhost或127回環位址的情況下,則會發生1045錯誤。
SO 解決方案
mysql> select host,user,password from user order by host desc,user desc; ## 将排序序列中最前面的用户修改host为'%' mysql> update user set host = '%' where host = 'oracle' and user = 'root'; mysql> flush privileges;
以上是MySQL ERROR 1045出現的原因及如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

mysqldiffersfromothersqldialectsinsyntaxforlimit,自動啟動,弦樂範圍,子征服和表面上分析。 1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

MySQL分區能提升性能和簡化維護。 1)通過按特定標準(如日期範圍)將大表分成小塊,2)物理上將數據分成獨立文件,3)查詢時MySQL可專注於相關分區,4)查詢優化器可跳過不相關分區,5)選擇合適的分區策略並定期維護是關鍵。

在MySQL中,如何授予和撤銷權限? 1.使用GRANT語句授予權限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE語句撤銷權限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',確保及時溝通權限變更。

InnoDB適合需要事務支持和高並發性的應用,MyISAM適合讀多寫少的應用。 1.InnoDB支持事務和行級鎖,適用於電商和銀行系統。 2.MyISAM提供快速讀取和索引,適合博客和內容管理系統。

MySQL中有四種主要的JOIN類型:INNERJOIN、LEFTJOIN、RIGHTJOIN和FULLOUTERJOIN。 1.INNERJOIN返回兩個表中符合JOIN條件的所有行。 2.LEFTJOIN返回左表中的所有行,即使右表中沒有匹配的行。 3.RIGHTJOIN與LEFTJOIN相反,返回右表中的所有行。 4.FULLOUTERJOIN返回兩個表中所有符合或不符合JOIN條件的行。

mysqloffersvariousStorageengines,每個suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)記憶

MySQL中常見的安全漏洞包括SQL注入、弱密碼、權限配置不當和未更新的軟件。 1.SQL注入可以通過使用預處理語句防止。 2.弱密碼可以通過強制使用強密碼策略避免。 3.權限配置不當可以通過定期審查和調整用戶權限解決。 4.未更新的軟件可以通過定期檢查和更新MySQL版本來修補。

在MySQL中識別慢查詢可以通過啟用慢查詢日誌並設置閾值來實現。 1.啟用慢查詢日誌並設置閾值。 2.查看和分析慢查詢日誌文件,使用工具如mysqldumpslow或pt-query-digest進行深入分析。 3.優化慢查詢可以通過索引優化、查詢重寫和避免使用SELECT*來實現。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具