在 MySQL 中,我們可以使用 RENAME USER 語句修改一個或多個已經存在的用戶賬號。
語法格式如下:
RENAME USER <舊用戶> TO <新用戶>
其中:
- <舊用戶>:系統中已經存在的 MySQL 用戶賬號。
- <新用戶>:新的 MySQL 用戶賬號。
使用 RENAME USER 語句時應注意以下幾點:
- RENAME USER 語句用於對原有的 MySQL 用戶進行重命名。
- 若系統中舊賬戶不存在或者新賬戶已存在,該語句執行時會出現錯誤。
- 使用 RENAME USER 語句,必須擁有 mysql 數據庫的 UPDATE 權限或全局 CREATE USER 權限。
例 1
使用 RENAME USER 語句將用戶名 test1 修改為 testUser1,主機是 localhost。SQL 語句和執行過程如下。
mysql> RENAME USER 'test1'@'localhost' -> TO 'testUser1'@'localhost'; Query OK, 0 rows affected (0.03 sec)
在 cmd 命令行工具中,使用 testUser1 用戶登錄數據庫服務器,如下所示。
C:\Users\USER>mysql -h localhost -u testUser1 -p Enter password: ***** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.20-log MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL刪除用戶(DROP/DELETE USER)
在 MySQL 數據庫中,可以使用 DROP USER 語句刪除用戶,也可以直接在 mysql.user 表中刪除用戶以及相關權限。
1. 使用 DROP USER 語句刪除普通用戶
使用 DROP USER 語句刪除用戶的語法格式如下:
DROP USER <用戶1> [ , <用戶2> ]…
其中,用戶用來指定需要刪除的用戶賬號。
使用 DROP USER 語句應注意以下幾點:
(1)DROP USER 語句可用於刪除一個或多個用戶,並撤銷其權限。
(2)使用 DROP USER 語句必須擁有 mysql 數據庫的 DELETE 權限或全局 CREATE USER 權限。
(3)在 DROP USER 語句的使用中,若沒有明確地給出賬戶的主機名,則該主機名默認為“%”。
注意:用戶的刪除不會影響他們之前所創建的表、索引或其他數據庫對象,因為 MySQL 並不會記錄是誰創建了這些對象。
例 1
下面使用 DROP USER 語句刪除用戶'test1@'localhost'。SQL 語句和執行過程如下。
mysql> DROP USER 'test1'@'localhost'; Query OK, 0 rows affected (0.00 sec)
在 cmd 命令行工具中,使用 test1 用戶登錄數據庫服務器,發現登錄失敗,說明用戶已經刪除,如下所示。
C:\Users\USER>mysql -h localhost -u test1 -p Enter password: **** ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
2. 使用DELETE語句刪除普通用戶
可以使用 DELETE 語句直接刪除 mysql.user 表中相應的用戶信息,但必須擁有 mysql.user 表的 DELETE 權限。其基本語法格式如下:
DELETE FROM mysql.user WHERE Host='hostname' AND User='username';
Host 和 User 這兩個字段都是 mysql.user 表的主鍵。因此,需要兩個字段的值才能確定一條記錄。
例 2
下面使用 DELETE 語句刪除用戶'test2'@'localhost'。SQL 語句和執行過程如下所示。
DELETE FROM mysql.user WHERE Host='localhost'AND User='test2'; Query OK, 1 rows affected (0.00 sec)
結果顯示刪除成功。可以使用 SELETE 語句查詢 mysql.user 表,以確定該用戶是否已經成功刪除。