Mysql

設置root密碼後,為什麼MYSQL仍然允許我沒有密碼登錄?

  • July 20, 2017

設置root密碼後,為什麼MYSQL仍然允許我在沒有密碼的情況下從命令行登錄?我可以在 root unix 提示符下鍵入“mysql”,它不要求輸入密碼,但仍然允許我進行 root 訪問。我不明白為什麼“mysql -u root”現在不詢問我在帳戶上設置的密碼。

此外,我無法以“root”身份從遠端電腦登錄 mysql。我下面沒有正確配置嗎?我收到錯誤消息:“主機…不允許連接到此 MySQL 伺服器。我不是為 ‘%’ 配置它嗎?

這是我的使用者表:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

看起來密碼是在'root'@'localhost'使用者條目上設置的,但不是在'root'@'%'條目上;基於此,將允許無密碼身份驗證。

出於安全目的,請重新考慮允許從任何地方進行 root 訪問。如果您確實需要它,那麼只需擺脫 localhost 規範:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

並為使用者設置密碼'root'@'%'

set password for 'root'@'%' = password('passwordhere');

好吧,答案就在那個表中——您需要刪除沒有列出密碼的“root”行。

此外,看起來您在不使用使用者或通行證時允許從任何地方進行連接(?!?!)。可能是個壞主意。我會做類似的事情:

mysql> use mysql;
mysql> delete from user where password = "";

引用自:https://serverfault.com/questions/257984