標籤:

解決:MySQL 報錯:1045- Access denied for user root@localhost(using password YES)

一、前言

今年瘋狂迷上了開源,只要看到好的開源項目,就會不顧一切一股腦扎進去研究,五一期間發現一個很好的關於眾籌的開源項目,但不巧,這個項目竟然是 PHP 寫的,沒學過 PHP,自然對這個開源項目毫無頭緒了,但我竟然為了這個項目,毅然決定入坑 PHP,於是就出事了...

說時遲那時快, 2 小時入門 PHP,2 小時入門 ThinkPHP,鑒於我一直在研究 Java 的原因,所以不費吹灰之力就順利入坑。通過了解,PHP 開發必備環境是 PHP、Apache、MySQL以及一個好用的 IDE ,IDE 還是很好找的,我選擇了 JetBrains 的 PhpStorm,而其他環境就是集全部功能於一身的 WampServer 了,安裝完準備建資料庫建表,打開 Navicat ,錯誤開始...

二、錯誤描述

MySQL 報錯:1045- Access denied for user root@localhost(using password YES)

如下圖所示:

三、錯誤原因

安裝了 WampServer 這個集 PHP 開發環境於一身的神器後,裡面的 MySQL 網頁管理軟體 phpMyAdmin 使得資料庫的 root 用戶許可權發生改變,也可以說是由於兩者的密碼不一致導緻密碼錯亂有了這個錯誤(我自己理解),因為 phpMyAdmin 安裝完成後的默認密碼是空的。

四、錯誤解決

直接充值密碼即可解決數據這個報錯問題。

首先,停止掉數據的運行,這個我相信大家都可以做到了,可以直接從管理服務程序中停止,也可以直接在 cmd 命令窗口輸入命令 net stop mysql 來停止。

然後進入 MySQL 的安裝路徑,找到並打開 my.ini 文件,找到 [mysqld] 欄位,在這個欄位下面增加下面這個語句:

skip_grant_tables

緊接著重啟資料庫,這個我相信大家也可以做到了,可以直接在管理服務程序中開啟,也可以直接在 cmd 命令窗口中輸入命令 net start mysql 來開啟,進而在命令窗口執行一下命令,重置密碼:

update user set password=root where user=root

當然,我是直接將密碼重置為 root,反正這個密碼大家自定義就好,不過要記住密碼。

最後就是再次停止資料庫的運行,返回前面提到的 my.ini 文件去掉 skipgranttables 欄位後保存,再次重啟資料庫就可以成功解決這個 MySQL 的報錯了。

五、問題繼續

我在第四部完美的解決了命令窗口啟動進入數據的這種報錯,然後當我重新進入 Navicat 打開本地建立的連接的時候,繼續報同樣的錯誤,也就是說錯誤並沒有解決,很納悶,為啥命令行可以順利操作資料庫不報錯,進入 Navicat 客戶端就報錯呢?

折騰半天,發現在 root 許可權錯亂而重置密碼之後,在 Navicat 中已經建立的連接是不可逆的。

折騰半天,發現解決辦法也很簡單,要麼刪除連接後重新建一個連接,當然,刪除連接後並不會已經建立的資料庫,要麼重裝 Navicat ,至於選哪一種,自行選擇,我都試過,都可以成功解決 Navicat 報這個錯誤。

六、問題再來

當本地的錯誤完美解決之後,我打開 phpMyAdmin 網頁,竟然報了一個與前面的錯誤很相似卻又有異的錯誤,錯誤如下:

1045- Access denied for user root@localhost(using password NO)

當我把本地的 phpMyAdmin 配置文件中的密碼也設置為 MySQL 資料庫的密碼後,打開後還是繼續報同樣的錯誤,不斷打開不斷報錯,又折騰半天,最後在 StackOverFlow 上找到了解決辦法:直接清除瀏覽器的 Cookie 緩存就可以解決這個問題。也就是說,我本地的配置是沒有任何錯誤的,而打開網頁繼續報錯的原因是之前報錯時瀏覽器已經把 phpMyAdmin 的登錄密碼緩存到了 Cookie之中。

好了,所有問題完美解決,特此記錄。

解決完這個問題我們明白,如果遇到某些錯誤精心想想,而不是一股腦扎進錯誤之中研究錯誤,可能半小時就可以解決問題了,也不至於折騰一個半天后又折騰一個半天咯。

掃描二維碼關注微信公眾號,了解更多

weixin.qq.com/r/dy1IUNb (二維碼自動識別)


推薦閱讀:

虛驚一場?PHPMailer漏洞雞肋無比
關於PHPDocument 代碼注釋規範的總結
什麼開發語言可以替代PHP?
php的前景好不好???
乾貨 || 另類PHP安全漏洞:利用弱類型和對象注入進行SQLi

TAG:MySQL | PHP | ThinkPHP |