Linux
MySQL 允許無密碼進入
我已將我的 MySQL 數據庫配置為要求所有使用者的密碼,甚至是機器本身的 root。
現在我發現我的數據庫中有空使用者
再現:
mysql -u root -p
然後use mysql;
&select * from user;
它給了我 2 個條目,一個帶有“localhost”和使用者 <empty>,另一個帶有機器的主機名和 <empty>。
現在我嘗試使用
mysql -u ' '
(是的,它是正確的,在 ’ 之間留一個空格)訪問該帳戶,並且我在沒有密碼的情況下登錄。使用者可以“僅”查看 information_schema 和 test,這兩個數據庫是預設創建的。他無權訪問 mysql 或任何其他自定義創建的數據庫。我已經將此使用者的密碼更改為我不會告訴您的內容
mysql -u root -p use mysql; UPDATE mysql.user SET Password=PASSWORD('thisisasecretpassword') WHERE USER='root'; FLUSH PRIVILEGES;
現在我的問題:
- 是否有任何 MySQL 伺服器容易受到此條目的攻擊?
- 攻擊者能否破解此帳戶或兩個預設數據庫?
- 我應該用密碼保護這些使用者還是可以刪除它們?某些 MySQL 內部的東西需要它們嗎?
這些是匿名使用者,因此不需要密碼。預設情況下,它們是在所有安裝中創建的。我不確定為什麼會這樣。
您可以為它們設置密碼或刪除它們。從https://dev.mysql.com/doc/refman/5.6/en/default-privileges.html:
如果您想阻止客戶端以匿名使用者身份連接而沒有密碼,您應該為每個匿名帳戶分配一個密碼,或者刪除這些帳戶。