今天在登錄 MySQL 服務器時,遇到了一個奇怪的問題,無法登錄成功,一直提示“Access denied for user 'root'@'localhost' (using password: YES)”。
我嘗試使用舊密碼登錄,發現依然無法登錄,考慮到可能是密碼被修改了,于是使用以下命令嘗試修改密碼:
mysql>UPDATE mysql.user SET Password=PASSWORD('新密碼') WHERE User='root'; mysql>FLUSH PRIVILEGES;
但是居然提示“ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server”,這是怎么回事呢?
經過一番搜索,我發現這個問題是因為主機名與 MySQL 中的用戶不匹配導致的。具體來說,就是 MySQL 中的 root 用戶是限定主機名為 localhost 的,所以如果使用其他主機名登錄是無法成功的。
為了解決這個問題,我們需要在 MySQL 中添加一個允許其他主機名訪問的用戶。具體步驟如下:
mysql>CREATE USER '用戶名'@'%' IDENTIFIED BY '密碼'; mysql>GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%'; mysql>FLUSH PRIVILEGES;
在上述命令中,% 表示允許所有主機名訪問,*.* 表示所有數據庫和表都允許訪問,需要根據實際情況進行調整。
修改完之后,嘗試使用新用戶登錄,發現可以正常登錄了。有一件事情需要注意的是,由于新增的用戶權限較高,需要注意安全問題,避免被惡意攻擊。
以上就是解決 MySQL 登錄問題的完整流程,希望對大家有所幫助。