2017-08-26 22 views
0

我已將MariaDB 5.5升級到10.1,並且它說mysql使用secure-auth並將舊密碼更改爲新密碼。我在my.cnf中禁用了secure-auth並能夠登錄。MariaDB 10.1將舊密碼更改爲centos 7上的新密碼並啓用安全身份驗證

現在我的問題是如何將舊密碼更改爲新密碼並在數據庫上啓用secure-auth。

建議我該怎麼做。

+0

這對於超級用戶或Unix和Linux SE來說就像是一個問題。更不用說我敢打賭,如果你做了網絡搜索,這個問題已經得到了回答。你有什麼嘗試? – jdv

+0

我已經在my.cnf中禁用了secure-auth,並且能夠登錄到mysql,成功更改了root用戶的密碼。現在我想啓用secure-auth,所以我只是從my.cnf中刪除它,並再次出現同樣的問題。這裏開始我的困惑如何啓用並使新密碼適用。 – Tara

回答

0

我打算假設您的MariaDB服務器沒有其他用戶不知道密碼,並且您有必要修改用戶並設置系統級別的變量。 Super_Priv可能已經足夠了:)

注意:您冒險鎖定自己,但只要您已經登錄,更改這些將不會將您從當前會話中註銷,因此如果事情進展順利錯誤的方式,而不必重新啓動。我總是使用第二個連接進行測試,因爲將自己鎖定在數據庫之外是一種嗡嗡聲。我並不知道這件事。

注2:我想強烈建議備份用戶表,安全與SQL與此類似:

CREATE TABLE mysql.user_backup_YYYYMMDD LIKE mysql.user; 
INSERT INTO mysql.user_backup_YYYYMMDD SELECT * FROM mysql.user; 

可以修改「secure_auth」實時設置(所以你不」噸有通過改變系統變量「secure_auth」(如果您的用戶帳戶具有所需的權限)用下面的SQL(即運行在一個MySQL客戶端)重新啓動MariaDB的服務器)。

SET GLOBAL secure_auth="ON"; 

或 SET格洛巴L secure_auth =「OFF」;

要查看當前值:

SHOW GLOBAL VARIABLES LIKE '%auth%'; 

要使其永久通過重新啓動,改變你的價值: /etc/my.cnf.d/server.cnf(也可能是您的/etc/my.cnf中 - 但願它不是在這兩個設置,但它是值得檢查)

[mysqld] 
secure-auth=on 

(注:如你發現,在.CNF變化將不會被加載到你的MariaDB的服務器重新啓動)

啓用auth_secure後,具有「舊密碼」的用戶將無法按原樣登錄。如果可能的話,最簡單的方法是在所有帳戶上升級密碼類型,以避免嘗試同時支持這兩種密碼的任何問題。

您可以查看當前賬戶和(加密)密碼,用下面的SQL:

SELECT user, host, password FROM mysql.user; 

更新之前,你可以驗證你的密碼是什麼,你認爲它是這個SQL比較密碼字段在mysql中。用戶表:

SELECT OLD_PASSWORD('What You Think Your Password Is'); 

,同樣的事情,但對於新的密碼:

SELECT PASSWORD('newpass'); 

從那裏,你有多種選擇,但正常的方法是設置密碼:

SET PASSWORD FOR 'foo'@'%' = PASSWORD('newpass'); 

其中foo和%是mysql.user表中的HOST和USER字段。

另一個(時髦)的選擇是明確使用ALTER USER命令和密碼沒有INDENTIFIED BY子句如下所述:

https://mariadb.com/kb/en/library/alter-user/

顯然,這可能會導致安全防喜悅。

您還可以通過更新語句設置密碼字段,例如,如果你想將其設置回保存的值:

UPDATE mysql.user SET PASSWORD="SOME SAVED VALUE" where USER = "sqllove" and host = "localhost"; 

或者你可以將其設置回一個「舊密碼」格式,如果你知道密碼:

UPDATE mysql.user SET PASSWORD=OLD_PASSWORD("Old Password") where USER = "sqllove" and host = "localhost"; 

一(可怕的)這個做法好處是,如果你正在爲多個用戶設置一個密碼,你可以做一個命令 - 例如,使用戶密碼對於通過本地主機連接在同一臺計算機上的人員,「易」:

UPDATE mysql.user set PASSWORD=PASSWORD("easy") where host="localhost"; 

,並確保您的最新用戶更改立即可見,在完成時,一些最後的SQL:

FLUSH privileges; 

,我會在登錄到MariaDB的客戶端的整個時間 - 進行更改,刷新,從另一個帳戶進行測試,重新登錄任何服務(即使出現錯誤但它們仍會繼續工作,但會在下次登錄嘗試時失敗),並且一旦安全,就退出登錄。

提示:如果你是在UNIX和登錄到客戶端,需要的不是註銷您的客戶端的運行shell命令,你可以打按Ctrl-Z得到一個shell提示符(已暫停你的客戶端)程序,然後可以運行shell命令(即運行第二個客戶端!或重新啓動連接到數據庫的服務),並準備好後輸入%1以返回客戶端(您可能必須按回車重新加載提示)。這適用於unix中的大多數控制檯程序,而不僅僅是MariaDB客戶端。如果您重複執行初始,則返回命令將爲%2和%3等,具體取決於您下降的級別。但時間不會變慢。

相關問題