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

溫馨提示×

溫馨提示×

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

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

mysql 5.6.25報錯ERROR 1372 (HY000): Password hash 的一點思考

發布時間:2020-08-11 15:34:00 來源:ITPUB博客 閱讀:221 作者:wisdomone1 欄目:MySQL數據庫

問題背景:

   之前使用的一套mysql 5.6.25,由于一些原因我進行了清除。大家知道我們第二次執行mysql_install_db初始化數據庫時,是不會存儲root的臨時密碼。

那么要進入mysql數據庫,就引入如下的一篇文章。

案例過程:

0,以無密碼認證方式啟動數據庫

[root@standbygtid mysql]#nohup mysqld_safe  --user=mysql --skip-grant-tables&

1,配置root用戶的密碼

mysql> set password for 'root'@'localhost'='system';

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

2,刷新修改用戶密碼的操作到mysql.user表

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

3,修改數據庫用戶密碼,提示密碼需要41個字節

mysql> set password for 'root'@'localhost'='system';

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

4,采用password函數修改用戶密碼成功

mysql> set password for 'root'@'localhost'=password('system');

Query OK, 0 rows affected (0.00 sec)

5,關閉數據庫

[root@standbygtid mysql]#mysqladmin -uroot -psystem shutdown

6,啟動數據庫

[root@standbygtid mysql]# nohup mysqld_safe  --user=mysql&

7,可以用上述配置的數據庫用戶密碼登陸

[root@standbygtid mysql]# mysql -uroot -psystem

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.25-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

8,password函數不管采用的字符串是多少位,產生的字節寬度全是 41

mysql> select password('system'),length(password('system'));

+-------------------------------------------+----------------------------+

| password('system')                        | length(password('system')) |

+-------------------------------------------+----------------------------+

| *576EE5B74C20E68F2A5A240F3E408E6DE43DD73F |                         41 |

+-------------------------------------------+----------------------------+

1 row in set (0.00 sec)

mysql> select password('syste'),length(password('syste'));

+-------------------------------------------+---------------------------+

| password('syste')                         | length(password('syste')) |

+-------------------------------------------+---------------------------+

| *795AF4045357E7DA27CBF22263514F881880C4AC |                        41 |

+-------------------------------------------+---------------------------+

1 row in set (0.00 sec)

9,上述 41字節到底是什么含義呢,查閱mysql 5.6官方文檔,上述這個41個字節是和采用密碼認證的方法有關系,而

采用密碼認證的方法是由系統變量old_passwords控制。

10,old_passwords系統變量的含義

old_passwords控制password函數所使用的密碼認證方法,它會影響create user以及grant操作如何產生數據庫用戶密碼。

old_passwords的幾個值

值 密碼哈希方法                   密碼哈希方法采用的插件          是否默認值

0  mysql 4.1版本采用的哈希方法     mysql_native_password        是

1  mysql 4.1之前的哈希方法         sha256_password

2  sha-256哈希方法                sha256_password

11,可見不同的old_password的值,會影響password函數產生的值的寬度

mysql> set old_passwords=0;

Query OK, 0 rows affected (0.00 sec)

mysql> select password('syste'),length(password('syste'));

+-------------------------------------------+---------------------------+

| password('syste')                         | length(password('syste')) |

+-------------------------------------------+---------------------------+

| *795AF4045357E7DA27CBF22263514F881880C4AC |                        41 |

+-------------------------------------------+---------------------------+

1 row in set (0.00 sec)

mysql> set old_passwords=1;

Query OK, 0 rows affected (0.00 sec)

mysql> select password('syste'),length(password('syste'));

+-------------------+---------------------------+

| password('syste') | length(password('syste')) |

+-------------------+---------------------------+

| 46acda267e174d58  |                        16 |

+-------------------+---------------------------+

1 row in set (0.00 sec)

mysql> set old_passwords=2;

Query OK, 0 rows affected (0.00 sec)

mysql> select password('syste'),length(password('syste'));

+----------------------------------------------------------------------+---------------------------+

| password('syste')                                                    | length(password('syste')) |

+----------------------------------------------------------------------+---------------------------+

| $5$\]^D8P`aMt\vp2Pu$lDCzMsToPBl56CdhB2pjetpvqEiL9BMhdt1TDbMbzL6  |                        68 |

+----------------------------------------------------------------------+---------------------------+

1 row in set (0.01 sec)

12,上述old_passwords的不同值是對應于下述不同的插件

mysql> show plugins;

+----------------------------+----------+--------------------+---------+-------------+

| Name                       | Status   | Type               | Library | License     |

+----------------------------+----------+--------------------+---------+-------------+

| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | PROPRIETARY |

| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL    | PROPRIETARY |

| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | PROPRIETARY |

13,如果你想指定數據庫在啟動或創建時的默認的用戶密碼認證插件

這個插件是對應上述show plugins的值,而沒有對應的系統變量,只有選項,見下

--default-authentication-plugin

可選值:

mysql_native_password     默認值

sha256_password

可以在啟動數據庫時在命令行上指定或者在配置文件中指定這個選項

14,如果在升級mysql時,一定要好好考量old_password的值或者--default-authentication-plugin,否則舊版本的mysql

客戶端可能會登陸不上升級后的mysql數據庫。

思考總結:

  • 1,出現問題,根據錯誤提示進行字面意思分析

  • 2,出現問題,在官方手冊查詢對應出錯語句的語法,可以獲取進一步的診斷信息或線索

  • 3,提出的問題,一定要放在一個大的背景下,就是要向業務服務,你的業務的目標是什么,比如:數據庫用戶的可靠性及安全性,數據庫馬上要升級嗎,數據庫的性能,等等。

  • 4,數據庫的學習是一個迭代式的過程,有些知識,不是一下子可以全面了解的,需要從字面或其它的技術反向進行進一步的掌握

大家可以關注我的微信公眾號,每天會定期發送一些數據庫相關的文章,歡迎交流。

mysql 5.6.25報錯ERROR 1372 (HY000): Password hash 的一點思考

向AI問一下細節

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

AI

棋牌| 德州市| 剑河县| 青阳县| 徐汇区| 大连市| 富川| 龙陵县| 宁化县| 噶尔县| 巴彦淖尔市| 肥乡县| 龙泉市| 临夏市| 库尔勒市| 南召县| 郁南县| 黄大仙区| 安国市| 泗洪县| 沈丘县| 栖霞市| 砀山县| 鹤岗市| 长春市| 五大连池市| 崇义县| 绥中县| 娄烦县| 甘泉县| 天门市| 建德市| 富平县| 封丘县| 牙克石市| 岳西县| 和顺县| 阿瓦提县| 垦利县| 博乐市| 湖口县|