详解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.

当用户设置了新密码后,此用户的所有操作(根据用户自身的权限)会被允许执行:

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可以通过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的用户密码过期功能的相关内容,希望对大家的学习有所帮助。



相关阅读:
Android开发之Button事件实现与监听方法总结
C# web api返回类型设置为json的两种方法
php实现查看邮件是否已被阅读的方法
jQuery统计上传文件大小的方法
当用户退出点击浏览器后退仍可回到原来页面的解决方案
C#将jpg转换为pdf的方法
JavaScript实现的GBK、UTF8字符串实际长度计算函数
本月底将停售 Win8/Win8.1专业版升级包和介质包
Win8.1更新时提示错误代码为80246010的解决方案
C语言练习题:自由落体的小球简单实例
深入剖析Android系统中Service和IntentService的区别
很酷的HTML5电子书翻页动画特效
C#生成条形码图片的简单方法
iOS应用开发中监听键盘事件的代码实例小结
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 定州-德阳 煤田-大庆西 卫辉-西安 齐齐哈尔-汇流河 石家庄-庐山 恭城-鹿寨北 界首市-宣城 劲松-达拉滨 文水-中卫 上海-吐鲁番 赤峰-新民 谷城-云梦 溆浦南-信阳东 饶平-仙游 鲁河-林口 任丘-芜湖 潮阳-惠安 雁荡山-庄桥 烟筒山-静海 华山-石家庄 辛集-中卫 温州-息县 虢镇-泰州 锦州-阿城 潼南-施秉 冯屯-山海关 沈阳-新立屯 一面坡-八面通 公主岭南-昌图西 枣强-许昌 太原-禹城 洛阳东-余姚 开封-洋河 镇安-西安南 定西-西峡 合肥南-宁海 戚墅堰-昆山南 镇远-龙游 萍乡-高密 东镇-五台山 巩义-枣庄西 月华-联合乡 灵宝-渑池 潮水-东边井 包头东-自贡 浠水-西安 天水-华蓥 德兴-济南西 绥中-香兰 岭南-得耳布尔 随州-渭南 安达-苇河 天祝-乌鲁木齐南 漠河-翠峰 邵阳-渭南 恒地营-四方台 榆次-月山 漳州-松江南 达州-扬州 兖州-芜湖 曲靖-德惠 岳阳-随州 瓦房店-抚顺北 洮南-延安 扶余北-沈阳南 合肥-义乌 河洛营-赤峰西 丰乐镇-香兰 秦皇岛-凤县 册亨-百色 徐州东-贵定北 烟筒屯-长春 富拉尔基-肇东 铜鼓溪-沙沙坡 龙骨甸-小村 河源-罗山 佳木斯-洪河 太姥山-庄桥 桂林-南宁 加格达奇-阿城 有没有北京到海南的火车列车票价多少钱多长时间到
从天津市中心到大邱庄钢材市场怎么坐车
我想学电磁场与微波技术,去中国科学院电子所好还是中国工程...
湖北汉口火车列车站到武汉市武昌珞瑜路吴家湾789号 湖北省通信管
中国农业银行青岛支行转帐到阜阳分行要多少小时啊?
阳新到深圳的火车列车票是多少钱
从湖南常德到山东烟台需要几天?
从南京经京沪高速到大港油田怎么坐车
随身携带欧莱雅或者玉兰油这些膏体化妆品嘛我是从昆明机
现在济南火车列车站提前几天售票,要买11号去南京的动车票,几号
上海到武当山多远怎么走
我在辽阳买的卧铺票到大连,这个车是2062次加格达奇到大连的
K45从北京到德州的提前几天买票
龙岩哪里有捷安特电动车专卖
请问嘉兴列车火车站出发到宁波列车火车站,是那里下车的
莆田的户口,以前读书迁到厦门,现在想迁回莆田,想问下这个
表妹从仁川回青岛,是在大港下船,我住在城阳,有什么公交车
承德世纪城承德世纪城的房价在高铁修通时能突破10000吗
谁知道苏州到丹东的多少钱呢坐火车
我要到朝鲜 急知道那的环境 习惯 生活
急,急,急南昌买火车列车票的问题
什川桃园
从武汉到佛山几点的列车火车。票价是多少
急泰州汽车南站到泰兴的时刻表最后一班是几点啊
天津至河南省方城县柳河乡关沟村北城庄的最近行车路线
暑假想去福建南平武夷山旅游求详细路线
从兰州去石河子请问坐西安到奎屯的火车列车近,还是坐兰州到乌
8月30日晚从南昌飞往上海的飞机是否停靠杭州
赤峰至鞍山怎么坐车省钱?来回多少钱
台州临海到成都的交通方法

Copyright © 2016 phpStudy |