Mysql
為什麼我的使用者名與 mysql.user 和 select user() 不同?
在我的 Mac OS 10.14.5 上使用 10.4.6-MariaDB 以 root 身份登錄我可以看到我的伺服器上的使用者列表
MariaDB [(none)]> select Host,User from mysql.user; +--------------+-----------+ | Host | User | +--------------+-----------+ | localhost | | | localhost | | | localhost | root | | localhost | user_Name | | PCName.local | | +--------------+-----------+ 5 rows in set (0.001 sec)
但是當以 user_Name 身份登錄時,我檢查了目前使用者
MariaDB [(none)]> select user() -> ; +-------------------------------+ | user() | +-------------------------------+ | user_Name@localhost@localhost | +-------------------------------+ 1 row in set (0.000 sec)
@localhost 寫兩次似乎不對。
所以我的問題是為什麼會發生這種情況?
你應該執行的是這個
請執行此查詢:
SELECT USER(),CURRENT_USER();
這些函式返回什麼???
- USER()報告您如何嘗試在 mysqld 中進行身份驗證
- CURRENT_USER()報告您是如何被 mysqld 允許進行身份驗證的
請注意CURRENT_USER()應該從
mysql.user
. 你說USER()返回user_Name@localhost@localhost
. 如果CURRENT_USER()返回與USER()相同的響應,則 MariaDB 存在錯誤。由於USER()報告了您嘗試在 mysqld 中進行身份驗證的方式,我猜這可能是您輸入它的方式。
mysql -u user_Name@localhost
你應該像這樣登錄 MariaDB
mysql -u user_Name -hlocalhost
再試一次看看。我之前在這個論壇上討論過這個問題:MySQL 錯誤:使用者 ‘a’@’localhost’ 的訪問被拒絕(使用密碼:是)