查询用户的历史登录记录
本文档将展示如何查询平凯数据库中用户的历史登录记录。
打开关于用户登录信息的控制开关
全局系统变量 tidb_enable_login_history 是用来控制用户登录记录的开关。此变量默认值为 OFF,表示不记录用户的登录信息,在使用本功能前需要打开此开关。
有关此开关的具体操作如下:
查询此变量开关的值
show variables like 'tidb_enable_login_history';打开此功能
set global tidb_enable_login_history='ON';关闭此功能
set global tidb_enable_login_history='OFF';
用户历史登录记录系统表
为保障数据库服务的安全,平凯数据库支持查询用户的历史登录信息。
用户的历史登录记录保存在系统表 mysql.login_history 中,其中包括用户登录时的 User,Connection_id,time,client host 以及登录是否成功等信息,具体 schema 信息如下:
login_history | CREATE TABLE `login_history` (
`Time` timestamp DEFAULT CURRENT_TIMESTAMP,
`Host` char(255) NOT NULL DEFAULT '',
`User` char(32) NOT NULL DEFAULT '',
`DB` char(64) NOT NULL DEFAULT '',
`Connection_id` bigint(21) NOT NULL DEFAULT '0',
`Result` char(16) NOT NULL DEFAULT '',
`Client_host` char(255) NOT NULL DEFAULT '',
`Detail` text DEFAULT NULL,
KEY `idx_user` (`User`),
UNIQUE KEY `idx_session_id` (`Connection_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![ttl] TTL=`time` + INTERVAL 3 MONTH */ /*T![ttl] TTL_ENABLE='ON' */ |
查询所有用户的登录历史信息
当具备 MySQL 系统表的查询权限时,可查询所有用户的历史登录记录。
SELECT * FROM mysql.login_history;
通过查询此系统表,用户可通过 sql 筛查某一用户的最近一次的成功或失败的登录记录。
查询用户自身的登录历史信息
当用户不具备查询系统表 mysql.login_history 的权限时,可以查询本用户自身的历史登录记录。
SELECT * FROM information_schema.user_login_history;
登录历史记录的自动回收
系统表 mysql.login_history 设置了 TTL,在默认条件下 mysql.login_history 保留 3 个月之内的历史记录。用户可以通过修改 TTL 参数来配置历史登录记录的保留周期,详细操作见使用 TTL 定期删除过期数据。