詳解MySQL的用戶密碼過期/鎖定解鎖功能


Payment Card Industry,即支付卡行業,PCI行業表示借記卡、信用卡、預付卡、電子錢包、ATM和POS卡及相關的業務。 
PCI DSS,即PCI數據安全標准(Payment Card Industry Data Security Standard)是由PCI安全標准委員會制定,旨在使國際上采用一致的數據安全措施。

PCI DSS標准要求用戶每隔90天必須更改他們的密碼。那么MySQL數據庫該怎樣適應這個情況?幸運的是,在MySQL版本5.6.6版本起,添加了password_expired功能,它允許設置用戶的過期時間。

這個特性已經添加到mysql.user數據表,但是它的默認值是”N”。可以使用ALTER USER語句來修改這個值。

下面是關於如何設置MySQL用戶賬號的到期日期一個簡單例子:

mysql> ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;

 

一旦某個用戶的這個選項設置為”Y”,那么這個用戶還是可以登陸到MySQL服務器,但是在用戶未設置新密碼之前不能運行任何查詢語句,而且會得到如下錯誤消息提示:
mysql> SHOW DATABASES;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Keep in mind that this does not affect any current connections the account has open.

當用戶設置了新密碼后,此用戶的所有操作(根據用戶自身的權限)會被允許執行:

[root@ser3 ~]# mysql -ukappe -p 
Enter password:

kappe@localhost : (none) 14:38:04>show databases;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
 
kappe@localhost : (none) 14:39:55>help alter user
 
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
 
kappe@localhost : (none) 14:43:10>set password=password('!@#DGG^ds');
 

 

 

DBA可以通過cron定時器任務來設置MySQL用戶的密碼過期時間。

從MySQL 5.7.4版開始,用戶的密碼過期時間這個特性得以改進,可以通過一個全局變量default_password_lifetime來設置密碼過期的策略,此全局變量可以設置一個全局的自動密碼過期策略。

用法示例: 
可以在MySQL的配置文件中設置一個默認值,這會使得所有MySQL用戶的密碼過期時間都為90天,MySQL會從啟動時開始計算時間。my.cnf配置如下:

[mysqld]
default_password_lifetime=90

 

 

如果要設置密碼永不過期的全局策略,可以這樣:(注意這是默認值,配置文件中可以不聲明)

[mysqld]
default_password_lifetime=0
 

在MySQL運行時可以使用超級權限修改此配置:

mysql>  SET  GLOBAL   default_password_lifetime = 90;
Query OK, 0  rows  affected (0.00 sec)

還可以使用ALTER USER命令為每個具體的用戶賬戶單獨設置特定的值,它會自動覆蓋密碼過期的全局策略。要注意ALTER USER語句的INTERVAL的單位是“天”。

ALTER USER  ‘testuser'@‘localhost' PASSWORD  EXPIRE INTERVAL 30 DAY;

 

 

禁用密碼過期:

ALTER USER  'testuser'@'localhost' PASSWORD  EXPIRE NEVER;

 

 

讓用戶使用默認的密碼過期全局策略:

ALTER USER  'testuser'@'localhost' PASSWORD  EXPIRE DEFAULT;

 

 

從MySQL 5.7.6版開始,還可以使用ALTER USER語句修改用戶的密碼:

mysql> ALTER USER  USER() IDENTIFIED BY '637h1m27h36r33K';
Query OK, 0 rows affected (0.00 sec)

 

 

后記

在MySQL 5.7.8版開始用戶管理方面添加了鎖定/解鎖用戶賬戶的新特性, related to user management is locking/unlocking user accounts when CREATE USER, or at a later time running the ALTER USER statement.

下面創建一個帶賬戶鎖的用戶:

mysql> CREATE USER 'furrywall'@'localhost' IDENTIFIED BY '71m32ch4n6317' ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)

 

 

如下所示,新創建的用戶在嘗試登陸時會得到一個ERROR 3118錯誤消息提示:

$ mysql -ufurrywall -p
Enter password:
ERROR 3118 (HY000): Access denied for user 'furrywall'@'localhost'. Account is locked.

 

 

此時就需要使用ALTER USER … ACCOUNT UNLOCK語句進行解鎖了:

mysql>ALTER USER 'furrywall'@'localhost' ACCOUNT UNLOCK;
Query OK, 0 rows affected (0.00 sec)

 

 

現在,這個用戶已經解鎖,可以登陸了:

$ mysql -ufurrywall -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 17
Server version: 5.7.8-rc MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for  help. Type 'c' to clear the current input statement.
mysql>

 

 

還可以這樣鎖定用戶賬戶:

mysql> ALTER USER 'furrywall'@'localhost' ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)

 

 

以上就是為大家介紹的MySQL的用戶密碼過期功能的相關內容,希望對大家的學習有所幫助。

 

 轉自:http://www.jb51.net/article/79347.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM