修改MySQL 5.7.9版本的root密碼方法以及一些新變化整理

來源:互聯網
上載者:User

標籤:tab   update   相關   ati   alter   lsp   ict   class   secret   

MySQL 5.7版本開始,增強密碼驗證機制,網上說安裝的時候會在/root/.mysql_secret  檔案中產生預設密碼,這一點自 5.7.6版本以後也去掉了。

 

針對如果產生預設密碼,網上有一個版本,內容如下:

1、修改設定檔,一般在 /etc/my.cnf, 在[mysqld]欄位下增加skip-grant-tables 欄位,用以忽略許可權驗證;

2、重啟MySQL伺服器,CentOS 7.0操作命令是:

1 systemctl restart mysqld.service

3、使用mysql -u root -p 登入資料, 密碼直接斷行符號;

4、修改mysql資料庫(名稱),user表的authentication_string欄位,修改命令如下:  

123 mysql> update mysql.user set authentication_string=password(‘new_password‘) where user=‘root‘ and Host =‘localhost‘;mysql> flush privileges;mysql> quit;

5、修改設定檔,去掉skip-grant-tables,恢複成原來的樣子, 然後重新MySQL伺服器。

6、使用第4步設定的密碼,登入mysql伺服器。

7、通過 set password=password(‘new_password‘); 命令重新設定密碼;

以上的方法,在MySQL 5.7早期版本時,還是很好用的,但在MySQL 5.7.6以後的版本,最後一點重設密碼總是無法生效,會出來下面的錯誤。

1 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

同時,無法進行其它的操作。

這是因為,自MySQL 5.7開始,密碼存在有效期間的概念, 同時因為安全等級的問題,需要使用使用其它的方式進行設定。另一個需要注意的點是, 自5.7.6開始廢棄了password()函數,同時無法設定old_password=1, 這真的是一件比較曲折的探索過程。

那麼,先把MySQL 5.7.9版本以上的密碼設定方法整理一下。

大部分和上面整理的內容相同,關鍵在第4步後,把authentication_string 裡寫入的值記一下(這是因為password()函數已廢棄)

 

通過使用以下命令,代替第7步的, set password=password(‘new_password‘) 方法。

1234 mysql> ALTER USER ‘jeffrey‘@‘localhost‘    -> IDENTIFIED WITH mysql_native_password    -> AS ‘authentication_string欄位內容‘;Query OK, 0 rows affected (0.01 sec)

 

其實上面的命令有一個簡化版本,命令如下

123 mysql> ALTER USER USER() IDENTIFIED BY ‘news_password‘; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

之所以會出現上面的錯誤資訊,這和密碼的安全等級相關,查看安全等級命令如下

1234567891011 mysql> SHOW VARIABLES LIKE ‘validate_password%‘;+--------------------------------------+--------+| Variable_name                        | Value  |+--------------------------------------+--------+| validate_password_dictionary_file    |        || validate_password_length             | 8      || validate_password_mixed_case_count   | 1      || validate_password_number_count       | 1      || validate_password_policy             | MEDIUM || validate_password_special_char_count | 1      |+--------------------------------------+--------+

通過  SET GLOBAL  validate_password_policy=‘LOW‘;  命令,降低安全等級後,就可以直接使用,限制是必須8個字元以上;

 

關於安全等級更詳細的介紹如下

  • LOW 政策只測試密碼長度。 密碼必須至少有8個字元長。

  • MEDIUM 政策的條件 密碼必須包含至少1數字字元,1 大寫和小寫字元,和1特別 (nonalphanumeric)字元。

  • STRONG 政策的情況 密碼子字串長度為4的或更長時間不能匹配 單詞在字典檔案中,如果一個人被指定。

 

最後,為瞭解決密碼失效的問題, 最後在設定檔的[mysqld]欄位下,增加以下欄位

12 [mysqld]default_password_lifetime=0

 

也可以通過命令列進行設定

1 ALTER USER ‘script‘@‘localhost‘ PASSWORD EXPIRE NEVER

 

關於密碼有效期間相關的更多資訊,可以參考 http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html

 

好了,希望上面的資訊能夠對大家所有協助。

修改MySQL 5.7.9版本的root密碼方法以及一些新變化整理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.