mysql5.7密碼設置
阿新 • • 發佈:2018-09-06
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>>2V2018-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次密碼之後,仍然報如下錯誤 ERROR1819 (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密碼設置