1. 程式人生 > >mysql關於grant與revoke的詳細教程

mysql關於grant與revoke的詳細教程

MySQL關於grant與revoke的詳細教程

grant命令主要是用來授權

語法:

1   grant 許可權 on 資料庫物件 to 使用者;   //僅給某使用者授予某資料庫物件某許可權

grant 許可權 on 資料庫物件 to 使用者@'ip或者localhost';  //注意:最好使用該格式,因為mysql是根據User及Host來匹配使用者的。

2   grant 許可權 on 資料庫物件 to 使用者@'ip地址' identified by '使用者密碼';   //給某個ip地址的某個使用者對某個資料庫物件授予某許可權,並指定該使用者訪問密碼。

3   grant 許可權 on

 資料庫物件 to 使用者@'ip地址' identified by '使用者密碼' with grant option; //除了具備第二項的功能外,還額外賦予該ip的使用者授予其他使用者授權的許可權。對應mysql.user表該使用者的Grant_priv欄位為Y,即該使用者也可以使用grant命令了給其他使用者授予他自身權力下的操作許可權。(注意,不帶with grant option該欄位為N

英文說明文件:

After creating a new user account, the user doesn’t have any privileges. To grant privileges to a user account, you use the GRANT

 statement.

The following illustrates the syntax of the GRANT statement:

1234GRANTprivilege,[privilege],..ONprivilege_levelTOuser[IDENTIFIED BYpassword][REQUIREtsl_option][WITH[GRANT_OPTION|resource_option]];

Let’s examine the GRANT statement in greater detail.

  • First, specify one or more privileges after the GRANT
     keyword. If you grant the user multiple privileges, each privilege is separated by a comma. (see a list of privilege in the table below).
  • Next, specify the privilege_level that determines the level at which the privileges apply. MySQL supports global ( *.*), database ( database.*), table ( database.table) and column levels. If you use column privilege level, you must specify one or a list of comma-separated column after each privilege.
  • Then, place the user that you want to grant privileges.  If user already exists, the GRANT statement modifies its privilege. Otherwise, the GRANT statement creates a new user. The optional clauseIDENTIFIED BY allows you set a new password for the user.
  • After that, you specify whether the user has to connect to the database server over a secure connection such as SSL, X059, etc.
  • Finally, the optional WITH GRANT OPTION clause allows you to grant other users or remove from other users the privileges that you possess. In addition, you can use the WITH clause to allocate MySQL database server’s resource e.g., to set how many connections or statements that the user can use per hour. This is very helpful in the shared environments such as MySQL shared hosting.

Notice that in order to use the GRANT statement, you must have the GRANT OPTION privilege and the privileges that you are granting. If the system variable is enabled, you need to have the SUPERprivilege to execute the GRANT statement.

Let’s practice with some examples of using MySQL GRANT statement to have a better understanding.


MySQL GRANT examples

For example, the following CREATE USER statement creates a new super user account.

CREATE USERsuper@localhostIDENTIFIED BY'dolphin';

To display the privileged assigned to [email protected] user, you use SHOW GRANTS statement.

SHOWGRANTSFORsuper@localhost;

如果未曾賦予使用者許可權,則會提示:

123456+-------------------------------------------+|Grantsforsuper@localhost|+-------------------------------------------+|GRANTUSAGEON*.*TO`super`@`localhost`|+-------------------------------------------+1rowinset(0.00sec)

To grant all privileges to the [email protected] user account, you use the following statement.Note that USAGE privilege means no privileges in MySQL.

GRANTALLON*.*TO'super'@'localhost'WITH GRANT OPTION;//賦予本地super使用者超級許可權(含grant)

The 

許可權包含有:

SELECT /INSERT /UPDATE / DELETE / DROP / CREATE / CREATE USER / ALTER / ALTER ROUTINE (使用alter procedure和drop procedure) / CREATE ROUTINE (使用create procedure) / CREATE

