91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

揭东县| 离岛区| 乐亭县| 临安市| 苗栗市| 信阳市| 阜新市| 台北县| 慈溪市| 措勤县| 如东县| 陆川县| 镶黄旗| 获嘉县| 邻水| 吉木萨尔县| 龙江县| 新田县| 达孜县| 山阴县| 洮南市| 磴口县| 宁德市| 新邵县| 吉安县| 集安市| 黄骅市| 泸水县| 上饶市| 图木舒克市| 丹凤县| 安义县| 赞皇县| 安丘市| 收藏| 扎囊县| 邹平县| 五台县| 汝南县| 太白县| 黄骅市|