Networking

MySQL 命令將“@localhost”附加到使用者名

  • October 16, 2015

我似乎無法弄清楚這一點。

我想使用命令行連接到駐留在另一台伺服器上的 MySQL 數據庫。我繼續為使用者創建了使用者名和密碼。我還授予該使用者對該數據庫的所有權限。

使用 command:mysql -h <hostname> -u <username> -p時,出現以下錯誤:

ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)

問題是它不斷將目前機器的主機名附加到使用者名中。顯然,這user@<local_machine_hostname>是不正確的。

我輸入什麼並不重要。例如,如果我輸入:

mysql -h <hostname> -u '<username>'@'<hostname>' -p

它做同樣的事情,只是在錯誤輸出中,它說:

Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'

配置文件中是否有允許這種情況發生的設置?這真的很煩人。我需要設置一個 tikiwiki 伺服器,但它無法連接,因為在設置 mysql 的步驟中,它一直將本地電腦的主機名附加到 mysql 登錄名。

MySQL 的權限是基於主機的。當您創建使用者(或授予)使用者存在時,您提供一個主機名。它可以是 ‘%’ 或 ’localhost’ 或任何其他 IP 或主機名。這是一項安全功能。你希望這發生。當它告訴您訪問被拒絕時,它不是將主機名“附加”到使用者名。每個都儲存在 mysql.users 表的不同列中。如果您希望能夠以該使用者身份從您的電腦登錄 MySQL,您需要從您的電腦授予該使用者訪問權限…

來自CREATE USER 上的 MySQL 文件

每個帳戶都使用與 GRANT 語句相同的格式命名;例如,“杰弗裡”@“本地主機”。如果您僅指定帳戶名的使用者名部分,則使用“%”的主機名部分。有關指定帳戶名稱的其他資訊,請參閱第 12.4.1.3 節,“GRANT 語法”。

引用自:https://serverfault.com/questions/149319