本地主機與127.0.0.1:MySQL 權限的奇怪案例
使用MySQL 時,經常會遇到看似令人困惑的差異術語“localhost”和“127.0.0.1”之間。這種差異體現在向資料庫系統內的使用者授予權限的脈絡中。
為了說明這一點,請考慮以下範例:
$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host; +-----------------------------+ | Tables_in_created_from_host | +-----------------------------+ | test | +-----------------------------+ $ mysql -u root -h localhost -e 'show tables' created_from_host; ERROR 1049 (42000): Unknown database 'created_from_host'
出現這種差異是因為MySQL 區分使用主機名稱(例如「localhost」)和透過套接字建立的連接(例如“127.0.0.1”)。套接字方法在未指定主機名稱或與「localhost」連線時使用,利用本機套接字與資料庫伺服器進行通訊。
這種差異在使用者權限領域變得很重要。以下是向「root」的所有主機的所有資料庫授予所有權限的簡單指南:
使用 root 帳戶連接到 MySQL:
$ mysql -u root -p
執行以下命令授予權限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新權限以確保更改生效:
FLUSH PRIVILEGES;
透過執行以下步驟,您可以確保“ro ot」將可以從任何主機無限制地存取您的資料庫系統,無論它是透過「localhost」還是透過「localhost」連接'127.0.0.1'.
以上是為什麼 MySQL 在授予權限時對 `localhost` 和 `127.0.0.1` 的處理方式不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!