引言
在处理数据库时,通常需要能够创建和删除用户。无论是团队中有多名成员需要访问数据库,还是创建和删除测试用户以模拟数据库权限,了解如何添加和删除数据库用户都非常重要。
在这份简短指南中,我们将介绍在 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 数据库创建和删除用户的基本知识以及一些额外的选项。