亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么根據規則生成隨機密碼

發布時間:2021-08-06 11:53:56 來源:億速云 閱讀:237 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關MySQL中怎么根據規則生成隨機密碼,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在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" 來根據要求返回隨機的密碼。
  www.2cto.com  
系統管理員只需要傳遞所需密碼的規則就會返回對應的隨機密碼。
 
例如要求如下:
 
首字符必須大寫             ======> U 
第二個字符必須小寫       ======> L 
第三個字符必須是數字    ======>N 
第四個字符隨意             ======>A 
第五個字符必須是非字母和數字  ======>S 
第六個字符必須是數字    ======> N    
 
那么你可以使用 "ULNASN" 參數來獲取隨機密碼。 
所生成的密碼程度跟傳遞的參數長度是一致的。在我們這個例子中生成的密碼長度是 6。
你可以使用下面的方法來調用這個函數:
 
1
RANDOM_PASSWORD('ULNASN')
在MySQL的控制臺編寫函數定義前,先要將中可能已經存在的此函數定義刪除,然后須將分隔符更改為$,其實我本想將分隔符改成#,后來發現沒有成功,不知道是為什么,在命令行下刪除 RANDOM_PASSWORD() 函數的定義與更改分隔符使用如下命令:
  www.2cto.com  
1
> DROP FUNCTION IF EXISTS RANDOM_PASSWORD;
2
mysql> delimiter $
接下來可以編寫該函數,經過我調試通過的源代碼如下:
 
 
01
CREATE FUNCTION RANDOM_PASSWORD (str VARCHAR(255))
02
RETURNS VARCHAR(255)
03
BEGIN
04
    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  www.2cto.com  
    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 < STR_LENGTH DO
18
        SET TEMP_CHARACTER = SUBSTR(str, i + 1, 1);
19
        CASE TEMP_CHARACTER
20
            WHEN 'N' THEN
21
                SET RANDOM_CHARACTER = SUBSTR(NUMBERS, CEIL( RAND() * ( LENGTH( NUMBERS ) - 1 )), 1);
22
            WHEN 'U' THEN
23
                SET RANDOM_CHARACTER = SUBSTR(UPPER_CASE, CEIL( RAND() * ( LENGTH( UPPER_CASE ) - 1 )), 1);
24  www.2cto.com  
            WHEN 'L' THEN
25
                SET RANDOM_CHARACTER = SUBSTR(LOWER_CASE, CEIL( RAND() * ( LENGTH( LOWER_CASE ) - 1 )), 1);
26
            WHEN 'S' THEN
27
                SET RANDOM_CHARACTER = SUBSTR(NON_ALPHANUMERIC_CHARACTERS, CEIL( RAND() * ( LENGTH( NON_ALPHANUMERIC_CHARACTERS ) - 1 )), 1);
28
            WHEN 'A' THEN
29
                SET RANDOM_CHARACTER = SUBSTR(ALL_STRING, CEIL( RAND() * ( LENGTH( ALL_STRING ) - 1 )), 1);
30
            ELSE
31
                SET RANDOM_CHARACTER = '';
32
        END CASE;
33
        SET PASSWORD_RETURNED = CONCAT(PASSWORD_RETURNED, RANDOM_CHARACTER);
34
        SET i = i + 1;
35
    END WHILE;
36
     
37
    RETURN PASSWORD_RETURNED;
38
END
39
$
使用方法:
1
mysql> select RANDOM_PASSWORD('ULNASN') PASSWORD;
2  www.2cto.com  
+----------+
3
| PASSWORD |
4
+----------+
5
| Bv1n`8   |
6
+----------+
7
1 row in set (0.00 sec)
在我這里將返回的隨機密碼是:Bv1n`8

看完上述內容,你們對MySQL中怎么根據規則生成隨機密碼有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正蓝旗| 潞西市| 台前县| 保靖县| 伊宁市| 深泽县| 城固县| 阿合奇县| 安福县| 民乐县| 泰来县| 黔西| 黑河市| 许昌县| 互助| 根河市| 威信县| 肇源县| 武城县| 桂林市| 安多县| 遵义市| 黄平县| 名山县| 合江县| 定陶县| 鄢陵县| 晋城| 旬邑县| 克拉玛依市| 锦屏县| 淮南市| 宜君县| 马鞍山市| 三台县| 梅州市| 高唐县| 吉林省| 镇雄县| 行唐县| 韶山市|