数据需求:

密码规则是 12位 数字 + 字母 混合后MD5加密

然后导出一个表格或者记录文件,文件没明确要求

实现过程:

1、MD5加密函数使用

  1. SET @txt = '123456';
  2. SELECT @txt AS '明文', MD5(@txt) AS 'MD5密文';
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. +--------+----------------------------------+
  6. | 明文 | MD5密文 |
  7. +--------+----------------------------------+
  8. | 123456 | e10adc3949ba59abbe56e057f20f883e |
  9. +--------+----------------------------------+
  10. 1 row in set (0.06 sec)

  

2、MD5加密后的密文本身就符合数字和字母的混合规则

配合RAND()函数, 使用LEFT 或者 RIGHT截取即可

  1. SET @val = RAND();
  2. SET @md5Val = MD5(@val);
  3. SELECT @val AS '随机值', @md5Val AS 'MD5加密值', LEFT(@md5Val, 12) AS '最终的密码';
  4. Query OK, 0 rows affected (0.00 sec)
  5.  
  6. Query OK, 0 rows affected (0.00 sec)
  7.  
  8. +--------------------+----------------------------------+--------------+
  9. | 随机值 | MD5加密值 | 最终的密码 |
  10. +--------------------+----------------------------------+--------------+
  11. | 0.9000418101437779 | 40de920815f9647c5ac97545e58b7b94 | 40de920815f9 |
  12. +--------------------+----------------------------------+--------------+
  13. 1 row in set (0.03 sec)

  

3、创建密码本表,排除掉管理员账号

这一步已经生成了明文密码,由于字段不能复用操作,多一个步骤来更新密文

  1. CREATE TABLE pwd_book AS
  2. SELECT id, us_name, us_username, LEFT(MD5(RAND()), 12) AS pwd, us_password AS md5, NOW() AS create_time
  3. FROM sys_pr_user
  4. WHERE sys_pr_user.id != 1 AND sys_pr_user.us_username != 'admin';

4、更新密码本表,赋值密文

  1. UPDATE pwd_book SET md5 = MD5(pwd);

  

5、将系统用户表的密码字段覆写,使用UPDATE JOIN关联更新(排除管理员账号)

  1. UPDATE sys_pr_user
  2. JOIN pwd_book ON sys_pr_user.id = pwd_book.id
  3. SET sys_pr_user.us_password = pwd_book.md5
  4. WHERE sys_pr_user.id != 1 AND sys_pr_user.us_username != 'admin';

  

6、导出密码本

  1. SELECT '用户名 ', '账号', '密码'
  2. UNION
  3. SELECT us_name, us_username, pwd
  4. FROM pwd_book
  5. INTO OUTFILE 'C:\\Users\\Administrator\\Desktop\\pwd_book.txt';

  

这一步导出MySQL默认是禁止的,需要更改配置文件开放:

  1. show variables like "secure_file_priv";
  2. +------------------+-------+
  3. | Variable_name | Value |
  4. +------------------+-------+
  5. | secure_file_priv | NULL |
  6. +------------------+-------+
  7. 1 row in set (0.11 sec)

详细见文章:

  1. https://blog.csdn.net/best_luxi/article/details/81479820

7、删除密码本表

  1. DROP TABLE pwd_book;

  

【MySQL】编写随机密码生成脚本的更多相关文章

  1. mysql自己编写启停脚本

    一.场景 在实际生产环境中要求相对较高的企业对于root权限管控相对比较高,故而很多软件并非安装在root用户下(当然root用户权限也可管理,但正常情况下root权限并不会给业务使用方,而会给一个普 ...

  2. 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/{ ...

  3. Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表

    Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介绍一下吧! 先下载mysql的库文件链接:http://files. ...

  4. 【排障】编译安装Mysql并使用自启动脚本mysqld后报错

    本文用于记录在某次个人实验搭建DZ论坛,在编译安装部署mysql环节时出的错到最终排除错误的过程, 前面采用DZ官网所采用的编译安装mysql的过程就省去,主要从报错处开始讲述. (题外话,经此一役后 ...

  5. sql server数据库备份单个表的结构和数据生成脚本

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  6. [转贴]systemd 编写服务管理脚本

    [转贴]sparkdev大神的博客, 关于 systemd的配置文件的 介绍, 自己之前二进制安装 k8s 时 超过一个 service文件 但是当时不明不白的. 现在再学习一下大神的文章 的确牛B ...

  7. 浅谈如何在SQL Server中生成脚本

    在生成脚本过程中,有很多参数可以选择,合理的配置这些参数,可以让我们很方便的按照我们的期望生成脚本. 生成脚本的一些选项,如下图: 我这里是SQL 2005 的选项, SQL 2008 的选项跟这个稍 ...

  8. sql server数据库备份单个表的结构和数据生成脚本【转】

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  9. shell脚本编程学习笔记(三)编写邮件报警脚本

    一.shell编写邮件报警脚本 1.POSTFIX邮件服务器准备 a.首先卸载服务器上自带的sendmail rpm -qa sendmail* //查看安装的sendmail rpm -e send ...

  10. 编写 Dockerfile 生成自定义镜像

    一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dock ...

随机推荐

  1. navicat安装和破解

    navicat16.0 下载地址: https://download.navicat.com.cn/download/navicat160_premium_cs_x64.exe 破解教程&破解 ...

  2. 类的阐述 package(包)

    类的阐述 同一个文件中可以定义很多类 编译后,每个类都会生成独立的.class文件 一个类中,只能有一个主函数,每个类都可以有自己的主函数 public修饰的类称为公开类,要求类名必须与文件名称完全相 ...

  3. kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法

    kettle中不能直接调用python脚本,可以通过shell脚本和http进行调用pyton服务. 一.shell脚本调用python脚本 1.下面是一段简单的无参python脚本 import o ...

  4. 【Java面试题-基础知识01】Java数据类型四连问?

    一.Java中的基础数据类型有哪些? Java中的基本数据类型包括: 1. byte:8位有符号整数,范围为-128到127.2. short:16位有符号整数,范围为-32768到32767.3. ...

  5. springboot3时代创建springboot2程序项目

    springboot3时代创建springboot2程序项目 目前,IDEA,springboot 官网,都不能创建基于JDK8(JDK1.8)的springboot程序了. 解决办法: 1. 先在官 ...

  6. C# .NET MVC 表单提交前校验数据等

    页面上写2个button,一个普通button,另一个是submit,submit的这个隐藏.校验函数写在普通button里,普通button click函数中去提交表单. 页面: <input ...

  7. Math.ceil,Math.round,Math.floor区别

    Math.ceil,Math.round,Math.floor区别 //向上取整 System.out.println("amt1=" + Math.ceil(71.01)); / ...

  8. Mybatis if判断中使用了Ognl关键字导致报错解决方法

    mybatis xml中使用OGNL解析参数,如果直接使用了关键字则会导致解析失败. 常见的关键字有: 字段 mybatis关键字 bor (字符|)的英文 xor 字符^的英文 and 字符& ...

  9. FFmpeg如何将一个gif嵌入视频指定位置并指定显示时间

    背景 很简单的需求:我需要将一个gif嵌入到视频里面的指定位置,并要指定时间播放: 环境 windows11 64位专业版 ffmpeg version 2022-04-07-git-607ecc27 ...

  10. python之集合学习

    *******************集合{set}******************* 1.集合set 可变 特点:是由不同元素组成 是无序的 集合中元素必须是不可变类型例如(字符串/元祖/数字) ...