最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user)

 更新時間:2020年11月06日 14:22:18   作者:AsiaYe  
這篇文章主要介紹了MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下

Tip:

在MySQL中,我們經(jīng)常需要創(chuàng)建用戶和刪除用戶,創(chuàng)建用戶時,我們一般使用create user或者grant語句來創(chuàng)建,create語法創(chuàng)建的用戶沒有任何權(quán)限,需要再使用grant語法來分配權(quán)限,而grant語法創(chuàng)建的用戶直接擁有所分配的權(quán)限。在一些測試用戶創(chuàng)建完成之后,做完測試,可能用戶的生命周期就結(jié)束了,需要將用戶刪除,而刪除用戶在MySQL中一般有兩種方法,一種是drop user,另外一種是delete from mysql.user,那么這兩種方法有什么區(qū)別呢?我們這里通過例子演示。

delete from mysql.user

首先,我們看看delete from mysql.user的方法。我們創(chuàng)建兩個用戶用來測試,測試環(huán)境是MySQL5.5版本,用戶名分別為yeyz@'%'和yeyz@'localhost',創(chuàng)建用戶的語法如下:

mysql 15:13:12>>create user yeyz@'%' identified by '123456';
Query OK, rows affected (. sec)
mysql 15:20:01>>grant select,create,update,delete on yeyz.yeyz to yeyz@'%';
Query OK, rows affected (. sec)
mysql 15:29:48>>GRANT USAGE ON yeyz.yeyz TO 'yeyz'@localhost IDENTIFIED BY '123456';
Query OK, rows affected (. sec)
mysql--dba_admin@127...1:(none) 15:20:39>>show grants for yeyz@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for yeyz@%                                          |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yeyz'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, UPDATE, DELETE, CREATE ON `yeyz`.`yeyz` TO 'yeyz'@'%'                 |
+-----------------------------------------------------------------------------------------------------+

此時我們通過delete的方法手動刪除mysql.user表中的這兩個用戶,在去查看用戶表,我們發(fā)現(xiàn):

mysql 15:20:43>>delete from mysql.user where user='yeyz';
Query OK, rows affected (. sec)

mysql 15:21:40>>select user,host from mysql.user;
+------------------+-----------------+
| user       | host      |
+------------------+-----------------+
| dba_yeyz     | localhost    |
| root       | localhost    |
| tkadmin     | localhost    |
+------------------+-----------------+
 rows in set (. sec)

已經(jīng)沒有這兩個yeyz的用戶了,此時我們使用show grants for命令查看剛才刪除的用戶,我們發(fā)現(xiàn)依舊是存在這個用戶的權(quán)限說明的:

mysql 15:24:21>>show grants for yeyz@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for yeyz@%                                          |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yeyz'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, UPDATE, DELETE, CREATE ON `yeyz`.`yeyz` TO 'yeyz'@'%'                 |
+-----------------------------------------------------------------------------------------------------+
 rows in set (0.00 sec)

說明我們雖然從mysql.user表里面刪除了這個用戶,但是在db表和權(quán)限表里面這個用戶還是存在的,為了驗證這個結(jié)論,我們重新創(chuàng)建一個yeyz@localhost的用戶,這個用戶我們只給它usage權(quán)限,其他的權(quán)限我們不配置,如下:

mysql ::>>GRANT USAGE ON yeyz.yeyz TO 'yeyz'@localhost IDENTIFIED BY '123456';
Query OK, rows affected (. sec)

這個時候,我們使用yeyz@localhost這個用戶去登陸數(shù)據(jù)庫服務(wù),然后進(jìn)行相關(guān)的update操作,如下:

[dba_mysql@tk-dba-mysql-stat-- ~]$ /usr/local/mysql/bin/mysql -uyeyz --socket=/data/mysql_4306/tmp/mysql.sock --port= -p -hlocalhost
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 
Server version: 5.5.-log MySQL Community Server (GPL)

Copyright (c) , , 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--yeyz@localhost:(none) 15:31:05>>select * from yeyz.yeyz;
+------+
| id  |
+------+
|  3 |
|  4 |
|  5 |
+------+
 rows in set (. sec)