TEMPORARY TABLES (使用create temporary table)/ CREATE VIEW / EXECUTE (使用call和儲存過程) / EVENT / FILE (使用select into outfile 和 load data infile) / GRANT OPTION (可以使用grant和revoke) / ALL / ALL PRIVILEGES / INDEX (可以使用create index和drop index) / LOCK TABLES (鎖表) / PROCESS (使用show full processlist) / RELOAD (使用flush) / REPLICATION CLIENT (伺服器位置訪問) / REPLICATION SLAVE (由複製從屬使用) / SHOW DATABASES / SHOW VIEW / SHUT DOWN (使用mysqladmin shutdown 來關閉mysql)/ SUPER / USAGE (無訪問許可權)

ALL PRIVILEGES; //等同於All

資料物件:

*.*  所有庫和所有表。

databaseName.*  某個庫中的所有表

databaseName.tableName   某個庫中某個表

設定許可權時必須給出一下資訊1,要授予的許可權2,被授予訪問許可權的資料庫或表3,使用者名稱(及主機?有時候無需主機也可以)grant和revoke可以在幾個層次上控制訪問許可權1,整個伺服器,使用 grant ALL  和revoke  ALL2,整個資料庫,使用on  database.*3,特點表,使用on  database.table4,特定的列5,特定的儲存過程user表中host列的值的意義%              匹配所有主機localhost    localhost不會被解析成IP地址,直接通過UNIXsocket連線127.0.0.1      會通過TCP/IP協議連線,並且只能在本機訪問;::1                 ::1就是相容支援ipv6的,表示同ipv4的127.0.0.1

使用案例:

grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利。

grant select, insert, update, delete on testdb.* to [email protected]’%’

grant 資料庫開發人員,建立表、索引、檢視、儲存過程、函式。。。等許可權。

grant 建立、修改、刪除 MySQL 資料表結構許可權。

grant create on testdb.* to [email protected]’192.168.0.%’;

grant alter on testdb.* to [email protected]’192.168.0.%’;

grant drop on testdb.* to [email protected]’192.168.0.%’;

grant 操作 MySQL 外來鍵許可權。

grant references on testdb.* to [email protected]’192.168.0.%’;

grant 操作 MySQL 臨時表許可權。

grant create temporary tables on testdb.* to [email protected]’192.168.0.%’;

grant 操作 MySQL 索引許可權。

grant index on testdb.* to [email protected]’192.168.0.%’;

grant 操作 MySQL 檢視、檢視檢視原始碼 許可權。

grant create view on testdb.* to [email protected]’192.168.0.%’;

grant show view on testdb.* to [email protected]’192.168.0.%’;

grant 操作 MySQL 儲存過程、函式 許可權。

grant create routine on testdb.* to [email protected]’192.168.0.%’; -- now, can show procedure status

grant alter routine on testdb.* to [email protected]’192.168.0.%’; -- now, you can drop a procedure

grant execute on testdb.* to d[email protected]’192.168.0.%’;

grant 作用在整個 MySQL 伺服器上:

grant select on *.* to [email protected]; -- dba 可以查詢 MySQL 中所有資料庫中的表。

grant all on *.* to [email protected]; -- dba 可以管理 MySQL 中的所有資料庫

grant 作用在單個數據庫上:

grant select on testdb.* to [email protected]; -- dba 可以查詢 testdb 中的表。

grant 作用在單個數據表上:

grant select, insert, update, delete on testdb.orders to [email protected];

grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to [email protected];

grant 作用在儲存過程、函式上:

grant execute on procedure testdb.pr_add to ’dba’@’localhost’

grant execute on function testdb.fn_add to ’dba’@’localhost’

注意:修改完許可權以後 一定要重新整理服務,或者重啟服務,重新整理服務用:FLUSH PRIVILEGES

同理:revoke英文文件如下:

Introduction to the MySQL REVOKE Statement

In order to revoke privileges from a user account, you use the MySQL REVOKE statement. MySQL allows you to revoke one or more privileges or all privileges from a user.

The following illustrates the syntax of revoking specific privileges from a user:

1 2 3 4 REVOKEprivilege_type[(column_list)] [,priv_type[(column_list)]]... ON[object_type]privilege_level FROMuser[,user]...

Let’s examine the MySQL REVOKE statement in more detail.

  • First, specify a list of privileges that you want to revoke from a user right after the REVOKE keyword. You need to separate privileges by commas.
  • Second, specify the privilege level at which privileges is revoked in the ON clause .
  • Third, specify the user account that you want to revoke the privileges in the FROM clause.

