首頁 資料庫 mysql教程 在MySQL中根据规则生成随机密码_MySQL

在MySQL中根据规则生成随机密码_MySQL

Jun 01, 2016 pm 01:41 PM
儲存 安全性

bitsCN.com
在MySQL中根据规则生成随机密码 MySQL 5.0 以后的版本开始支持存储过程,存储过程具有壹致性、高效性和安全性。MySQL 5.0 之前的版本并不支持存储过程,然而随着 MySQL 技术的日趋完善,存储过程将在以后的项目中得到 广泛的应用。 在我的应用中,我需要在用户首次注册时为该帐号生成一个随机密码。所生成的密码必须满足一定的要求,这些要求由系统管理员进行配置。 我们提供了下面几个对密码的要求规则,这些规则可组合使用: 1- 要求大写字母 UPPERCASE                =====> 缩写 [U] 2- 要求小写字母 LOWERCASE               =====> 缩写 [L] 3- 要求使用数字 NUMBER                      =====> 缩写 [N] 4- 可以是任意字符 ANY_CHARACTER   ======> 缩写 [A] 5- 必须有非字母和数字的字符 NON_ALPHANUMERIC_CHARACTER =====> 缩写 [S] 因此我想通过创建一个动态函数 "RANDOM_PASSWORD" 来根据要求返回随机的密码。   系统管理员只需要传递所需密码的规则就会返回对应的随机密码。 例如要求如下: 首字符必须大写             ======> U 第二个字符必须小写       ======> L 第三个字符必须是数字    ======>N 第四个字符随意             ======>A 第五个字符必须是非字母和数字  ======>S 第六个字符必须是数字    ======> N     那么你可以使用 "ULNASN" 参数来获取随机密码。 所生成的密码程度跟传递的参数长度是一致的。在我们这个例子中生成的密码长度是 6。你可以使用下面的方法来调用这个函数: 1RANDOM_PASSWORD('ULNASN')在MySQL的控制台编写函数定义前,先要将数据库中可能已经存在的此函数定义删除,然后须将分隔符更改为$,其实我本想将分隔符改成#,后来发现没有成功,不知道是为什么,在命令行下删除 RANDOM_PASSWORD() 函数的定义与更改分隔符使用如下命令:   1mysql> DROP FUNCTION IF EXISTS RANDOM_PASSWORD;2mysql> delimiter $接下来可以编写该函数,经过我调试通过的源代码如下:  01CREATE FUNCTION RANDOM_PASSWORD (str VARCHAR(255))02RETURNS VARCHAR(255)03BEGIN04    DECLARE UPPER_CASE VARCHAR(26) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';05    DECLARE LOWER_CASE VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';06    DECLARE NUMBERS VARCHAR(10) DEFAULT '0123456789';07    DECLARE TEMP_CHARACTER VARCHAR(255) DEFAULT '';08    DECLARE NON_ALPHANUMERIC_CHARACTERS VARCHAR(255) DEFAULT '~!@#$%^&*()_+-=`:;,.?/';09        DECLARE ALL_STRING VARCHAR(255) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+-=`:;,.?/';10    DECLARE STR_LENGTH INT DEFAULT 0;11    DECLARE i INT DEFAULT 0;12    DECLARE RANDOM_CHARACTER CHAR(1) DEFAULT ' ';13    DECLARE PASSWORD_RETURNED VARCHAR(255) DEFAULT '';14     15    SET STR_LENGTH = CHAR_LENGTH(str);16     17    WHILE i select RANDOM_PASSWORD('ULNASN') PASSWORD;2    +----------+3| PASSWORD |4+----------+5| Bv1n`8   |6+----------+71 row in set (0.00 sec)在我这里将返回的随机密码是:Bv1n`8 当然,你运行的结果可能不一样,因为这是随机的。  作者 Bairrfhoinn bitsCN.com

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP5和PHP8的性能和安全性:對比和改進 PHP5和PHP8的性能和安全性:對比和改進 Jan 26, 2024 am 10:19 AM

PHP5和PHP8的性能和安全性:對比和改進

華為明年將推創新 MED 儲存產品:機架容量超過 10 PB,功耗低於 2 kW 華為明年將推創新 MED 儲存產品:機架容量超過 10 PB,功耗低於 2 kW Mar 07, 2024 pm 10:43 PM

華為明年將推創新 MED 儲存產品:機架容量超過 10 PB,功耗低於 2 kW

Golang開發的安全性挑戰:如何避免被利用用於病毒製作? Golang開發的安全性挑戰:如何避免被利用用於病毒製作? Mar 19, 2024 pm 12:39 PM

Golang開發的安全性挑戰:如何避免被利用用於病毒製作?

Ubuntu上的Git安裝流程 Ubuntu上的Git安裝流程 Mar 20, 2024 pm 04:51 PM

Ubuntu上的Git安裝流程

win11是否需要安裝防毒軟體? win11是否需要安裝防毒軟體? Dec 27, 2023 am 09:42 AM

win11是否需要安裝防毒軟體?

Java 函數中記憶體管理技術與安全性的關係是什麼? Java 函數中記憶體管理技術與安全性的關係是什麼? May 02, 2024 pm 01:06 PM

Java 函數中記憶體管理技術與安全性的關係是什麼?

正確利用sessionStorage保護敏感資料的方法 正確利用sessionStorage保護敏感資料的方法 Jan 13, 2024 am 11:54 AM

正確利用sessionStorage保護敏感資料的方法

C++ 容器庫的迭代器安全性的保證 C++ 容器庫的迭代器安全性的保證 Jun 05, 2024 pm 04:07 PM

C++ 容器庫的迭代器安全性的保證

See all articles