数据需求:

密码规则是 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. testArticle

    Test Article This is a test article for ArticleSync. Test Edit...... test Edit

  2. C# yyyyMMddHHmmss 格式的日期转换

    C# yyyyMMddHHmmss 格式的日期转换 DateTime dtTimeEnd = DateTime.Now; if (!string.IsNullOrWhiteSpace(rspA.fin ...

  3. 零基础写框架(3): Serilog.NET 中的日志使用技巧

    .NET 中的日志使用技巧 Serilog Serilog 是 .NET 社区中使用最广泛的日志框架,所以笔者使用一个小节单独讲解使用方法. 示例项目在 Demo2.Console 中. 创建一个控制 ...

  4. 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(2)

    1.问题描述: 怎么判断登录的华为帐号有变动? 解决方案: 华为帐号登录成功后会返回唯一标识OpenID和UnionID,如果切换不同的华为帐号登录,这个唯一标识会变. OpenID是华为帐号用户在不 ...

  5. DotNetGuide专栏C#/.NET/.NET Core充电站(让你学习不迷路)

    DotNetGuide简介 记录.收集和总结C#/.NET/.NET Core基础知识.学习路线.开发实战.编程技巧练习.学习视频.文章.书籍.项目框架.社区组织.开发必备工具.常见面试题.面试须知. ...

  6. 关于ZYNQ-7000中断调试一点感想

    背景 在ZYNQ 平台下,需要对各种需要的底层接口进行初始化. 我依次调试了很多驱动,从最简单的网口到USB:再到读写PL端的寄存器(通过AXI总线,内存映射读写物理地址实现),到中断的时候一直卡着不 ...

  7. PHP接入苹果支付

    Ios苹果支付流程: 客户端先从苹果获取内购Id. 客户端将内购id,金额.用户id等传给服务端获取一个自己服务端生成的订单号. 客户端向苹果发起支付. 支付成功后,客户端从本地拿支付凭证.将支付凭证 ...

  8. SQLServer统计采集数据库相关信息

    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...

  9. MFC基于对画框工程笔记->更改窗口图标以及生成的.exe图标

    一.前言 继前一篇生成MFC基于对话框工程->新建MFC对话框后,开始改动对话框图标以及生成的.exe图标. 原对话框图标以及.exe图标: 在菜单栏中选择生成目录为Release 打开Rele ...

  10. SpringCloud连接远程nacos报错,一直提示连接本地的localhost:8848

    application.properties spring.cloud.nacos.discovery.server-addr=xxx.xxx.xxx.xxx:8848 spring.applicat ...