Note that to revoke privileges from a user account, you must have GRANT OPTION privilege and the privileges that you are revoking.

To revoke all privileges from a user, you use the following form of the REVOKE statement:

1REVOKE ALL PRIVILEGES,GRANT OPTIONFROMuser[,user]…

To execute the REVOKE ALL statement , you must have the global CREATE USER privilege or the UPDATEprivilege for the mysql database.

To revoke proxy user, you use the REVOKE PROXY command as follows:

1 REVOKE PROXY ONuserFROMuser[,user]...

A proxy user is a valid user in MySQL who can impersonate another user, therefore, the proxy user has all privileges of the user that it impersonates.

Before revoking privileges of a user, it is good practice to check if the user has the privileges by using theSHOW GRANTS statement as follows:

1 SHOWGRANTSFORuser;
使用案例:

//檢視rfc使用者的許可權

SHOWGRANTSFORrfc;

//MySQL返回如下結果:

GRANTSELECT,UPDATE,DELETEON'classicmodels'.*TO'rfc'@'%'

//為rfc使用者指定密碼

CREATE USERIF EXISTSrfc

相關推薦

2018 最新版本pycharm 的安裝破解 詳細教程

PyCharm是一種Python IDE,帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如除錯、語法高亮、Project管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高階功能,以用於支援Django框架下的專業Web開發,但是每次

MySQL資料庫下載安裝詳細教程

https://blog.csdn.net/qq_36868342/article/details/78816740 這個博主寫的非常詳細。按照她的流程走差不多就很OK了。 最後我出現了一個access denied for user root @localhost這個錯誤。 解決方

PhotoShop2018安裝破解詳細教程

PhotoShop2018安裝與破解教程 先下載Adobe官方軟體AdobeCreativeCloud,然後通過這個軟體來下載PS2018,並在AdobeCreativeCloud裡面修改安裝位置,最後破解,最後可以卸磨殺驢,把AdobeCreativeCloud解除安裝掉

infobright 安裝配置詳細教程

轉自:http://blog.51cto.com/phpqinsir/1030591 Infobright是一個基於獨特的專利知識網格技術的列式資料庫,能夠降低您90%的管理工作量。使用Infobright不需要建立特殊的資料庫模式,無需建立和維護索引,無需對資料進行分割槽,甚至不需要手

CentOS6.5下kafka+ZooKeeper下載安裝詳細教程-單機版

(注:在大資料分析系統中,不會安裝單機版,所以可以直接去看多機版教程,多機版教程也是完整的。) 下載zookeeper: 安裝zookeeper: 將zookeeper-3.4.6.tar.gz拿U盤複製到/home/hadoop目錄下 cd /home/hadoo

mysql關於grantrevoke詳細教程

MySQL關於grant與revoke的詳細教程 grant命令主要是用來授權 語法: 1   grant 許可權 on 資料庫物件 to 使用者;   //僅給某使用者授予某資料庫物件某許可權 grant 許可權 on 資料庫物件 to 使用者@'ip或者localho

微軟源代碼管理工具TFS2013安裝使用詳細圖文教程(Vs2013)

www. 圖案 簡單 名稱 本地用戶 進行 工作區 正常 asp.net 轉自 微軟源代碼管理工具TFS2013安裝與使用詳細圖文教程(Vs2013) 這篇文章聯合軟件小編主要介紹了微軟源代碼管理工具TFS2013安裝與使用圖文教程,本文詳細的給出了TFS2013

JAVA的下載安裝和環境變量配置等詳細教程

bin 命令提示符 1.3 學習 1.7 常常 表示 最新 edi 初學JAVA時,新手常常不知如何下載JAVA,也不知如何安裝JAVA以及對JAVA配置環境變量。近期學弟學妹常請教我如何下載安裝和配置JAVA,於是寫下此博文以便更多新手快速入門,由於我本人是玩智能車的,因

DKhadoop安裝配置詳細教程常見問題解決方法

