mysql 8.0.11 資料庫使用者密碼修改詭異的限制
近期,協助一客戶重置mysql 8.0.11的root密碼,碰到了奇怪的問題。
作業系統版本:rhel 7.6
資料庫版本:mysql 8.0.11
根據mysql 8.0官方文件說明,mysql的使用者密碼有限制,並且被硬編碼,沒有明確說明密碼長度是多少。
The MySQL user name length limit is hardcoded in MySQL servers and clients, and trying to circumvent it by modifying the definitions of the tables in the
mysql
database
does not work.
You should never alter the structure of tables in the
mysql
database in any manner whatsoever except by means of the procedure that is described in
Section 2.11, “Upgrading MySQL”. Attempting to redefine MySQL's system tables in any other fashion results in undefined and unsupported behavior. The server is free to ignore rows that become malformed as a result of such modifications.
另外,mysql 8.0不再支援password()函式,因此,不能像mysql5.x那樣通過update mysql.user表來修改使用者密碼。
但是,在mysql 8.0的root密碼重置時遇到報錯:
[mysql@mysql8~]$ mysql -uroot -p -S /home/mysql/mysql/tmp/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, 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>
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
--update mysql.user重置使用者密碼失敗
mysql> update user set authentication_string = '123456' where user='root' and host='%' ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+------------------------------------------------------------------------+
| user | host | authentication_string |
+------------------+-----------+------------------------------------------------------------------------+
| root | % | 123456 |
| mysql.infoschema | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+------------------+-----------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
--password函式不被mysql8.0支援
mysql> update user set authentication_string =PASSWORD('123456') where user='root' and host='%' ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('
123456') where user='root' and host='%'' at line 1
mysql>
--奇怪的是使用alter命令重置root密碼長度為6位時報錯,但是不是語法錯誤
mysql> alter user 'root'@'%' identified by '123456'; ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%' --但是,將root密碼長度增加到8位時獲得成功
mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY '123456789';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+------------------------------------------------------------------------+
| user | host | authentication_string |
+------------------+-----------+------------------------------------------------------------------------+
| root | % | *CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D |
| mysql.infoschema | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+------------------+-----------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
但是,我本地的centos 7.6上的mysql 8.0重置root密碼缺沒有密碼長度限制,兩套庫用的是相同的引數檔案。
官方關於使用者密碼長度沒有特別說明,網上也沒有類似密碼長度問題的資料,很奇怪!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2704307/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 8.0.11 以上版本修改root密碼MySql密碼
- MongoDB 資料庫安全之使用者密碼修改MongoDB資料庫密碼
- Oracle 限制業務使用者自身修改密碼Oracle密碼
- MySql中新增使用者,新建資料庫,使用者授權,刪除使用者,修改密碼MySql資料庫密碼
- mysql如何修改root使用者的密碼MySql密碼
- MySQL 資料庫重置密碼MySql資料庫密碼
- 忘記oracle的sys密碼該如何重置;附如何修改oracle資料庫使用者密碼Oracle密碼資料庫
- 網站資料庫密碼怎麼修改?網站資料庫密碼
- mysql8.0+修改使用者密碼MySql密碼
- 資料庫修改網站密碼?後臺修改網站?資料庫網站密碼
- 修改docker中Mysql的密碼DockerMySql密碼
- 修改Mysql root密碼的方法MySql密碼
- linux 下mysql資料庫密碼恢復的方法LinuxMySql資料庫密碼
- windows系統下 重置mysql資料庫的密碼WindowsMySql資料庫密碼
- 公司網站怎麼修改?資料庫內網站密碼修改?網站資料庫內網密碼
- 修改 MySQL 登入密碼MySql密碼
- mysql8.0修改密碼MySql密碼
- 在Linux中修改MySQL的密碼LinuxMySql密碼
- 修改MySQL密碼的四種方法MySql密碼
- 破解 MySQL5.7 資料庫的 root 登入密碼MySql資料庫密碼
- 修改git使用者密碼Git密碼
- ot安裝之後,如何重新修改資料庫密碼資料庫密碼
- mysql-8.0.16-winx64/Linux修改root使用者密碼MySqlLinux密碼
- DEDECMS如何修改資料庫密碼?以及忘記了後臺密碼怎麼辦?資料庫密碼
- Ubuntu安裝MySQL如何設定資料庫密碼UbuntuMySql資料庫密碼
- mysql 4.1.7忘記資料庫密碼的處理辦法MySql資料庫密碼
- 怎麼修改mysql的連線密碼MySql密碼
- oracle資料庫修改使用者密碼的時候 出現ORA-28003和ORA-20006Oracle資料庫密碼
- MySQL的Root使用者密碼MySql密碼
- 如何修改MySQL資料庫名稱MySql資料庫
- GBase 資料庫使用者的最大連線數限制資料庫
- 資料庫修改密碼需要在系統中改哪些地方資料庫密碼
- mongodb對資料庫建立使用者名稱和密碼MongoDB資料庫密碼
- MySQL 8.0之後版本密碼修改MySql密碼
- 實用小技巧! 修改MySQL密碼MySql密碼
- ubuntu安裝mysql後修改密碼UbuntuMySql密碼
- MySQL修改密碼方法總結YRMySql密碼
- MYSQL5.7 ROOT密碼修改教程MySql密碼