Mysql

為什麼我的使用者名與 mysql.user 和 select user() 不同?

  • July 24, 2019

在我的 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’ 的訪問被拒絕(使用密碼:是)

引用自:https://dba.stackexchange.com/questions/243687