mysql用戶的權限分配

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

因今天在分配數據庫權限的時候,同事反映賬戶不能使用函數,遂搜集資料總結了一番關于mysql用戶的權限分配。

MySQL 賦予用戶權限命令的簡單格式可概括為:

grant?權限?on?數據庫對象?to?用戶

權限列表:
ALTER: 修改表和索引。
CREATE: 創建數據庫和表。
DELETE: 刪除表中已有的記錄。
DROP: 拋棄(刪除)數據庫和表。
INDEX: 創建或拋棄索引。
INSERT: 向表中插入新行。
REFERENCE: 未用。
SELECT: 檢索表中的記錄。
UPDATE: 修改現存表記錄。
FILE: 讀或寫服務器上的文件。
PROCESS: 查看服務器中執行的線程信息或殺死線程。
RELOAD: 重載授權表或清空日志、主機緩存或表緩存。
SHUTDOWN: 關閉服務器。
ALL: 所有權限,ALL PRIVILEGES同義詞。
USAGE: 特殊的 "無權限" 權限。
用 戶賬戶包括 "username" 和 "host" 兩部分,后者表示該用戶被允許從何地接入。tom@'%' 表示任何地址,默認可以省略。還可以是 "tom@192.168.1.%"、"tom@%.abc.com" 等。數據庫格式為 db@table,可以是 "test.*" 或 "*.*",前者表示 test 數據庫的所有表,后者表示所有數據庫的所有表。
子句 "WITH GRANT OPTION" 表示該用戶可以為其他用戶分配權限。?

?

一、不同角色的權限分配

1)普通數據用戶

查詢、插入、更新、刪除 數據庫中所有表數據的權利。

grant?select?on?testdb.*?to?common_user@'%';grant?insert?on?testdb.*?to?common_user@'%';grant?update?on?testdb.*?to?common_user@'%';grant?delete?on?testdb.*?to?common_user@'%';

或者,用一條 MySQL 命令來替代:

grant?select,?insert,?update,?delete?on?testdb.*?to?common_user@'%'

2)數據庫開發人員

創建表、索引、視圖、存儲過程、函數。。。等權限。

grant 創建、修改、刪除 MySQL 數據表結構權限。

grant?create?on?testdb.*?to?developer@'%';grant?alter?on?testdb.*?to?developer@'%';grant?drop?on?testdb.*?to?developer@'%';

grant 操作 MySQL 外鍵權限。

grant?references?on?testdb.*?to?developer@'%';

grant 操作 MySQL 臨時表權限。

grant?create?temporary?tables?on?testdb.*?to?developer@'%';

grant 操作 MySQL 索引權限。

grant?index?on?testdb.*?to?developer@'%';

grant 操作 MySQL 視圖、查看視圖源代碼 權限。

grant?create?view?on?testdb.*?to?developer@'%';grant?show?view?on?testdb.*?to?developer@'%';

grant 操作 MySQL 存儲過程、函數 權限。

grant?create?routine?on?testdb.*?to?developer@'%';    ?--?now, can show procedure statusgrant?alter?routine?on?testdb.*?to?developer@'%';     ?--?now, you can drop a proceduregrant?execute?on?testdb.*?to?developer@'%';

3)普通 DBA

管理某個 MySQL 數據庫的權限。

grant?all?privileges?on?testdb?to?dba@'localhost';

其中,關鍵字 “privileges” 可以省略。

4)高級 DBA

管理 MySQL 中所有數據庫的權限。

grant?all?on?*.*?to?dba@'localhost';

?

二、不同層次的權限分配

MySQL grant 權限,分別可以作用在多個層次上。

1)作用在整個數據庫上

grant?select?on?*.*?to?dba@localhost;?                  --?dba 可以查詢 MySQL 中所有數據庫中的表。grant?all?on?*.*?to?dba@localhost;?                     --?dba 可以管理 MySQL 中的所有數據庫

2. 作用在單個數據庫上

grant?select?on?testdb.*?to?dba@localhost;?             --?dba 可以查詢 testdb 中的表。

3. 作用在單個數據表上

grant?select,?insert,?update,?delete?on?testdb.orders?to?dba@localhost;

這里在給一個用戶授權多張表時,可以多次執行以上語句。例如:

grant?select(user_id,username)?on?smp.users?to?mo_user@'%'?identified?by?'123345';grant?select?on?smp.mo_sms?to?mo_user@'%'?identified?by?'123345';

4)作用在表中的列上

grant?select(id, se, rank)?on?testdb.apache_log?to?dba@localhost;

5)作用在存儲過程、函數上

grant?execute?on?procedure?testdb.pr_add?to?'dba'@'localhost';grant?execute?on?function?testdb.fn_add?to?'dba'@'localhost';

