寫在前面
一 安全性
MySQL 5.7 的目标是成為釋出以來最安全的 MySQL 伺服器,其在 SSL/TLS 和全面安全開發方面有一些重要的改變。
1.1 5.7版本的使用者表mysql.user要求plugin字段非空,且預設值是mysql_native_password,并且不再支援mysql_old_password。
設定 使用者的過期時間為 90天
ALTER USER yangyi@'127.0.0.1' PASSWORD EXPIRE INTERVAL 90 DAY;
設定 使用者密碼永遠不過期
ALTER USER yangyi@'127.0.0.1' PASSWORD EXPIRE NEVER;
可能大家都有如果業務系統的賬号某一天突然過期了,業務受到影響 怎麼辦? 别擔心那麼可以設定密碼永不過期。
default_password_lifetime=0
1.3 DBA可以通過對使用者加鎖/ 解鎖進一步控制其通路db 。
例子
mysql> alter user yang@'%' account lock;
Query OK, 0 rows affected (0.00 sec)
root@rac4:/srv/my3306/data# >mysql -uyang -h127.0.0.1 -p
Enter password:
ERROR 3118 (HY000): Access denied for user 'yang'@'localhost'. Account is locked.
mysql> alter user yang@'%' account unlock;
shell> bin/mysql_ssl_rsa_setup # MySQL 5.7.6 and up
推薦兩篇延伸閱讀,關于SSL 特性我相信絕大多數資料庫都沒有開啟,姜承堯文章中的測試案例顯示弱開啟SSL 性能開銷在25% 左右。大家在嘗試新的特性的時候 ,根據自己的業務做評估。
1.5 使用更安全的初始化方式
逐漸廢棄mysql_install_db的安裝方式使用 initialize代替(mysql_install_db <5.7.6<= mysqld —initialize) ,使用 initialize 參數初始化資料庫有如下特性
a 隻建立一個 root賬号,并且生成一個臨時的标記為過期密碼
b 不建立其他賬号
c 不建立test 資料庫
特别強調與—initialize 不同 ,初始化的時候 使用參數
參考文檔