分享到

引言

在處理資料庫時,通常需要能夠建立和刪除使用者。無論是團隊中有多名成員需要訪問資料庫,還是建立和刪除測試使用者以模擬資料庫許可權,瞭解如何新增和刪除資料庫使用者都非常重要。

在這份簡短指南中,我們將介紹在 MySQL 中建立和刪除資料庫使用者的基本知識。這些命令將幫助您開始授予資料庫訪問許可權,併為未來的角色管理奠定基礎。

如何建立 MySQL 使用者?

在 MySQL 中建立使用者是與他人協作以及測試訪問許可權和特權的關鍵。需要注意的是,為了建立使用者,您必須使用具有先決條件中描述的許可權的使用者登入。

基本語法

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

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

這將在建立時建立一個基本帳戶,除了使用者和主機之外,不配置任何其他詳細資訊。

如何建立帶密碼的使用者?

通常,您希望在建立使用者時配置身份驗證。您可以透過在 CREATE USER 語句中新增可選的 IDENTIFIED BY 子句來實現這一點。

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

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

如何建立具有 Unix 套接字身份驗證的使用者?

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

Unix 套接字身份驗證可用於 Linux 或類 Unix 環境,以便作業系統上的帳戶可以訪問 MySQL 中同名的帳戶,而無需進一步身份驗證。在此配置中,MySQL 管理員知道作業系統上的使用者帳戶受到嚴格控制。

因此,如果作業系統上有一個 mary 使用者,並且 Unix 套接字身份驗證是定義的身份驗證機制,那麼他們將能夠登入到 MySQL 中的 'mary'@'localhost' 帳戶。現在我們來配置它。

套接字身份驗證需要 auth_socket 外掛,因此首先透過輸入以下內容載入外掛:

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

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

要使用套接字身份驗證建立使用者,我們需要使用 IDENTIFIED WITH 子句(與之前使用的 IDENTIFIED BY 子句不同)來指定要使用的身份驗證外掛:

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

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

mysql

您應該透過您配置的 Unix 套接字身份驗證自動登入。

如何刪除 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

亞歷克斯·埃默裡奇

亞歷克斯是一個典型的愛觀鳥、愛嘻哈、愛讀書的書呆子,他也喜歡寫關於資料庫的文章。他目前住在柏林,在那裡他像利奧波德·布魯姆一樣漫無目的地在城市中漫步。
© . This site is unofficial and not affiliated with Prisma Data, Inc.