詳解MySQL的用戶(hù)密碼過(guò)期功能
Payment Card Industry,即支付卡行業(yè),PCI行業(yè)表示借記卡、信用卡、預(yù)付卡、電子錢(qián)包、ATM和POS卡及相關(guān)的業(yè)務(wù)。
PCI DSS,即PCI數(shù)據(jù)安全標(biāo)準(zhǔn)(Payment Card Industry Data Security Standard)是由PCI安全標(biāo)準(zhǔn)委員會(huì)制定,旨在使國(guó)際上采用一致的數(shù)據(jù)安全措施。
PCI DSS標(biāo)準(zhǔn)要求用戶(hù)每隔90天必須更改他們的密碼。那么MySQL數(shù)據(jù)庫(kù)該怎樣適應(yīng)這個(gè)情況?幸運(yùn)的是,在MySQL版本5.6.6版本起,添加了password_expired功能,它允許設(shè)置用戶(hù)的過(guò)期時(shí)間。
這個(gè)特性已經(jīng)添加到mysql.user數(shù)據(jù)表,但是它的默認(rèn)值是”N”??梢允褂肁LTER USER語(yǔ)句來(lái)修改這個(gè)值。
下面是關(guān)于如何設(shè)置MySQL用戶(hù)賬號(hào)的到期日期一個(gè)簡(jiǎn)單例子:
mysql> ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;
一旦某個(gè)用戶(hù)的這個(gè)選項(xiàng)設(shè)置為”Y”,那么這個(gè)用戶(hù)還是可以登陸到MySQL服務(wù)器,但是在用戶(hù)未設(shè)置新密碼之前不能運(yùn)行任何查詢(xún)語(yǔ)句,而且會(huì)得到如下錯(cuò)誤消息提示:
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.
當(dāng)用戶(hù)設(shè)置了新密碼后,此用戶(hù)的所有操作(根據(jù)用戶(hù)自身的權(quán)限)會(huì)被允許執(zhí)行:
mysql> SET PASSWORD=PASSWORD('mechipoderranen'); Query OK, 0 rows affected (0.00 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | data | | logs | | mysql | | performance_schema | | test | +--------------------+ 6 rows in set (0.00 sec) mysql>
DBA可以通過(guò)cron定時(shí)器任務(wù)來(lái)設(shè)置MySQL用戶(hù)的密碼過(guò)期時(shí)間。
從MySQL 5.7.4版開(kāi)始,用戶(hù)的密碼過(guò)期時(shí)間這個(gè)特性得以改進(jìn),可以通過(guò)一個(gè)全局變量default_password_lifetime來(lái)設(shè)置密碼過(guò)期的策略,此全局變量可以設(shè)置一個(gè)全局的自動(dòng)密碼過(guò)期策略。
用法示例:
可以在MySQL的配置文件中設(shè)置一個(gè)默認(rèn)值,這會(huì)使得所有MySQL用戶(hù)的密碼過(guò)期時(shí)間都為90天,MySQL會(huì)從啟動(dòng)時(shí)開(kāi)始計(jì)算時(shí)間。my.cnf配置如下:
[mysqld] default_password_lifetime=90
如果要設(shè)置密碼永不過(guò)期的全局策略,可以這樣:(注意這是默認(rèn)值,配置文件中可以不聲明)
[mysqld] default_password_lifetime=0
在MySQL運(yùn)行時(shí)可以使用超級(jí)權(quán)限修改此配置:
mysql> SET GLOBAL default_password_lifetime = 90; Query OK, 0 rows affected (0.00 sec)
還可以使用ALTER USER命令為每個(gè)具體的用戶(hù)賬戶(hù)單獨(dú)設(shè)置特定的值,它會(huì)自動(dòng)覆蓋密碼過(guò)期的全局策略。要注意ALTER USER語(yǔ)句的INTERVAL的單位是“天”。
ALTER USER ‘testuser'@‘localhost' PASSWORD EXPIRE INTERVAL 30 DAY;
禁用密碼過(guò)期:
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
讓用戶(hù)使用默認(rèn)的密碼過(guò)期全局策略:
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE DEFAULT;
從MySQL 5.7.6版開(kāi)始,還可以使用ALTER USER語(yǔ)句修改用戶(hù)的密碼:
mysql> ALTER USER USER() IDENTIFIED BY '637h1m27h36r33K'; Query OK, 0 rows affected (0.00 sec)
后記
在MySQL 5.7.8版開(kāi)始用戶(hù)管理方面添加了鎖定/解鎖用戶(hù)賬戶(hù)的新特性, related to user management is locking/unlocking user accounts when CREATE USER, or at a later time running the ALTER USER statement.
下面創(chuàng)建一個(gè)帶賬戶(hù)鎖的用戶(hù):
mysql> CREATE USER 'furrywall'@'localhost' IDENTIFIED BY '71m32ch4n6317' ACCOUNT LOCK; Query OK, 0 rows affected (0.00 sec)
如下所示,新創(chuàng)建的用戶(hù)在嘗試登陸時(shí)會(huì)得到一個(gè)ERROR 3118錯(cuò)誤消息提示:
$ mysql -ufurrywall -p Enter password: ERROR 3118 (HY000): Access denied for user 'furrywall'@'localhost'. Account is locked.
此時(shí)就需要使用ALTER USER … ACCOUNT UNLOCK語(yǔ)句進(jìn)行解鎖了:
mysql>ALTER USER 'furrywall'@'localhost' ACCOUNT UNLOCK; Query OK, 0 rows affected (0.00 sec)
現(xiàn)在,這個(gè)用戶(hù)已經(jīng)解鎖,可以登陸了:
$ 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>
還可以這樣鎖定用戶(hù)賬戶(hù):
mysql> ALTER USER 'furrywall'@'localhost' ACCOUNT LOCK; Query OK, 0 rows affected (0.00 sec)
以上就是為大家介紹的MySQL的用戶(hù)密碼過(guò)期功能的相關(guān)內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
設(shè)置MySQL自動(dòng)增長(zhǎng)從某個(gè)指定的數(shù)開(kāi)始方法
下面小編就為大家?guī)?lái)一篇設(shè)置MySQL自動(dòng)增長(zhǎng)從某個(gè)指定的數(shù)開(kāi)始方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01關(guān)于數(shù)據(jù)庫(kù)中的查詢(xún)優(yōu)化
這篇文章主要介紹了關(guān)于數(shù)據(jù)庫(kù)中的查詢(xún)優(yōu)化,對(duì)于大型的應(yīng)用系統(tǒng),數(shù)據(jù)動(dòng)輒上百萬(wàn),就需要了解DBMS對(duì)查詢(xún)語(yǔ)句的處理過(guò)程和優(yōu)化算法,更好的利用其優(yōu)化算法,以提高系統(tǒng)的性能,需要的朋友可以參考下2023-07-07最新MySQL數(shù)據(jù)庫(kù)漏洞情況通報(bào)
本文是對(duì)近期mysql報(bào)出的漏洞情況進(jìn)行了簡(jiǎn)單的說(shuō)明以及漏洞的修復(fù)措施分享,有需要的小伙伴一定要關(guān)注下2016-09-09MySQL中復(fù)制表結(jié)構(gòu)及其數(shù)據(jù)的5種方式
在MySQL中,復(fù)制表結(jié)構(gòu)及其數(shù)據(jù)可以通過(guò)多種方式實(shí)現(xiàn),每種方法都有其適用場(chǎng)景,選擇合適的方法可以提高工作效率,注意處理目標(biāo)表存在性、大表復(fù)制效率及外鍵等約束,感興趣的可以了解一下2024-09-09完美解決phpstudy安裝后mysql無(wú)法啟動(dòng)(無(wú)需刪除原數(shù)據(jù)庫(kù),無(wú)需更改任何配置,無(wú)需更改端口)直接共存
這篇文章主要介紹了完美解決phpstudy安裝后mysql無(wú)法啟動(dòng)(無(wú)需刪除原數(shù)據(jù)庫(kù),無(wú)需更改任何配置,無(wú)需更改端口)直接共存 ,需要的朋友可以參考下2019-04-04