1. 程式人生 > >MySQL 密碼管理之密碼過期和賬號鎖定

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 -