数据需求:

密码规则是 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】编写随机密码生成脚本的更多相关文章

  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. MySQL学习笔记-事务

    事务 事务:是一组操作的集合,是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败(当操作中某一步出现异常时,前面已执行的步骤也会失 ...

  2. dubbo~全局异常拦截器的使用与设计缺陷~续

    上一次的介绍,主要围绕如何统一去捕获异常,以及为每一种异常添加自己的Mapper实现,并且我们知道,当在ExceptionMapper中返回非200的Response,不支持application/j ...

  3. CM 停用 Parcel 异常

    在将Doris集成到CM时,第一次打的包存在问题,想更新下,停用.删除Parcel时出现了问题卡住了,一直显示75%.无奈换了名称和版本,分配.激活,然后又卡在了75%,点开后,发现是同一台机器.其a ...

  4. 增补博客 第一篇 python 简易带参计算器

    设计一个简易的参数计算器.[输入格式]第一行输入待计算的带变量参数的计算式第二行输入各变量参数的赋值序列[输出格式]输出带变量参数的计算式的计算结果[输入样例]a+ba=1,b=10[输出样例]11 ...

  5. const 和 volatile 指针

    关键字 const 和 volatile 规定了指针的处理方式: const 规定指针在初始化后是受保护的,不能够再修改. volatile 规定了变量的值能够被用户应用程序外部的操作所修改. 因此, ...

  6. 面试官:告诉我为什么static和transient关键字修饰的变量不能被序列化?

    一.写在开头 在上一篇学习序列化的文章中我们提出了这样的一个问题: "如果在我的对象中,有些变量并不想被序列化应该怎么办呢?" 当时给的回答是:不想被序列化的变量我们可以使用tra ...

  7. 深入理解Spring AOP中的@EnableAspectJAutoProxy

    本文分享自华为云社区<Spring高手之路20--深入理解@EnableAspectJAutoProxy的力量>,作者: 砖业洋__. 1. 初始调试代码 面向切面编程(AOP)是一种编程 ...

  8. 在Linux驱动中使用LED子系统

    在Linux驱动中使用LED子系统 原文:https://blog.csdn.net/hanp_linux/article/details/79037684 前提配置device driver下面的L ...

  9. Qt--共享内存监听工具

    共享内存概述 共享内存的特点: 1)共享内存是进程共享数据的一种最快的方法. 一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 2)使用共享内存要注意的是多个进程 ...

  10. 人类高质量 Java 学习路线【一条龙版】

    Java 学习路线一条龙版 by 鱼皮. 原创不易,请勿抄袭,违者必究! 大家好,我是鱼皮.现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了.大部分的博主推荐资源 ...