1. 程式人生 > >mysql5.7密碼設置

mysql5.7密碼設置

date 安全策略 policy 長度 rar 簡單的 方法 ati gre

mysql5.7版本引入了強制更改密碼的舉措,只能吐槽一句,shit!mysql5.7安裝
安裝完mysql之後,mysql已經隨機指定了一個初始化密碼,可以在mysql的錯誤日誌中找到初始化密碼:

cat /var/log/mysqld.log  | grep password
2018-07-05T05:02:46.258821Z 0 [ERROR] unknown variable validate_password_policy=0
2018-07-05T05:05:04.538912Z 1 [Note] A temporary password is generated for root@localhost: 9kkYpe)x>>2V
2018-07-05T05:05:09.218798Z 2 [Note] Access denied for user UNKNOWN_MYSQL_USER@localhost (using password: NO)

根據臨時密碼進入mysql的交互界面,進行任何操作都會報如下錯誤提示:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

進入之後隨便執行一條語句,會發現系統提示你必須使用alter user語句更改密碼,(oracle為了數據庫的安全真是操碎了心)
在試了n次密碼之後,仍然報如下錯誤
ERROR 
1819 (HY000): Your password does not satisfy the current policy requirements 命運多舛,時運不濟啊! mysql> alter user "root"@"localhost" identified by "123qwE#!"; #密碼含有 數字,大寫字母,小寫字母,特殊字符 Query OK, 0 rows affected (0.01 sec) mysql>

但有時候我們臨時測試的時候不需要這麽復雜的密碼,這時候可以看如下設置。

若想快速的使用mysql 簡單的 密碼請按如下設置,直接在交互行執行:
mysql
> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=4; Query OK, 0 rows affected (0.00 sec) mysql> set password=password("123456"); Query OK, 0 rows affected, 1 warning (0.01 sec) 這樣就可以正常使用賬戶和密碼了。

詳解了解一下這幾個參數

查看控制密碼設置的幾個參數
mysql> show variables like "validate_password%";
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 8     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

密碼安全策略:validate_password_policy
策略              檢查規則
0 or LOW            Length
1 or MEDIUM         Length; numeric, lowercase/uppercase, and special characters
2 or STRONG         Length; numeric, lowercase/uppercase, and special characters; dictionary file

validate_password_dictionary_file:    密碼策略文件,需要安全策略參數為strong或2.
validate_password_length:             密碼長度, 默認是8
validate_password_mixed_case_count:   密碼中大小寫字母數量至少為1
validate_password_number_count:       密碼中數字的數量至少為1
validate_password_special_char_count: 密碼中特殊字符的個數至少為1 
validate_password_check_user_nam:     檢查用戶名 

修改策略的時候,可以直接用set global varname參數修改。

需要註意的是:

但是若在錯誤日誌中找不到初始化密碼,就得不走尋常路了使用skip-grant-tables參數。
只說明方法,不會具體操作:
在配置文件中加入skip-grant-tables參數,然後重新啟動mysql服務,這時候不需要密碼即可進入交互界面。
然後 執行 update mysql.user set authentication_string=password(‘123456‘) where user=‘root‘;(需要註意的是:mysql57版本中user表的password字段已經更新為authentication_string字段。)語句更改root用戶密碼,其余的set語句好像不能執行。

更改成功之後,註釋掉配置文件中的skip-grant-tables參數,重新啟動mysql,然後就可以使用密碼進入交互界面。

mysql5.7密碼設置