当前位置: 首页 > news >正文

Oracle(109)如何管理用户密码策略?

管理用户密码策略是确保数据库安全性的重要措施之一。通过定义和实施密码策略,可以确保用户使用强密码,并定期更新密码,以防止未经授权的访问。以下是如何在 MySQL 和 PostgreSQL 中详细配置和管理用户密码策略的步骤和代码示例。

MySQL 用户密码策略管理

MySQL 提供了多种工具和配置选项来管理用户密码策略,包括密码复杂性、密码过期和密码历史记录等。

1. 配置密码策略

在 MySQL 中,可以通过 validate_password 插件来配置密码策略。首先,需要确保该插件已启用。

-- 启用 validate_password 插件
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
2. 配置密码复杂性要求

使用 validate_password 插件,可以配置密码复杂性要求,如密码长度、字符类型等。

-- 设置密码最小长度
SET GLOBAL validate_password.length = 8;-- 设置密码必须包含的字符类型
SET GLOBAL validate_password.mixed_case_count = 1;  -- 至少一个大写和一个小写字母
SET GLOBAL validate_password.number_count = 1;      -- 至少一个数字
SET GLOBAL validate_password.special_char_count = 1;-- 至少一个特殊字符-- 设置密码验证策略等级
SET GLOBAL validate_password.policy = MEDIUM;
3. 配置密码过期和历史记录

MySQL 还支持配置密码过期和历史记录,以确保用户定期更新密码,并防止重复使用旧密码。

-- 设置密码过期时间(天)
SET GLOBAL default_password_lifetime = 90;-- 创建用户时设置密码过期时间
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'NewUserPass!123' PASSWORD EXPIRE INTERVAL 90 DAY;-- 设置密码历史记录
ALTER USER 'new_user'@'localhost' PASSWORD HISTORY 5;
4. 强制用户在下次登录时更改密码

可以强制用户在下次登录时更改密码,以确保密码更新。

ALTER USER 'new_user'@'localhost' PASSWORD EXPIRE;

PostgreSQL 用户密码策略管理

PostgreSQL 通过配置参数和扩展模块来管理用户密码策略。

1. 安装并配置 passwordcheck 模块

passwordcheck 模块用于检查密码复杂性。首先,需要安装该模块。

编辑 postgresql.conf 文件,添加 passwordcheck 模块。

# 在 postgresql.conf 文件中添加以下行
shared_preload_libraries = 'passwordcheck'

然后,重启 PostgreSQL 服务。

# 重启 PostgreSQL 服务
sudo systemctl restart postgresql
2. 配置密码复杂性要求

通过 passwordcheck 模块,可以配置密码复杂性要求。

编辑 postgresql.conf 文件,添加以下配置:

# 设置密码最小长度
passwordcheck.min_length = 8# 设置密码必须包含的字符类型
passwordcheck.min_upper = 1    # 至少一个大写字母
passwordcheck.min_lower = 1    # 至少一个小写字母
passwordcheck.min_digit = 1    # 至少一个数字
passwordcheck.min_special = 1  # 至少一个特殊字符
3. 配置密码过期和历史记录

PostgreSQL 可以通过 pg_cron 扩展和自定义脚本来管理密码过期和历史记录。

首先,安装 pg_cron 扩展。

# 安装 pg_cron 扩展(以 Ubuntu 为例)
sudo apt-get install postgresql-13-cron

在数据库中启用 pg_cron 扩展。

-- 在数据库中启用 pg_cron 扩展
CREATE EXTENSION pg_cron;

创建一个表来存储用户密码历史记录。

