首先讓我提到,我已經查看了許多建議的問題,但沒有找到相關的答案。以下是我正在做的事情。
我已連接到我的Amazon EC2執行個體。我可以使用以下命令登入MySQL root用戶:
mysql -u root -p
然後我建立了一個新使用者bill,主機為%
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
為使用者bill授予所有權限:
grant all privileges on *.* to 'bill'@'%' with grant option;
然後我退出root用戶,並嘗試使用bill用戶登入:
mysql -u bill -p
輸入正確的密碼後,出現以下錯誤:
錯誤 1045 (28000):使用者「bill」@「localhost」的存取被拒絕(使用密碼:YES)
嘗試:
您可能有一個匿名使用者
''@'localhost'
或''@'127.0.0.1'
。根據手冊:
因此,這樣的匿名用戶將「封鎖」任何其他用戶,例如
'[any_username]'@'%'
在從localhost
連接時。'bill'@'localhost'
符合'bill'@'%'
,但會在先前符合(例如)''@'localhost'
。推薦的解決方案是刪除這個匿名用戶(這通常是一個好主意)。
下面的編輯對於主要問題來說大多不相關。這些只是為了回答本主題中其他評論中提出的一些問題。
編輯1
透過套接字以
'bill'@'%'
進行身份驗證。編輯2
完全相同的設置,除了我重新啟動了網絡,並且現在創建了一個匿名用戶
''@'localhost'
。編輯3
與編輯2中的情況相同,現在提供匿名使用者的密碼。
結論1,來自編輯1:可以透過套接字進行
'bill'@'%'
的身份驗證。結論2,來自編輯2:無論是透過TCP還是透過套接字連接,對身份驗證過程沒有影響(除了不能透過套接字連接除
'something'@'localhost'
之外的任何其他使用者)。結論3,來自編輯3:儘管我指定了
-ubill
,但我被授予了匿名用戶的存取權限。這是因為上面建議的「排序規則」。請注意,在大多數預設安裝中,存在一個沒有密碼的匿名使用者(應該進行安全性/刪除)。