2014-10-20 18 views
0

我有一個關於我目前擁有的方案的問題。通常這個過程應該可以工作,但我似乎無法成功登錄後。在使用任何憑據登錄時,獲取不正確的用戶名/密碼組合或「無法選擇數據庫」錯誤。--skip-grant-tables mysqld的流程訂單

向前跳過一比特i具有關閉機器上的MySQL服務器和與所述命令

重新啓動它/etc/init.d/mysqld --skip發放桌

然後記錄在用mysql -u root -p

顯然這讓我馬上跳過權限檢查。

我的目標是更改桌面上的用戶的密碼。

目前服務器上有三個數據庫,我們將按如下方式調用它們。

INFORMATION_SCHEMA

MySQL的

GNB

有一個在GNB表稱爲用戶其中有一個用戶名的密碼字段。它有一個名爲admin的用戶名,我想更改密碼,因爲這是Web服務器從中提取數據的地方。

我已經成功地改變密碼對於該特定的用戶與所述命令

UPDATE SET用戶密碼= PASSWORD( 'MyNewPass')其中username = '管理員'; FLUSH PRIVILEGES;

1行受到影響,我可以看到密碼哈希值的變化。也沖洗特權。

此處,我遇到了我的問題....

一旦我有重置密碼並在正常模式i導航回Web服務器登錄,並試圖與細節登錄重新啓動MySQL服務器我現在擁有。

我遇到了一個「無法選擇數據庫」錯誤消息。 我不確定在重新啓動數據庫之前是否必須執行某些操作?或者我也必須重新啓動Apache Web服務器?我嘗試了不同組合的海市蜃樓,但似乎無法讓它工作。如果我仍然在--skip-grant-tables模式下嘗試登錄,那麼我只是得到一個無效的登錄嘗試。

由於事先/

我難倒....

+0

你是如何得到mysql1和mysql2的?這些都不是有效的系統數據庫。用戶表應該位於名爲「mysql」的數據庫中。我懷疑別的什麼都行。 – 2014-10-20 04:26:21

+0

抱歉是爲了爭辯。他們是一個名爲mysql的數據庫和一個名爲gnb的數據庫。 mysql1 = mysql和msql2 = gnb – LewisFletch 2014-10-20 04:28:06

+0

web服務器的登錄名從gnb.users中提取登錄信息 – LewisFletch 2014-10-20 04:28:23

回答

0

未來。

第二個表是在MD5中存儲密碼。 更新行而不使用任何密碼命令。只需一行更新並使用我希望使用的密碼的MD5哈希值進行更新。

網絡服務器然後識別MD5字符串是正確的密碼,我能夠獲得訪問權限。

1

我認爲你可能有一個關於MySQL的身份驗證系統是如何工作的誤解。

當應用程序(例如,一個PHP腳本)連接到MySQL,用戶/密碼將根據mysql.users表進行檢查。它不檢查另一個數據庫中的任何其他表,即使該數據庫(gnb)是包含應用程序數據的數據庫。

你在gnb數據庫中有一個名爲「users」的表對MySQL認證系統沒有任何影響。當然,你可以把你想要的任何數據放入該表中,但它不會被MySQL認證使用。

您可以使用SET PASSWORD命令更改密碼,也可以直接更新mysql.users表,然後刷新FLUSH PRIVILEGES。

+0

我明白了你的意思,而mysql並不是我正在嘗試登錄的。我可以設置mysql數據庫的根密碼,我試圖實現的是密碼不是爲mysql.user而是爲gnb.users,這是web服務器從中獲取信息的地方。它會查詢SELECT用戶=「用戶名字段」WHERE密碼='HASHED密碼'來驗證網頁或類似的(不記得)... 應該更清楚,對不起。 – LewisFletch 2014-10-20 04:44:01

+0

Can'在你沒有看到代碼的情況下,你仍然可以幫助你。儘管有[documentation](http://dev.mysql.com/doc/refman/5.6/en),你似乎正在使用MySQL的內置PASSWORD()函數來進行應用程序級登錄/encryption-functions.html#function_password),說你不應該這樣做 – 2014-10-20 05:22:16

+0

感謝您的幫助Bill。無法提供代碼,因爲我在測試這臺機器,但是無法獲得登錄信息,我沒有構建數據庫。 – LewisFletch 2014-10-20 05:25:07