?

三、查看數據庫權限

1)查看當前用戶(自己)權限

show grants;

2)查看其他 MySQL 用戶權限

show grants?for?dba@localhost;

?

四、撤銷權限

撤銷已經賦予給 MySQL 用戶權限的權限。

revoke 跟 grant 的語法差不多,只需要把關鍵字 “to” 換成 “from” 即可:

grant?all?on?*.*?to?dba@localhost;revoke?all?on?*.*?from?dba@localhost;

?

五、注意事項

grant、revoke 用戶權限分幾點注意事項

1)grant, revoke 用戶權限后,該用戶只有重新連接 MySQL 數據庫,權限才能生效;

2)如果想讓授權的用戶,也可以將這些權限 grant 給其他用戶,需要選項 “grant option“;

grant?select?on?testdb.*?to?dba@localhost?with?grant?option;

這個特性一般用不到。如果想要了解更多關于授權給其他用戶的權限,可參照權限控制問題。實際中,數據庫權限最好由 DBA 來統一管理。

?

六、錯誤處理

遇到 SELECT command denied to user '用戶名'@'主機名' for table '表名' 這種錯誤

解決方法是需要把后面的表名授權,即是要你授權核心數據庫也要。

我遇到的是SELECT command denied to user 'my'@'%' for table 'proc',是調用存儲過程的時候出現,原以為只要把指定的數據庫授權就行了,什么存儲過程、函數等都不用再管了,誰知道也要把數據庫mysql的proc表授權

?

七、數據庫授權表

mysql授權表共有5個:user、db、host、tables_priv和columns_priv。

授權表的內容有如下用途:

1)user表

user表列出可以連接服務器的用戶及其口令,并且它指定他們有哪種全局(超級用戶)權限。在user表啟用的任何權限均是全局權限,并適用于所有數據庫。例如,如果你啟用了DELETE權限,在這里列出的用戶可以從任何表中刪除記錄,所以在你這樣做之前要認真考慮。

?

2)db表

db表列出數據庫,而用戶有權限訪問它們。在這里指定的權限適用于一個數據庫中的所有表。

?

3)host表

host表與db表結合使用在一個較好層次上控制特定主機對數據庫的訪問權限,這可能比單獨使用db好些。這個表不受GRANT和REVOKE語句的影響,所以,你可能發覺你根本不是用它。

?

4)tables_priv表

tables_priv表指定表級權限,在這里指定的一個權限適用于一個表的所有列。

?

5)columns_priv表

columns_priv表指定列級權限。這里指定的權限適用于一個表的特定列。

?

?

?

?

參考資料

1.?mysql數據庫有幾張授權表

2.?mysql 函數執行權限

3.?mysql 用戶及權限管理 小結

轉載于:https://my.oschina.net/u/3314358/blog/1865648

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451096.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451096.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451096.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小米360口水戰背后:國產手機第三態誕生

摘要:按照雙方公布的配置信息,小米手機青春版為1.2G H z雙核處理器,華為閃耀為1G H z雙核。種向市場投入海量推廣資金,以換取產品上的高利潤,代表為步步高、金立、O PPO。南都制圖:宋小偉 互聯網入侵通信業…

java bean轉map