DKhadoop安裝配置詳細教程與常見問題解決方法上週分別就DKHadoop的安裝準備工作以及伺服器作業系統配置寫了兩篇分享的文章,這是個人第一次嘗試寫一個系統性的分享文章,必然會有很多疏漏的地方,還望見諒吧。今天分享的是DKHadoop安裝以及常見問題的解決方案方法介紹。首先給大家分享一下DKHadoop安

軟體安裝下載總結(四)--從CentOS官網下載系統映象詳細教程

轉載:https://jingyan.baidu.com/article/1876c85279cedd890a13766c.html   很多新手小白鼠想學習CentOS系統,但是不知道映象去哪裡搞,隨便去個第三方發現要麼要註冊,要麼各種廣告病毒,或者好不容易找到官網,點進去一看卻

搭建電影網站詳細教程——一、域名伺服器

前言:這幾天閒著無聊想要搭建一個電影網站,沒事的時候可以看個電影,瀏覽量多了的話還可以掛個廣告。^_^ 上網找了找教程,發現沒有特別詳細的,就準備自己寫一個,以後有需要可以看一下。 一、購買域名與伺服器 我租的是阿里的域名以及伺服器,對比了一下BAT三家公司,阿里的比較便宜。

MongoDB 安裝詳細教程 + 常用命令 + Python 的互動

MongoDB 簡介 MongoDB (名稱來自 humongous/巨大無比的, 是一個可擴充套件的高效能,開源,模式自由,面向文件的NoSQL,基於 分散式 檔案儲存,由 C++ 語言編寫,設計之初旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB使用的是記憶體對映儲存引

Maven框架安裝配置——超詳細教程

1.下載Maven框架 下載地址:http://maven.apache.org/download.cgi 下載完成後解壓到Java所在目錄下,e.g. C:\Program Files (x86)\Java 2.配置環境變數,驗證測試 1)新增環境變數 e.g. 變數名:MAVEN_H

java環境變數 的配置詳解(全網最詳細教程

筆者這學期開始學習java課程,學習java開發首先需要配置java執行環境變數。雖然上課老師也講了如何配置java環境變數,可是筆者的同學還是有好多都不會配置,所以筆者最近配置了特別多次java環境變數。如下筆者詳細解釋從JDK安裝到環境變數的裝配。 目錄

java檔案,class檔案dex檔案的轉化。(詳細教程

筆者這兩天整理的關於安卓逆向的一些小知識:教你如何在這三種檔案中來去自如: .java檔案 Java原始檔 .class檔案 Java位元組碼檔案,是一種能夠被Java虛擬機器(JVM:Java Virtual Machine)識別,載入並且執行的檔案格式。 .

Jrebel外掛的啟用熱部署配置詳細教程(附最新可用Jrebel啟用碼地址)

寫在前面的話 JRebel是一款JAVA虛擬機器外掛,它使得JAVA程式設計師能在不進行重部署的情況下,即時看到程式碼的改變對一個應用程式帶來的影響。 針對Eclipse,MyEclipse, STS等開發工具 1 Jreble的離線配置 1.1 Jreble配置項的

JRebel外掛安裝配置破解啟用(多方案)詳細教程

JRebel 介紹 IDEA上原生是不支援熱部署的,一般更新了 Java 檔案後要手動重啟 Tomcat 伺服器,才能生效,浪費不少生命啊。目前對於idea熱部署最好的解決方案就是安裝JRebel外掛,這樣不論是更新 class 類還是更新 Spring 配置檔案都

【轉】JRebel外掛安裝配置破解啟用(多方案)詳細教程

JRebel 介紹   IDEA上原生是不支援熱部署的,一般更新了 Java 檔案後要手動重啟 Tomcat 伺服器,才能生效,浪費不少生命啊。目前對於idea熱部署最好的解決方案就是安裝JRebel外掛,這樣不論是更新 class 類還是更新 Spring 配置檔案都能做

HalconMFC數字識別詳細教程

一. Halcon讀取並訓練圖片          本部落格要識別如下的圖片,該圖片是數字5,讀取圖片,二值處理,再經過SVM分類訓練,得出數字結果。關於SVM的文章,可以【點選此處學習SVM】。     

phpcms實現手機端PC端雙模板的方法詳細教程(同步跳轉)

<script type="text/javascript"> function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad