分享至

簡介

通常,在使用資料庫時,您需要能夠建立和刪除使用者。無論是在需要多位成員存取資料庫的團隊中工作,還是建立和刪除測試使用者以模擬資料庫權限,了解如何新增和移除資料庫使用者都非常重要。

在本簡短指南中,我們將介紹在 MySQL 中建立和刪除資料庫使用者的基本知識。這些指令將讓您準備好開始授予資料庫存取權限,並為未來角色管理奠定基礎。

如何建立 MySQL 使用者?

在 MySQL 中建立使用者是用於與他人協作以及測試存取權和權限的關鍵。務必注意,為了建立使用者,您必須使用具有先決條件中所述權限的使用者登入。

基本語法

建立新使用者的基本語法相對簡單。您可以使用 CREATE USER 指令,然後指定新帳戶的使用者和主機

CREATE USER '<user>'@'<host>';

這將建立一個基本帳戶,而無需在建立時配置使用者和主機以外的任何詳細資訊。

如何建立具有密碼的使用者?

通常,您希望在建立使用者時配置身分驗證。您可以透過將選用的 IDENTIFIED BY 子句新增到 CREATE USER 陳述式來執行此操作

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

這會像之前一樣建立新的使用者帳戶,並同時為該帳戶指派密碼。我們將介紹如何在事後指派密碼,或稍後如何變更使用者的密碼。

如何建立具有 Unix socket 身分驗證的使用者?

雖然密碼身分驗證是大多數使用者最常見的身分驗證方法,但它並非唯一的選擇。MySQL 提供了許多不同的內部和外部身分驗證機制,您可以配置使用者帳戶以使用這些機制。作為範例,我們將使用 Unix socket 身分驗證來配置新帳戶。

Unix socket 身分驗證可用於 Linux 或類 Unix 環境中,以便作業系統上的帳戶可以存取 MySQL 內相同的帳戶名稱,而無需進一步的身分驗證。在此配置中,MySQL 管理員知道作業系統上的使用者帳戶受到嚴格控制。

因此,如果作業系統上有 mary 使用者,則如果 Unix socket 身分驗證是定義的身分驗證機制,他們將能夠登入 MySQL 內的 'mary'@'localhost' 帳戶。現在讓我們配置這個。

Socket 身分驗證需要 auth_socket 外掛程式,因此首先輸入以下內容來載入外掛程式

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

接下來,建立一個使用者帳戶,使其與您作業系統上的使用者帳戶相符。在此範例中,我們將使用上面討論的 mary 帳戶。如果您不使用與您的作業系統名稱之一相符的名稱,您將無法使用此使用者進行身分驗證。

若要建立具有 socket 身分驗證的使用者,我們需要使用 IDENTIFIED WITH 子句(與先前使用的 IDENTIFIED BY 子句不同)來指定要使用的身分驗證外掛程式

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

現在,您應該能夠從作業系統上的 mary 使用者身分驗證到 'mary'@'localhost' MySQL 使用者。以 mary 身分登入時,連線到資料庫,無需提供任何使用者名稱或密碼

mysql

您應該會透過您配置的 Unix socket 身分驗證自動登入。

如何刪除 MySQL 使用者?

保留不再有用途的使用者帳戶是一種安全風險。您可以使用 DROP USER 指令輕鬆移除帳戶。

基本語法如下所示

DROP USER '<user>'@'<host>';

因此,若要刪除 'mary'@'localhost' 使用者,您將輸入

DROP USER 'mary'@'localhost';

如果您嘗試刪除不存在的使用者,您將收到錯誤

ERROR 1396 (HY000): Operation DROP USER failed for 'mary'@'localhost'

為了避免這種情況,您可以在帳戶名稱之前新增 IF EXISTS 子句。如果使用者存在,則會將其刪除。如果不存在,則只會發出警告

Query OK, 0 rows affected, 1 warning (0.00 sec)

結論

在本快速指南中,我們介紹了 MySQL 資料庫建立和刪除使用者的基本知識,以及一些其他選項。

建立使用者後,我們還有其他資訊豐富的文章更深入地探討 MySQL 中的使用者角色管理以及使用者身分驗證

關於作者
Alex Emerich

Alex Emerich

Alex 是典型的賞鳥、熱愛嘻哈的書蟲,也喜歡撰寫關於資料庫的文章。他目前住在柏林,在那裡可以看到他像李奧波德·布魯姆一樣漫無目的地走在城市中。