-- 创建密码历史记录表
CREATE TABLE password_history (username TEXT,password TEXT,changed_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

创建一个触发器函数,在密码更改时记录密码历史。

-- 创建触发器函数
CREATE OR REPLACE FUNCTION log_password_change() RETURNS TRIGGER AS $$
BEGININSERT INTO password_history (username, password)VALUES (NEW.usename, NEW.passwd);RETURN NEW;
END;
$$ LANGUAGE plpgsql;

创建触发器,在用户密码更改时调用触发器函数。

-- 创建触发器
CREATE TRIGGER password_change_trigger
AFTER UPDATE OF passwd ON pg_shadow
FOR EACH ROW
WHEN (OLD.passwd IS DISTINCT FROM NEW.passwd)
EXECUTE FUNCTION log_password_change();

创建一个定时任务,定期检查密码过期并通知用户。

-- 创建定时任务
SELECT cron.schedule('0 0 * * *', $$ DO $$DECLAREuser_rec RECORD;BEGINFOR user_rec IN SELECT usename FROM pg_shadow WHERE passwd IS NOT NULL AND (NOW() - '90 days'::INTERVAL) > passwd_changedLOOP-- 发送通知给用户(实现通知逻辑)END LOOP;END;$$;
$$);

总结

管理用户密码策略是确保数据库安全性的重要措施。通过配置密码复杂性、密码过期和密码历史记录,可以有效地防止未经授权的访问和潜在的安全威胁。上述步骤和代码示例展示了如何在 MySQL 和 PostgreSQL 中详细配置和管理用户密码策略,以提高数据库的安全性。

相关文章:

Oracle(109)如何管理用户密码策略?

管理用户密码策略是确保数据库安全性的重要措施之一。通过定义和实施密码策略,可以确保用户使用强密码,并定期更新密码,以防止未经授权的访问。以下是如何在 MySQL 和 PostgreSQL 中详细配置和管理用户密码策略的步骤和代码示例。 MySQL 用户…...

【重学MySQL】十三、基本的 select 语句

【重学MySQL】十三、基本的 select 语句 基本结构示例检索所有列检索特定列带有条件的检索dual 列的别名基本的列别名使用别名在表达式中的使用别名在聚合函数中的应用 distinct基本用法注意事项示例 空值参与运算数学运算字符串连接比较运算逻辑运算处理NULL的函数 着重号为什…...

vue3.5新特性整理

本文章介绍vue3.5更新的几个新特性 1.vue中watch中深度监听更新的层级 在之前deep 属性是一个boolean值 我们要监听对象的变化需要使用deep: true 在vue3.5之后 deep 也可以是一个number 表示对象要监听的层级数量 这个功能还是比较实用的 因为层级过深的时候我们可能需要监听…...

RK3588 系列之3—rknn使用过程中遇到的bug

RK3588 系列之3—rknn使用过程中遇到的bug 1.librockchip_mpp.so: file format not recognized; treating as linker scrip2.Could not find a package configuration file provided by "OpenCV" with any of the following names参考文献 1.librockchip_…...

Java中的强引用、软引用、弱引用和虚引用于JVM的垃圾回收机制

参考资料 https://juejin.cn/post/7123853933801373733 在 Java 中,引用类型分为四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用&#xf…...

网络协议的基础知识

前言 本文将详细介绍IP地址、端口号、协议、协议分层、封装、分用、客户端、服务器、请求、响应以及两台主机之间的网络通信流程等网络原理知识。 一、IP 地址 概念 IP地址主要用于标识网络中的主机和其他网络设备(如路由器)的位置。 类似于快递中的…...

Java高级Day37-UDP网络编程

109.netstat指令 netstat -an 可以查看当前主机网络情况,包括端口监听情况和网络连接情况 netstat -an|more 可以分页显示 要求在dos控制台下执行 说明: LISTENING表示某个端口在监听 如果有一个外部程序(客户端)连接到该端口…...

如何利用ChatGPT提升学术论文讨论部分的撰写质量和效率

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。经过数月爆肝,终于完成学术AI使用教…...

谷歌seo网址如何快速被收录?

想让你的网站快速被搜索引擎收录,可以采取几种不同的策略。首先,确保你的网站内容丰富、有价值,搜索引擎更喜欢收录内容质量高的网站。同时,增强网站的外链建设,做好这些站内优化,接下来就是通过谷歌搜索控…...

自动驾驶---什么是Frenet坐标系?

1 背景 为什么提出Frenet坐标系?Frenet坐标系的提出主要是为了解决自动驾驶系统在路径规划的问题,它基于以下几个原因: 符合人类的驾驶习惯: 人类驾驶员在驾驶过程中,通常不会关心自己距离起点的横向和纵向距离&#x…...

如何编写Linux PCI设备驱动器 之一

如何编写Linux PCI设备驱动器 之一 PCI寻址PCI驱动器使用的APIpci_register_driver()pci_driver结构pci_device_id结构 如何查找PCI设备存取PCI配置空间读配置空间APIs写配置空间APIswhere的常量值共用部分类型0类型1 PCI总线通过使用比ISA更高的时钟速率来实现更好的性能&…...

梯度弥散问题及解决方法

梯度弥散问题及解决方法 简要阐述梯度弥散发生的原因以及现象针对不同发生原因有什么解决方案1. 使用ReLU及其变体激活函数2. 权重初始化3. 批量归一化(Batch Normalization)4. 残差连接(Residual Connections)5. 梯度裁剪(Gradient Clipping)简要阐述梯度弥散发生的原因…...

Python中pickle文件操作及案例-学习篇

一、简介 Pickle 算是Python的一种数据序列化方法,它能够将对象转换为字节流,进而可以保存到文件中或通过网络传输给其他Python程序。这种方式非常适合快速简便地保存复杂的数据结构,例如列表、字典、自定义对象等。 二、pickle文件的读写 …...

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…...

C和C++内存管理

C和C内存管理 (一)C/C内存分布(二)C语言动态内存管理(三)c内存管理(3.1)new/delete操作内置类型(3.2)new和delete操作自定义类型 (四)…...

axios取消请求

1.使用CancelToken: class RequestHttp {service: AxiosInstance;public constructor(config: AxiosRequestConfig) {// 实例化axiosthis.service axios.create(config);/*** description 请求拦截器* 客户端发送请求 -> [请求拦截器] -> 服务器*/this.service.interce…...

阿里中间件——diamond

一、前言 最近工作不忙闲来无事,仔细分析了公司整个项目架构,发现用到了很多阿里巴巴集团开源的框架,今天要介绍的是中间件diamond. 二、diamond学习笔记 1、diamond简介 diamond是一个管理持久配置(持久配置是指配置数据会持久化…...

pyenv -- 一款macos下开源的多版本python环境安装管理工具 国内加速版安装 + 项目venv虚拟环境 pip加速 使用与总结

一个比较方便实用的python多版本环境安装管理工具, 阿里云加速版本 pyenv安装方法: 直接克隆本下面到你的本地目录,然后设置环境变量即可 git clone https://gitee.com/tekintian/pyenv.git ~/.pyenv 环境变量配置 在~/.bash_profile 或者 .zshrc 中增加环境变量 export …...

VitePress 自定义 CSS 指南

VitePress 是一款基于 Vite 和 Vue 3 的静态网站生成器,专为文档编写而设计。尽管 VitePress 提供了丰富的默认主题,但在某些情况下,我们可能需要对其进行更深入的定制以满足特定的视觉需求。本文将详细介绍如何通过覆盖根级别的 CSS 变量来自…...

【舍入,取整,取小数,取余数丨Excel 函数】

数学函数 1、Round函数 Roundup函数 Rounddown函数 取整:(Int /Trunc)其他舍入函数: 2、Mod函数用Mod函数提取小数用Mod函数 分奇偶通过身份证号码判断性别 1、Round函数 Roundup函数 Rounddown函数 Round(数字,保留几位小数)(四…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...