mysql--yeyz@localhost:(none) 15:31:16>>delete from yeyz.yeyz where id=;
Query OK, row affected (. sec)

mysql--yeyz@localhost:(none) 15:31:32>>select * from yeyz.yeyz;
+------+
| id  |
+------+
|  3 |
|  4 |
+------+
 rows in set (. sec)

最終出現(xiàn)的結(jié)果可想而知,一個usage權(quán)限的用戶,對數(shù)據(jù)庫總的表進(jìn)行了update操作,而且還成功了。這一切得益于我們delete from mysql.user的操作,這種操作雖然從user表里面刪除了記錄,但是當(dāng)這條記錄的host是%時,如果重新創(chuàng)建一個同名的新用戶,此時新用戶將會繼承以前的用戶權(quán)限,從而使得用戶權(quán)限控制失效,這是很危險的操作,盡量不要執(zhí)行。

再開看看drop的方法刪除用戶

首先,我們刪除掉剛才的那兩個用戶,然后使用show grants for語句查看他們的權(quán)限:

mysql ::>>drop user yeyz@'%';
Query OK, rows affected (0.00 sec)
mysql ::>>drop user yeyz@'localhost';
Query OK, rows affected (0.00 sec)
mysql ::>>
mysql ::>>show grants for yeyz@'%';
ERROR (): There is no such grant defined for user 'yeyz' on host '%'
mysql ::>>show grants for yeyz@'localhost';
ERROR (): There is no such grant defined for user 'yeyz' on host '192.168.18.%'

可以看到,權(quán)限已經(jīng)完全刪除了,此時我們重新創(chuàng)建一個只有select權(quán)限的用戶:

mysql ::>>GRANT SELECT ON *.* TO 'yeyz'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
Query OK, rows affected (. sec)

我們使用這個用戶登錄到數(shù)據(jù)庫服務(wù),然后嘗試進(jìn)行select、update以及create操作,結(jié)果如下:

[dba_mysql@tk-dba-mysql-stat-10-104 ~]$ /usr/local/mysql/bin/mysql -uyeyz --socket=/data/mysql_4306/tmp/mysql.sock --port=4306 -p -hlocalhost
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 
Server version: 5.5.19-log MySQL Community Server (GPL)

Copyright (c) , , 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 ::>>select * from yeyz.yeyz;
+------+
| id  |
+------+
|   |
|   |
|   |
+------+
 rows in set (0.00 sec)

mysql ::>>update yeyz.yeyz set id= where id=;
ERROR (): UPDATE command denied to user 'yeyz'@'localhost' for table 'yeyz'
mysql ::>>create table test (id int);
ERROR (D000): No database selected
mysql ::>>create table yeyz.test (id int);
ERROR (): CREATE command denied to user 'yeyz'@'localhost' for table 'test'

可以發(fā)現(xiàn),這個用戶只可以進(jìn)行select操作,當(dāng)我們嘗試進(jìn)行update操作和create操作的時候,系統(tǒng)判定這種操作沒有權(quán)限,直接拒絕了,這就說明使用drop user方法刪除用戶的時候,會連通db表和權(quán)限表一起清除,也就是說刪的比較干凈,不會對以后的用戶產(chǎn)生任何影響。

結(jié)論:

    當(dāng)我們想要刪除一個用戶的時候,盡量使用drop user的方法刪除,使用delete方法可能埋下隱患,下次如果創(chuàng)建同名的用戶名時,權(quán)限控制方面存在一定的問題。

    這個演示也解決了一些新手朋友們的一個疑問:為什么我的用戶只有usage權(quán)限,卻能訪問所有數(shù)據(jù)庫,并對數(shù)據(jù)庫進(jìn)行操作?這個時候,你需要看看日志,查詢自己有沒有進(jìn)行過delete from mysql.user的操作,如果有,這個問題就很好解釋了。

以上就是MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 刪除用戶的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mysql中between...and引起的索引失效問題及解決

    Mysql中between...and引起的索引失效問題及解決

    這篇文章主要介紹了Mysql中between...and引起的索引失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MySQL中的insert-on-duplicate語句舉例詳解

    MySQL中的insert-on-duplicate語句舉例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中insert-on-duplicate語句的相關(guān)資料,文中通過圖文以及代碼示例將insert-on-duplicate的用法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • mysql 忘記密碼的解決方法(linux和windows小結(jié))

    mysql 忘記密碼的解決方法(linux和windows小結(jié))

    下面是linux和windows下mysql丟失密碼的解決辦法
    2008-12-12
  • 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)

    利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)

    Xtrabackup 是percona的一個開源項目,可以熱備份innodb ,XtraDB,和MyISAM(會鎖表),可以看做是InnoDB Hotbackup的免費替代品
    2013-04-04
  • 基于MySQL實現(xiàn)基礎(chǔ)圖數(shù)據(jù)庫的詳細(xì)步驟

    基于MySQL實現(xiàn)基礎(chǔ)圖數(shù)據(jù)庫的詳細(xì)步驟

    圖數(shù)據(jù)庫是一種用于存儲和查詢具有復(fù)雜關(guān)系的數(shù)據(jù)的數(shù)據(jù)庫,能夠快速地查詢和處理節(jié)點之間的關(guān)系,本文將使用MySQL實現(xiàn)一個基礎(chǔ)的圖數(shù)據(jù)庫,有需要的小伙伴可以了解下
    2025-07-07
  • Mysql5.7定時備份的實現(xiàn)

    Mysql5.7定時備份的實現(xiàn)

    這篇文章主要介紹了Mysql5.7定時備份的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL MHA 運(yùn)行狀態(tài)監(jiān)控介紹

    MySQL MHA 運(yùn)行狀態(tài)監(jiān)控介紹

    這篇文章主要介紹MySQL MHA 運(yùn)行狀態(tài)監(jiān)控,MHA(Master HA)是一款開源的 MySQL 的高可用程序,它為 MySQL 主從復(fù)制架構(gòu)提供了 automating master failover 功能,想具體了解的小伙伴可以和小編一起學(xué)習(xí)下面文章內(nèi)容
    2021-10-10
  • Centos7.5安裝mysql5.7.24二進(jìn)制包方式部署

    Centos7.5安裝mysql5.7.24二進(jìn)制包方式部署

    這篇文章主要介紹了Centos7.5安裝mysql5.7.24二進(jìn)制包方式部署,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-12-12
  • MySql行轉(zhuǎn)列&列轉(zhuǎn)行方式

    MySql行轉(zhuǎn)列&列轉(zhuǎn)行方式

    在MySQL數(shù)據(jù)庫管理中,行轉(zhuǎn)列和列轉(zhuǎn)行是常見的數(shù)據(jù)處理需求,行轉(zhuǎn)列通常涉及將表中的行數(shù)據(jù)按照某種規(guī)則轉(zhuǎn)換成列形式,常用于報表生成、數(shù)據(jù)分析等場景,列轉(zhuǎn)行則是將原本以列形式存儲的數(shù)據(jù)轉(zhuǎn)換成行形式,以便于進(jìn)行進(jìn)一步的數(shù)據(jù)處理或分析
    2024-11-11
  • 淺談Mysql連接數(shù)據(jù)庫時host和user的匹配規(guī)則

    淺談Mysql連接數(shù)據(jù)庫時host和user的匹配規(guī)則

    這篇文章主要介紹了淺談Mysql連接數(shù)據(jù)庫時host和user的匹配規(guī)則,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

独山县| 黎平县| 建阳市| 门源| 长白| 三都| 洛浦县| 庆阳市| 威信县| 瑞安市| 扎鲁特旗| 兴城市| 聂拉木县| 崇明县| 锡林郭勒盟| 闻喜县| 武穴市| 衡阳市| 十堰市| 镇安县| 海门市| 长阳| 改则县| 固阳县| 宣化县| 大悟县| 台安县| 萨嘎县| 南江县| 凭祥市| 博乐市| 班戈县| 庆阳市| 定南县| 博罗县| 闽侯县| 福建省| 瑞安市| 赤城县| 礼泉县| 三门县|