【MySQL】编写随机密码生成脚本
数据需求:
密码规则是 12位 数字 + 字母 混合后MD5加密
然后导出一个表格或者记录文件,文件没明确要求
实现过程:
1、MD5加密函数使用
- SET @txt = '123456';
- SELECT @txt AS '明文', MD5(@txt) AS 'MD5密文';
- Query OK, 0 rows affected (0.00 sec)
- +--------+----------------------------------+
- | 明文 | MD5密文 |
- +--------+----------------------------------+
- | 123456 | e10adc3949ba59abbe56e057f20f883e |
- +--------+----------------------------------+
- 1 row in set (0.06 sec)
2、MD5加密后的密文本身就符合数字和字母的混合规则
配合RAND()函数, 使用LEFT 或者 RIGHT截取即可
- SET @val = RAND();
- SET @md5Val = MD5(@val);
- SELECT @val AS '随机值', @md5Val AS 'MD5加密值', LEFT(@md5Val, 12) AS '最终的密码';
- Query OK, 0 rows affected (0.00 sec)
- Query OK, 0 rows affected (0.00 sec)
- +--------------------+----------------------------------+--------------+
- | 随机值 | MD5加密值 | 最终的密码 |
- +--------------------+----------------------------------+--------------+
- | 0.9000418101437779 | 40de920815f9647c5ac97545e58b7b94 | 40de920815f9 |
- +--------------------+----------------------------------+--------------+
- 1 row in set (0.03 sec)
3、创建密码本表,排除掉管理员账号
这一步已经生成了明文密码,由于字段不能复用操作,多一个步骤来更新密文
- CREATE TABLE pwd_book AS
- SELECT id, us_name, us_username, LEFT(MD5(RAND()), 12) AS pwd, us_password AS md5, NOW() AS create_time
- FROM sys_pr_user
- WHERE sys_pr_user.id != 1 AND sys_pr_user.us_username != 'admin';
4、更新密码本表,赋值密文
- UPDATE pwd_book SET md5 = MD5(pwd);
5、将系统用户表的密码字段覆写,使用UPDATE JOIN关联更新(排除管理员账号)
- UPDATE sys_pr_user
- JOIN pwd_book ON sys_pr_user.id = pwd_book.id
- SET sys_pr_user.us_password = pwd_book.md5
- WHERE sys_pr_user.id != 1 AND sys_pr_user.us_username != 'admin';
6、导出密码本
- SELECT '用户名 ', '账号', '密码'
- UNION
- SELECT us_name, us_username, pwd
- FROM pwd_book
- INTO OUTFILE 'C:\\Users\\Administrator\\Desktop\\pwd_book.txt';
这一步导出MySQL默认是禁止的,需要更改配置文件开放:
- show variables like "secure_file_priv";
- +------------------+-------+
- | Variable_name | Value |
- +------------------+-------+
- | secure_file_priv | NULL |
- +------------------+-------+
- 1 row in set (0.11 sec)
详细见文章:
- https://blog.csdn.net/best_luxi/article/details/81479820
7、删除密码本表
- DROP TABLE pwd_book;
【MySQL】编写随机密码生成脚本的更多相关文章
- mysql自己编写启停脚本
一.场景 在实际生产环境中要求相对较高的企业对于root权限管控相对比较高,故而很多软件并非安装在root用户下(当然root用户权限也可管理,但正常情况下root权限并不会给业务使用方,而会给一个普 ...
- centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
centos LNMP第一部分环境搭建 LAMP安装先后顺序 LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/local/php/{ ...
- Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表
Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介绍一下吧! 先下载mysql的库文件链接:http://files. ...
- 【排障】编译安装Mysql并使用自启动脚本mysqld后报错
本文用于记录在某次个人实验搭建DZ论坛,在编译安装部署mysql环节时出的错到最终排除错误的过程, 前面采用DZ官网所采用的编译安装mysql的过程就省去,主要从报错处开始讲述. (题外话,经此一役后 ...
- sql server数据库备份单个表的结构和数据生成脚本
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- [转贴]systemd 编写服务管理脚本
[转贴]sparkdev大神的博客, 关于 systemd的配置文件的 介绍, 自己之前二进制安装 k8s 时 超过一个 service文件 但是当时不明不白的. 现在再学习一下大神的文章 的确牛B ...
- 浅谈如何在SQL Server中生成脚本
在生成脚本过程中,有很多参数可以选择,合理的配置这些参数,可以让我们很方便的按照我们的期望生成脚本. 生成脚本的一些选项,如下图: 我这里是SQL 2005 的选项, SQL 2008 的选项跟这个稍 ...
- sql server数据库备份单个表的结构和数据生成脚本【转】
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- shell脚本编程学习笔记(三)编写邮件报警脚本
一.shell编写邮件报警脚本 1.POSTFIX邮件服务器准备 a.首先卸载服务器上自带的sendmail rpm -qa sendmail* //查看安装的sendmail rpm -e send ...
- 编写 Dockerfile 生成自定义镜像
一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dock ...
随机推荐
- navicat安装和破解
navicat16.0 下载地址: https://download.navicat.com.cn/download/navicat160_premium_cs_x64.exe 破解教程&破解 ...
- 类的阐述 package(包)
类的阐述 同一个文件中可以定义很多类 编译后,每个类都会生成独立的.class文件 一个类中,只能有一个主函数,每个类都可以有自己的主函数 public修饰的类称为公开类,要求类名必须与文件名称完全相 ...
- kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法
kettle中不能直接调用python脚本,可以通过shell脚本和http进行调用pyton服务. 一.shell脚本调用python脚本 1.下面是一段简单的无参python脚本 import o ...
- 【Java面试题-基础知识01】Java数据类型四连问?
一.Java中的基础数据类型有哪些? Java中的基本数据类型包括: 1. byte:8位有符号整数,范围为-128到127.2. short:16位有符号整数,范围为-32768到32767.3. ...
- springboot3时代创建springboot2程序项目
springboot3时代创建springboot2程序项目 目前,IDEA,springboot 官网,都不能创建基于JDK8(JDK1.8)的springboot程序了. 解决办法: 1. 先在官 ...
- C# .NET MVC 表单提交前校验数据等
页面上写2个button,一个普通button,另一个是submit,submit的这个隐藏.校验函数写在普通button里,普通button click函数中去提交表单. 页面: <input ...
- Math.ceil,Math.round,Math.floor区别
Math.ceil,Math.round,Math.floor区别 //向上取整 System.out.println("amt1=" + Math.ceil(71.01)); / ...
- Mybatis if判断中使用了Ognl关键字导致报错解决方法
mybatis xml中使用OGNL解析参数,如果直接使用了关键字则会导致解析失败. 常见的关键字有: 字段 mybatis关键字 bor (字符|)的英文 xor 字符^的英文 and 字符& ...
- FFmpeg如何将一个gif嵌入视频指定位置并指定显示时间
背景 很简单的需求:我需要将一个gif嵌入到视频里面的指定位置,并要指定时间播放: 环境 windows11 64位专业版 ffmpeg version 2022-04-07-git-607ecc27 ...
- python之集合学习
*******************集合{set}******************* 1.集合set 可变 特点:是由不同元素组成 是无序的 集合中元素必须是不可变类型例如(字符串/元祖/数字) ...