首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 新增用戶無法登錄:匿名用戶衝突排查與解決

     編輯:MySQL 資料庫相關知識

問題現場

OpenStack 部署中創建業務用戶:

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

但本地登錄失敗:

mysql -h localhost -u keystone -ppassword
ERROR 1045 (28000): Access denied for user 'keystone'@'localhost'

根因分析

MySQL 安裝默認創建匿名用戶(user=''),權限表匹配優先級:

  1. 'keystone'@'localhost'(精確匹配)
  2. ''@'localhost'(匿名用戶,匹配任意用戶名)
  3. 'keystone'@'%'(通配符主機)

登錄時實際匹配到匿名用戶 ''@'localhost',但該用戶無密碼/權限不足,導致拒絕。

解決方案

USE mysql;
DELETE FROM user WHERE user = '';
FLUSH PRIVILEGES;

驗證修復

mysql -h localhost -u keystone -ppassword
-- 登錄成功

最佳實踐:安裝後立即執行安全腳本

mysql_secure_installation

此腳本會:

  • 移除匿名用戶
  • 禁止 root 遠程登錄
  • 移除 test 庫
  • 重新載入權限表

權限匹配優先級口訣

具體用戶+具體主機 > 匿名用戶+具體主機 > 具體用戶+通配主機 > 匿名用戶+通配主機

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved