Mysql
設置root密碼後,為什麼MYSQL仍然允許我沒有密碼登錄?
設置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 = "";