Windows

主機名萬用字元 % 不包括 localhost 或 127.0.0.0

  • December 20, 2019

在 Windows 上的 MariaDB 中,我使用以下內容創建使用者和數據庫

flush privileges;
CREATE USER 'test-one'@'%' IDENTIFIED BY 'test-one';
GRANT USAGE ON *.* TO 'test-one'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `test-one`;
GRANT ALL PRIVILEGES ON `test-one`.* TO 'test-one'@'%';

之後我無法連接到數據庫

.\mysql.exe -u "test-one" -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'test-one'@'localhost' (using password: YES)

類似的行為

.\mysql.exe -u "test-one" -p -h 127.0.0.1

有效的是(替換為實際主機名) .\mysql.exe -u “test-one” -p -h

這是設計使然嗎?主機名萬用字元 ‘%’ 不包括 localhost 也不包括 127.0.0.1

只要數據庫中存在匿名使用者,情況就是如此。當您刪除這些使用者localhost127.0.0.1開始匹配萬用字元時。

MariaDB 文件

請注意,在使用“%”萬用字元主機創建使用者時添加的憑據不會在所有情況下都授予訪問權限。例如,某些系統帶有匿名 localhost 使用者,當從 localhost 連接時,這將優先。

這些匿名使用者也可以在mysql_secure_installation腳本執行時被刪除:

預設情況下,MariaDB 安裝有一個匿名使用者,允許任何人登錄 MariaDB,而無需為他們創建使用者帳戶。這僅用於測試,並使安裝更順暢。您應該在進入生產環境之前刪除它們。

移除匿名使用者?

$$ Y/n $$

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