MySQL - DROP USER 删除用户
在 MySQL 中,删除用户将删除用户对特定数据库的访问权限。数据库管理员执行此操作是为了维护安全性并控制谁可以与数据库系统交互,确保只有授权用户才能访问和操作数据。
MySQL 删除用户语句
您可以使用 DROP USER 语句在 MySQL 中删除一个或多个现有用户。删除账户后,该账户的所有权限也将被删除。要执行此语句,您需要拥有 CREATE USER 权限。
语法
以下是 DROP USER 语句的语法 -
DROP USER [IF EXISTS] 'username'@'hostname';
其中,user_name 是您需要删除的 MySQL 用户的名称。
示例
假设我们创建了一个名为"TestUser"的 MySQL 用户账户,如下所示 -
CREATE USER TestUser@localhost IDENTIFIED BY 'password1';
以下是获得的输出 -
Query OK, 0 rows affected (0.04 sec)
您可以使用以下查询来验证用户列表 -
SELECT user FROM MySQl.user;
表格将显示如下 -
user |
---|
TestUser |
mysql.infoschema |
mysql.session |
mysql.sys |
newUser |
root |
sample |
现在,我们使用 DROP USER 语句删除上面创建的"TestUser"帐户,如下所示 -
DROP USER TestUser@localhost;
执行上述代码后,我们可以看到如下所示的输出 -
Query OK, 0 rows affected (0.02 sec)
验证
删除表后,如果使用 SELECT 语句验证如下所示的用户列表,您会发现列表中缺少其名称 -
SELECT user FROM MySQl.user;
得到的表如下 -
user |
---|
mysql.infoschema |
mysql.session |
mysql.sys |
newUser |
root |
sample |
删除多个用户
您也可以使用 DROP ROLE 语句一次性删除多个用户。角色用于管理数据库系统中的权限和访问控制。删除角色即撤销与该角色关联的所有特权。-
示例
首先创建两个角色"MyAdmin"和"MyDeveloper"-
CREATE ROLE 'MyAdmin', 'MyDeveloper';
输出结果如下-
Query OK, 0 rows affected (0.01 sec)
现在,让我们使用 DROP ROLE 语句删除这些角色 -
DROP ROLE 'MyAdmin', 'MyDeveloper';
此查询将有效地从数据库中删除这两个角色 -
Query OK, 0 rows affected (0.01 sec)
IF EXISTS 子句
如果您尝试删除一个不存在的 MySQL 用户,将会生成错误。为了解决这个问题,MySQL 提供了 IF EXISTS 子句,它可以与 DROP USER 语句一起使用。
因此,IF EXISTS 子句允许您在用户存在的情况下删除用户,并且它可以处理在数据库中找不到指定用户的情况。
示例
在下面的查询中,我们尝试删除"demo"用户。但是,由于该用户在数据库中不存在,因此会导致错误 -
DROP USER demo@localhost;
生成的输出如下所示 -
ERROR 1396 (HY000): Operation DROP USER failed for 'demo'@'localhost'
如果将 IF EXISTS 子句与 DROP USER 语句一起使用(如下所示),则指定的用户将被删除;如果指定名称的用户不存在,则查询将被忽略 -
DROP USER IF EXISTS demo;
获得的输出如下 -
Query OK, 0 rows affected, 1 warning (0.01 sec)
使用客户端程序删除用户
在本节中,我们将了解各种用于从 MySQL 中删除现有用户的客户端程序。
语法
以下是使用各种编程语言删除 MySQL 用户的语法 -
MySQL PHP 连接器 mysqli 提供了一个名为 query() 的函数,用于在 MySQL 数据库中执行 SQL 查询。要从 MySQL 数据库中删除用户,我们需要使用此函数执行 DROP USER 语句,如下所示:
$sql = "DROP USER 'username'@'localhost'"; $mysqli->query($sql);
要使用 NodeJS 程序删除用户,我们需要使用名为 query() 的函数执行 DROP USER 语句,如下所示:
sql= "DROP USER [IF EXISTS] user_name ..."; con.query(sql, function (err, result) { if (err) throw err; console.log(result); });
要使用 Java 程序删除 MySQL 数据库中的用户,我们需要使用名为 execute() 的 JDBC 函数执行 DROP USER 语句,如下所示:-
String sql = "DROP USER "USER_NAME'@'LOCALHOST'"; statement.execute(sql);
MySQL Connector/Python 提供了一个名为 execute() 的函数,用于在 MySQL 数据库中执行 SQL 查询。要从 MySQL 数据库中删除用户,我们需要使用名为 DROP USER 的 JDBC 函数执行 DROP USER 语句,如下所示:-
sql = "DROP USER 'UserName'@'localhost'"; cursorObj.execute(sql);
示例
以下是在 MySQL 中删除用户的客户端程序 -
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'password'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass); if($mysqli->connect_errno ) { printf("Connect failed: %s
", $mysqli->connect_error); exit(); } //printf('Connected successfully.
'); $sql = "DROP USER 'Revathi'@'localhost'"; if($mysqli->query($sql)){ printf("User dropped successfully...!"); } if($mysqli->error){ printf("Failed..!" , $mysqli->error); } $mysqli->close();
输出
获得的输出如下 -
User dropped successfully...!
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); //连接到 MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); //Deleting Users sql = "DROP USER TestUser1@localhost;" con.query(sql); sql = "DROP USER TestUser2@localhost;" con.query(sql); //Listing the users after deleting sql = "select user from MySQl.user;" con.query(sql, function(err, result){ console.log("**List of Users after deleting:**") if (err) throw err console.log(result) }) });
输出
生成的输出如下 -
Connected! -------------------------- *List of Users after deleting:** [ { user: 'TestUser3' }, { user: 'TestUser4' }, { user: 'mysql.infoschema' }, { user: 'mysql.session' }, { user: 'mysql.sys' }, { user: 'root' }, { user: 'sample' } ]
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DropUsers { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/TUTORIALS"; String user = "root"; String password = "password"; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); //System.out.println("Database connected successfully...!"); String sql = "DROP USER 'Vivek'@'localhost'"; st.execute(sql); System.out.println("User 'Vivek' dropped successfully...!"); }catch(Exception e) { e.printStackTrace(); } } }
输出
获得的输出如下所示 -
User 'Vivek' created successfully...!
import mysql.connector # creating the connection object connection = mysql.connector.connect( host='localhost', user='root', password='password' ) # Create a cursor object for the connection cursorObj = connection.cursor() cursorObj.execute("DROP USER 'UserNew'@'localhost'") print("User 'UserNew' is dropped successfully.") cursorObj.close() connection.close()
输出
以下是上述代码的输出 -
User 'UserNew' is dropped successfully.