一.使用Apache提供的BeanUtils public Map test(Object person) {Map map BeanUtils.describe(person);return map; } 二.使用Jackson public Map test(Object person) {ObjectMapper objectMapper new ObjectMapper(); Map map objectMapper.convertValue(person, HashM…

java中ftp文件上傳和中文亂碼解決

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 前幾天 有個需求就是上傳文件的時候,本地存一份,其他服務器也保存一份,于是就研究了一下&#xff0c…

線段與多邊形的關系

轉自周見智 介紹 最近項目中要用到有關幾何(Geometry)方面的知識,程序需要判斷給定的一條線段(Segment)與指定多邊形(Polygon)的位置關系。這種關系分為三種:多邊形包含線段、多邊形…

shell的交互式和非交互式登錄

工作中經常碰見環境變量加載問題,歸根結底就是配置文件的加載問題。 一般會有四種模式:交互式登陸、非交互式登陸、交互式非登陸、非交互非登陸。 交互式和非交互式對環境變量的加載: -------------------------------------------------- | …

運營商取消話費余額有效期后改收閑置費

摘要:截至昨天,北京的CDMA預付費手機用戶均收到了中國電信北京公司的短信通知。5月初,中國聯通正式取消有月租或有月最低消費的預付費產品的話費有效期。而邱寶昌認為,防止倒號和號碼資源浪費本應是運營商的責任,現在運…

內存柵欄的影響

當我們在使用jvm鎖的時候,一方面是為了減少線程的競爭,另外還有一方面就是保證共享數據的及時可見性。為了保證線程共享變量的可見性,會使用到內存柵欄,jvm設置內存柵欄,并將共享數據及時刷新到主存中保證其他線程可以…

hibernate連接數據庫配置

hibernate連接數據庫配置 1.連接mySql&#xff0c;文件配置如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://…

解決,文件上傳到 ftp 服務器,中文出現亂碼問題

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上傳到 ftp 服務器&#xff0c;中文出現亂碼解決&#xff0c;之前文件名 “ 網關信息 ” 始終不能正確顯示&#xff0c;嘗試了多種編碼…

常用負載均衡策略分析

背景 一般生產環境單機所能承受的QPS壓力為2w左右&#xff0c;過大的壓力會導致服務器爆炸。即便是單機能夠撐住2w QPS&#xff0c;一般也不會這么做&#xff0c;生產環境一般會預留50%的冗余能力&#xff0c;防止QPS因為某個熱門的活動而爆炸。當QPS超過單機所能承受的壓力時&…

cpu id 系列號代碼

1。先看看是那家公司的cpu,有intel的&#xff0c;還有amd的和 cyrix的。全世界只有三家&#xff0c;實際就是兩家。 先讓EAX0&#xff0c;再調用CPUID Inel的CPU將返回: EBX:756E6547H Genu EDX:49656E69H ineI ECX:6C65746EH ntel EBX,EDX,E…

解決- SecureCRT上運行 linux vim 命令中文出現亂碼

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 亂碼如圖&#xff1a; 這個問題是CRT的編碼設置造成的&#xff0c;改一下設置就可以了&#xff1a; 1. 在當前連接上右鍵選擇最后一個 2…

開發一個自己的 CSS 框架(五)

這一期我們繼續完成我們的網格布局 容器類 通過一個 # 占位符&#xff0c;來減少代碼輸出量。 #containerpadding-right: 15pxpadding-left: 15pxmargin-right: automargin-left: auto.containerwidth: 100%extend #containermedia screen and (min-width: $media-size-1)max-w…

mysql event 簡單demo

功能&#xff1a;每3秒刪除b表數據&#xff0c;查詢a表中的5條數據并插入b表。 /* 查看mysql事件狀態 */ show variables like %event_scheduler%;/* 開啟mysql事件 */ SET GLOBAL event_scheduler ON;/* 測試a表*/ CREATE TABLE test_a (id int(11) NOT NULL AUTO_INCREMENT…

linux中操作數據庫的使用命令記錄

1&#xff0c;mysql 查看數據庫表編碼格式&#xff1a; show create table widget; 修改數據庫表編碼格式&#xff1a; alter table widget default character set utf8; 修改數據庫表中某字段的編碼格式&#xff1a; alter table widget change widget_name widget_name varc…

ICC Scenario Definition

現代先進工藝下的后端設計都是在 MCMM 情況下設計的&#xff0c;所謂 MCMM 就是 muti-corner muti-mode&#xff0c;用于芯片的不同工作模式和工作條件。 后端設計過程中&#xff0c;需要保證芯片在所有工作模式和工作條件下都能正常工作&#xff0c;工作模式一般只有幾種&…

別瞎忙活:創業公司的6條時間管理策略

導讀&#xff1a;無數創業者為自己的公司努力拼搏&#xff0c;把一切時間投入到公司建設中。這種724小時的熱情對于創業者本人是必須的&#xff0c;然而對于創業中的團隊來說&#xff0c;更重要的是學會管理時間。倦怠是錯誤時間管理帶來的顯著危害&#xff0c;但最大的危險是因…

JDK8下載|JDK1.8下載可選擇window版和linux版

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 摘要&#xff1a;Oracle甲骨文公司Oracle公司如期發布了Java 8正式版!現在你就可以下載Java 8正式版了&#xff0c;同期發布的還有JDK 8。…

持續集成與持續部署寶典Part 2:創建持續集成流水線

2019獨角獸企業重金招聘Python工程師標準>>> 在本系列文章中&#xff0c;我們將探討在容器時代如何在基于Docker的環境中創建連貫的工作流程和流水線來簡化大規模項目的部署。另外&#xff0c;我們還將詳細介紹如何利用Docker和Rancher自動化處理這些工作流。 在上文…

64 裝飾器函數: 母版 csrf防御機制 cookie

主要內容: 1: 裝飾器函數 a: 原理: 在不改變原函數的代碼和調用方式的情況下, 給函數動態的添加功能 b: 實例: 裝飾器的原理: def yue(tools):print(使用%s約一約 % tools) def wrapper(fn):def inner(*args, **kwargs):print(先準備好錢)fn(*args, **kwargs)return inner yue …