MySQL 密碼管理之密碼過期和賬號鎖定
執行環境:centos7.4+MySQL5.7.15
Payment Card Industry,即支付卡行業,PCI行業表示借記卡、信用卡、預付卡、電子錢包、ATM和POS卡及相關的業務。
PCI DSS,即PCI資料安全標準(Payment Card Industry Data Security Standard)是由PCI安全標準委員會制定,旨在使國際上採用一致的資料安全措施。
PCI DSS標準要求使用者每隔90天必須更改他們的密碼。
在MySQL版本5.6.6版本起,添加了password_expired功能,它允許設定使用者的過期時間。
從MySQL 5.7.4版開始,使用者的密碼過期時間這個特性得以改進,可以通過一個全域性變數default_password_lifetime來設定密碼過期的策略,此全域性變數可以設定一個全域性的自動密碼過期策略。
MySQL 5.7.6版開始,還可以使用ALTER USER語句修改使用者的密碼。
在MySQL 5.7.8版開始使用者管理方面添加了鎖定/解鎖使用者賬戶的新特性。
在MySQL8.0版本中新增了密碼重用的管理。
密碼管理功能包含:
密碼過期:密碼週期性修改
密碼重用限制:防止舊密碼被再次使用。
密碼強度:需要強壯的密碼。
mysql5.7.10(GA)版本之後預設的密碼是永不過期的(default_password_lifetime=0)。
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.15-log |
+------------+
1 row in set (0.00 sec)
mysql> show variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 0 |
+---------------------------+-------+
1 row in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set (0.04 sec)
mysql> show variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 0 |
+---------------------------+-------+
1 row in set (0.01 sec)
--為了演示建立2個賬號temp 和backup:
mysql> create user [email protected]'%' identified by 'temp';
mysql> create user [email protected]'%' identified by 'backup' PASSWORD EXPIRE INTERVAL 30 DAY;
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp','backup');
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *92D3FC821547543FCC854DE4426B7BFD3A0EE2ED | N | 2018-07-12 10:40:51 | NULL | N |
| % | backup | *1827DC630AAEB1E997DB2B212CC94EFD9C431555 | N | 2018-07-12 10:40:52 | 30 | N |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
2 rows in set (0.00 sec)
可以看到建立的使用者password_expired為N表示密碼密碼不過期,password_lifetime表示密碼週期,單位是天,NULL表示使用的預設密碼策略,account_locked表示賬號是否被鎖定。
mysql> alter user [email protected]'%' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp','backup');
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *92D3FC821547543FCC854DE4426B7BFD3A0EE2ED | N | 2018-07-12 10:40:51 | NULL | N |
| % | backup | *1827DC630AAEB1E997DB2B212CC94EFD9C431555 | N | 2018-07-12 10:40:52 | 0 | N |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
2 rows in set (0.00 sec)
修改密碼永不過期,password_lifetime=0.
mysql> SET GLOBAL default_password_lifetime = 9;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL default_password_lifetime = 0;
Query OK, 0 rows affected (0.00 sec)
密碼的預設過期時間也可以設定到my.cnf檔案中但是需要重啟mysql。
[mysqld]
default_password_lifetime=90
如果要設定密碼永不過期的全域性策略,可以這樣:(注意這是預設值,配置檔案中可以不寫)
[mysqld]
default_password_lifetime=0
mysql> alter user [email protected]'%' PASSWORD EXPIRE default;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp','backup');
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *92D3FC821547543FCC854DE4426B7BFD3A0EE2ED | N | 2018-07-12 10:40:51 | NULL | N |
| % | backup | *1827DC630AAEB1E997DB2B212CC94EFD9C431555 | N | 2018-07-12 10:40:52 | NULL | N |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
2 rows in set (0.00 sec)
修改預設的密碼策略(可以動態修改)為9天,password_lifetime為NULL。
mysql> alter user [email protected]'%' PASSWORD EXPIRE;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp','backup');
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *92D3FC821547543FCC854DE4426B7BFD3A0EE2ED | Y | 2018-07-12 10:40:51 | NULL | N |
| % | backup | *1827DC630AAEB1E997DB2B212CC94EFD9C431555 | N | 2018-07-12 10:40:52 | NULL | N |
+------+--------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
2 rows in set (0.00 sec)
password_expired表示密碼已經過期,下面通過登入驗證密碼是否過期。
# mysql -ptemp -utemp -P3312 -S /tmp/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 534343
Server version: 5.7.15-log
Copyright (c) 2000, 2016, 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> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user [email protected]'%' identified by 'xxx';
Query OK, 0 rows affected (0.00 sec)
註釋:temp使用者需要alter許可權否則無法自己修改密碼的。
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp');
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *3D56A309CD04FA2EEF181462E59011F075C89548 | N | 2018-07-12 10:56:39 | NULL | N |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
1 row in set (0.00 sec)
mysql> ALTER USER USER() IDENTIFIED BY 'YYY';
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp');
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *6A1F4E06FBADDD79831769EF2B9D785D5A5F6113 | N | 2018-07-12 10:59:13 | NULL | N |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
1 row in set (0.00 sec)
mysql> alter user [email protected]'%' account lock;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp');
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *6A1F4E06FBADDD79831769EF2B9D785D5A5F6113 | N | 2018-07-12 10:59:13 | NULL | Y |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
1 row in set (0.01 sec)
此時重新登入則報錯: ERROR 3118 (HY000) Account is locked.
# mysql -utemp -pYYY -P3312 -h 172.16.1.86
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3118 (HY000): Access denied for user 'temp'@'172.16.1.86'. Account is locked.
密碼可以給鎖定,也可以解鎖:
mysql> alter user [email protected]'%' account unlock;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp');
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *6A1F4E06FBADDD79831769EF2B9D785D5A5F6113 | N | 2018-07-12 10:59:13 | NULL | N |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
1 row in set (0.00 sec)
賬戶鎖定也可以在建立用的時候鎖定:
create user 'test'@'%' identified by 'test' account lock;
mysql> create user 'test'@'%' identified by 'test' account lock;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user where user in ('temp','test');
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| host | user | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| % | temp | *6A1F4E06FBADDD79831769EF2B9D785D5A5F6113 | N | 2018-07-12 10:59:13 | NULL | N |
| % | test | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | N | 2018-07-12 11:07:50 | NULL | Y |
+------+------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
2 rows in set (0.00 sec)
此時查詢的account_locked的值為Y。
相關推薦
MySQL 密碼管理之密碼過期和賬號鎖定
執行環境:centos7.4+MySQL5.7.15 Payment Card Industry,即支付卡行業,PCI行業表示借記卡、信用卡、預付卡、電子錢包、ATM和POS卡及相關的業務。 PCI DSS,即PCI資料安全標準(Payment Card Industry
密碼攻擊之基於字典和彩虹表的密碼攻擊
一、撞庫攻擊 最近經常聽到撞庫攻擊的有關新聞,撞庫就是黑客通過收集網際網路已洩露的使用者和密碼資訊,生成對應的字典表,嘗試批量登陸其他網站後,得到一系列可以登入的使用者。作為一個小白,我先從破解口令雜湊值的嘗試入手。 二、Hash函式的特點 雜湊函式:把任意長度的輸入,通過雜湊演算法,變
Exchange Server 2016管理系列課件48.DAG管理之掛起和恢復數據庫副本
Exchange Server 201 數據庫管理 數據庫副本管理 DAG管理 powershell管理exchang 由於各種原因,例如執行計劃內的維護,您可能需要掛起和恢復數據庫副本的連續復制活動。此外,一些管理任務,如種子設定要求您先掛起的數據庫副本。我們建議您當正在更改數據庫或其日
MySQL基礎系列之 儲存過程和函式
摘要:儲存過程和函式是事先經過編譯並存儲在資料庫中的一段SQL語句的集合 儲存過程無返回值,函式有返回值 儲存過程的引數可以使用IN、OUT、INOUT,函式只能使用IN 建立儲存過程 CREATE PROCEDURE 建立函式使用 CREATE FUNCTION 使用CALL語句來呼叫
敏捷專案管理之專案進度和風險管控
專案進度管理表現在兩個層面 1、 微觀層面 是指細化到具體任務的進度管理,這部分的進度管控是精確的,也主要是專案經理和專案成員需要重點實時關注和把控的。一個專案往往有成百上千個需求任務,根據版本計劃安排,對計劃中的任務進度的精確把控,實時關注專案組員遇到的問題和風險,及時的
MySQL日誌檔案之錯誤日誌和慢查詢日誌詳解
實驗環境:MySQL Community Server (GPL) 5.7.17、Ubuntu 16.04 一、MySQL日誌檔案分類 官方文件: 日誌檔案記錄了影響MySQL資料庫的各種型別活動。常見的日誌有以下幾個: 1、錯誤日誌(err
asp.net記住密碼功能之密碼框不能賦值
一、設定密碼框 在asp.NET中密碼框並不神奇,只是將普通TextBox的TextMode屬性值修改為Password即可; 二、防止頁面重新整理清空密碼框 TextBox一旦被修改為密碼框,其填充的值會隨著頁面的重新整理而被清空,處理方法如下: 在頁面後臺,P
Session管理之超時設定和強制下線
關於Session,在Java Web開發中,為我們提供了很多方便,Session是由瀏覽器和伺
MySQL 日誌系統之 redo log 和 binlog
之前我們瞭解了一條查詢語句的執行流程,並介紹了執行過程中涉及的處理模組。一條查詢語句的執行過程一般是經過聯結器、分析器、優化器、執行器等功能模組,最後到達儲存引擎。 那麼,一條 SQL 更新語句的執行流程又是怎樣的呢? 首先我們建立一個表 user_info,主鍵為 id,建立語句如下: CREATE TAB
mysql系列之4----密碼管理、授權、圖形化管理
erl column option process 生成 自己 服務 auth 存儲 一、mysql密碼破解 1、在shell命令行下修改密碼 mysqladmin -hlocalhost -uroot -p password "1234
堡壘機的功能之解決賬號密碼管理不規範問題
運維堡壘機 堡壘機 隨著企業IT系統規模的不斷擴大,業務範圍的快速擴張,運維工作量也隨之增多,企業賬號密碼的安全性越來越無法得到保障。作為IT系統看門人的行雲管家運維堡壘機,如何解決企業運維賬號密碼管理不規範的問題呢? 企業運維存在賬號密碼管理不規範問題 當前企業的支撐系統中存在大量主機系統、應用系
mysql 使用者管理和許可權設定和Mysql初始化root密碼和允許遠端訪問
grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利。 grant select on testdb.* to [email protected]’%’ grant insert on testdb.* to [email protected]’%’ grant
mysql解壓版密碼過期和常用命令
結束mysql程序: netstat-ano | findstr 3306 taskkill/f /pid 8776 強制關閉程序 啟動:net start MySQL 關閉:net stop MySQL 密碼過期 SETPASSWORD = PASSWORD('12
mac下mysql重置密碼及使用用戶和密碼登陸
edi 用戶 tps tar oca 設置密碼 text aid 驗證 回車後 登錄管理員權限 sudo su回車後輸入以下命令來禁止mysql驗證功能 ./mysqld_safe --skip-grant-tables &回車後mysql會自動重啟(偏好設置中my
Centos7.3系統 之 重置Root賬號密碼
root 密碼重置 Centos 7版本系統如何重置root 賬號密碼 問題:centos系統的root賬號的密碼遺忘,怎麽辦呢? 處理辦法: 1、需要對服務器進行重啟操作,在開機界面grub菜單,通過上下鍵選擇啟動項 2、選中後,輸入字母“e”3、大概在16行左右,將ro 改為rw init=/s
奪命雷公狗---linux NO:27 linux下的密碼管理和用戶切換以及sudo的使用
意思 發現 which window 明顯 能開 操作 賬戶 修改 我們在windows下用戶名是可以設置空密碼登錄的,但是在linux 裏面必須要設置一個密碼才可以登錄,否則會失敗的。。。 在linux 下設置密碼可以使用 passwd 這個命令來進行設置。。。 但是
通過遊戲學python 3.6 第一季 第九章 實例項目 猜數字遊戲--核心代碼--猜測次數--隨機函數和屏蔽錯誤代碼--優化代碼及註釋--簡單賬號密碼登陸--賬號的註冊查詢和密碼的找回修改--鎖定賬號--鎖定次數--菜單功能'menufile
lock isp 無限循環 lis true 條件判斷 elif bre format 通過遊戲學python 3.6 第一季 第九章 實例項目 猜數字遊戲--核心代碼--猜測次數--隨機函數和屏蔽錯誤代碼--優化代碼及註釋--簡單賬號密碼登陸--賬號的註冊查詢和密碼的
usermod命令和用戶密碼管理
linux 學習筆記 centos 7 3.4 usermod命令3.5 用戶密碼管理3.6 mkpasswd命令3.4 usermod命令3.5 用戶密碼管理3.6 mkpasswd命令本文出自 “桃源遊記” 博客,請務必保留此出處http://3622288.blog.51cto.com/91
MySQL密碼管理、存儲引擎及事務
mysql密碼管理、存儲引擎及事務MYSQL密碼管理:修改用戶密碼:(1) SET PASSWORD [FOR ‘user‘@‘host‘] = PASSWORD(‘cleartext password‘); (2) UPDATE mysql.user SET Password=PASSWORD(‘clear
Mysql密碼管理及授權
命令格式 一個 直接 客戶 for 執行 tex 客戶端 etc 目錄1 管理root用戶密碼2 用戶授權與權限撤銷3 安裝圖形管理工具1 管理root用戶密碼1.1 修改密碼方法1:用mysqladmin該方式需要知道mysql的原密碼命令格式:mysqladmin -