日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mysql 用戶權限管理實現

瀏覽:186日期:2023-10-02 14:18:23
1. MySQL 權限介紹

mysql中存在4個控制權限的表,分別為user表,db表,tables_priv表,columns_priv表,我當前的版本mysql 5.7.22 。

mysql權限表的驗證過程為:

先從user表中的Host,User,Password這3個字段中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗證。 通過身份認證后,進行權限分配,按照user,db,tables_priv,columns_priv的順序進行驗證。即先檢查全局權限表user,如果user中對應的權限為Y,則此用戶對所有數據庫的權限都為Y,將不再檢查db, tables_priv,columns_priv;如果為N,則到db表中檢查此用戶對應的具體數據庫,并得到db中為Y的權限;如果db中為N,則檢查tables_priv中此數據庫對應的具體表,取得表中的權限Y,以此類推。1.1 MySQL 權限級別

分為:全局性的管理權限: 作用于整個MySQL實例級別數據庫級別的權限: 作用于某個指定的數據庫上或者所有的數據庫上數據庫對象級別的權限:作用于指定的數據庫對象上(表、視圖等)或者所有的數據庫對象上

權限存儲在mysql庫的user, db, tables_priv, columns_priv, and procs_priv這幾個系統表中,待MySQL實例啟動后就加載到內存中

查看mysql 有哪些用戶:

mysql> select user,host from mysql.user;

來看root 用戶在權限系統表中的數據:

mysql> use mysql;mysql> select * from user where user=’root’ and host=’localhost’G; #所有權限都是Y ,就是什么權限都有mysql> select * from db where user=’root’ and host=’localhost’G; # 沒有此條記錄mysql> select * from tables_priv where user=’root’ and host=’localhost’; # 沒有此條記錄 mysql> select * from columns_priv where user=’root’ and host=’localhost’; # 沒有此條記錄 mysql> select * from procs_priv where user=’root’ and host=’localhost’; # 沒有此條記錄

上面說過:權限的驗證過程

查看root@’localhost’用戶的權限

mysql> show grants for root@localhost;+---------------------------------------------------------------------+| Grants for root@localhost |+---------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO ’root’@’localhost’ WITH GRANT OPTION || GRANT PROXY ON ’’@’’ TO ’root’@’localhost’ WITH GRANT OPTION|+---------------------------------------------------------------------+2 rows in set (0.00 sec)2. MySQL 權限詳解

All/All Privileges權限代表全局或者全數據庫對象級別的所有權限

Alter權限代表允許修改表結構的權限,但必須要求有create和insert權限配合。如果是rename表名,則要求有alter和drop原表, create和insert新表的權限

Alter routine權限代表允許修改或者刪除存儲過程、函數的權限

Create權限代表允許創建新的數據庫和表的權限

Create routine權限代表允許創建存儲過程、函數的權限

Create tablespace權限代表允許創建、修改、刪除表空間和日志組的權限

Create temporary tables權限代表允許創建臨時表的權限

Create user權限代表允許創建、修改、刪除、重命名user的權限

Create view權限代表允許創建視圖的權限

Delete權限代表允許刪除行數據的權限

Drop權限代表允許刪除數據庫、表、視圖的權限,包括truncate table命令

Event權限代表允許查詢,創建,修改,刪除MySQL事件

Execute權限代表允許執行存儲過程和函數的權限

File權限代表允許在MySQL可以訪問的目錄進行讀寫磁盤文件操作,可使用的命令包括load data infile,select … into outfile,load file()函數

Grant option權限代表是否允許此用戶授權或者收回給其他用戶你給予的權限,重新付給管理員的時候需要加上這個權限

Index權限代表是否允許創建和刪除索引

Insert權限代表是否允許在表里插入數據,同時在執行analyze table,optimize table,repair table語句的時候也需要insert權限

Lock權限代表允許對擁有select權限的表進行鎖定,以防止其他鏈接對此表的讀或寫

Process權限代表允許查看MySQL中的進程信息,比如執行show processlist, mysqladmin processlist, show engine等命令

Reference權限是在5.7.6版本之后引入,代表是否允許創建外鍵

Reload權限代表允許執行flush命令,指明重新加載權限表到系統內存中,refresh命令代表關閉和重新開啟日志文件并刷新所有的表

Replication client權限代表允許執行show master status,show slave status,show binary logs命令

Replication slave權限代表允許slave主機通過此用戶連接master以便建立主從復制關系

Select權限代表允許從表中查看數據,某些不查詢表數據的select執行則不需要此權限,如Select 1+1, Select PI()+2;而且select權限在執行update/delete語句中含有where條件的情況下也是需要的

Show databases權限代表通過執行show databases命令查看所有的數據庫名

Show view權限代表通過執行show create view命令查看視圖創建的語句

Shutdown權限代表允許關閉數據庫實例,執行語句包括mysqladmin shutdown

Super權限代表允許執行一系列數據庫管理命令,包括kill強制關閉某個連接命令, change master to創建復制關系命令,以及create/alter/drop server等命令

Trigger權限代表允許創建,刪除,執行,顯示觸發器的權限

Update權限代表允許修改表中的數據的權限

Usage權限是創建一個用戶之后的默認權限,其本身代表連接登錄權限

2.1 系統權限表

User表:存放用戶賬戶信息以及全局級別(所有數據庫)權限,決定了來自哪些主機的哪些用戶可以訪問數據庫實例,如果有全局權限則意味著對所有數據庫都有此權限Db表:存放數據庫級別的權限,決定了來自哪些主機的哪些用戶可以訪問此數據庫Tables_priv表:存放表級別的權限,決定了來自哪些主機的哪些用戶可以訪問數據庫的這個表Columns_priv表:存放列級別的權限,決定了來自哪些主機的哪些用戶可以訪問數據庫表的這個字段Procs_priv表:存放存儲過程和函數級別的權限

最重要的還是user表

2.1.1 User和 db 權限表的結構

表名 user db 范圍列 Host Host User Db User 權限列 Select_priv Select_priv Insert_priv Insert_priv Update_priv Update_priv Delete_priv Delete_priv Index_priv Index_priv Alter_priv Alter_priv Create_priv Create_priv Drop_priv Drop_priv Grant_priv Grant_priv Create_view_priv Create_view_priv Show_view_priv Show_view_priv Create_routine_priv Create_routine_priv Alter_routine_priv Alter_routine_priv Execute_priv Execute_priv Trigger_priv Trigger_priv Event_priv Event_priv Create_tmp_table_priv Create_tmp_table_priv Lock_tables_priv Lock_tables_priv References_priv References_priv Reload_priv Shutdown_priv Process_priv File_priv Show_db_priv Super_priv Repl_slave_priv Repl_client_priv Create_user_priv Create_tablespace_priv 安全專欄 ssl_type ssl_cipher x509_issuer x509_subject plugin authentication_string password_expired password_last_changed password_lifetime account_locked 資源控制列 max_questions max_updates max_connections max_user_connections

User權限表結構中的特殊字段:

Plugin,authentication_string字段存放用戶認證信息 Password_expired設置成’Y’則表明允許DBA將此用戶的密碼設置成過期而且過期后要求用戶的使用者重置密碼(alter user/set password重置密碼) Password_last_changed作為一個時間戳字段代表密碼上次修改時間,執行create user/alter user/set password/grant等命令創建用戶或修改用戶密碼時此數值自動更新 Password_lifetime代表從password_last_changed時間開始此密碼過期的天數 Account_locked代表此用戶被鎖住,無法使用

在mysql 5.7 以前在user表有password 這個字段。

2.1.2 Tables_priv和columns_priv權限表結構

表名 tables_priv columns_priv 范圍列 Host Host Db Db User User Table_name Table_name Column_name 權限列 Table_priv Column_priv Column_priv 其他列 Timestamp Timestamp Grantor

Tables_priv和columns_priv權限值

Table Name Column Name Possible Set Elements tables_priv Table_priv ’Select’, ’Insert’, ’Update’, ’Delete’, ’Create’, ’Drop’, ’Grant’, ’References’, ’Index’, ’Alter’, ’Create View’, ’Show view’, ’Trigger’ tables_priv Column_priv ’Select’, ’Insert’, ’Update’, ’References’ columns_priv Column_priv ’Select’, ’Insert’, ’Update’, ’References’ procs_priv Proc_priv ’Execute’, ’Alter Routine’, ’Grant’

2.1.3 procs_priv權限表結構

Table Name procs_priv Scope columns Host Db User Routine_name Routine_type Privilege columns Proc_priv Other columns Timestamp Grantor

Routine_type是枚舉類型,代表是存儲過程還是函數 Timestamp和grantor兩個字段暫時沒用

系統權限表字段長度限制表

Column Name Maximum Permitted Characters Host, Proxied_host 60 User, Proxied_user 32 Password 41 Db 64 Table_name 64 Column_name 64 Routine_name 64

權限認證中的大小寫敏感問題

字段user,password,authencation_string,db,table_name大小寫敏感 字段host,column_name,routine_name大小寫不敏感2.2 用戶權限信息管理

2.2.1 查看用戶權限信息

查看MYSQL有哪些用戶

mysql> select user,host from mysql.user;

查看已經授權給用戶的權限信息例如root

mysql> show grants for root@’localhost’;

查看用戶的其他非授權信息

mysql> show create user root@’localhost’;

Mysql 用戶權限管理實現

2.2.2 用戶組成

MySQL的授權用戶由兩部分組成:用戶名和登錄主機名

表達用戶的語法為’user_name’@’host_name’ 單引號不是必須,但如果其中包含特殊字符則是必須的 ”@‘localhost’代表匿名登錄的用戶 Host_name可以使主機名或者ipv4/ipv6的地址。 Localhost代表本機, 127.0.0.1代表ipv4本機地址, ::1代表ipv6的本機地址 Host_name字段允許使用%和_兩個匹配字符,比如’%’代表所有主機, ’%.mysql.com’代表

來自mysql.com這個域名下的所有主機, ‘192.168.1.%’代表所有來自192.168.1網段的主機

User值 Host 值 允許的連接 ’fred’ ’h1.example.net’ fred,連接 h1.example.net ’’ ’h1.example.net’ 任何用戶,從中連接 h1.example.net ’fred’ ’%’ fred,從任何主機連接 ’’ ’%’ 任何用戶,從任何主機連接 ’fred’ ’%.example.net’ fred,從example.net域中的任何主機連接 ’fred’ ’x.example.%’ fred,從連接 x.example.net,x.example.com, x.example.edu,等; 這可能沒用 ’fred’ ’198.51.100.177’ fred,從主機與IP地址連接 198.51.100.177 ’fred’ ’198.51.100.%’ fred,從198.51.100C類子網中的任何主機連接 ’fred’ ’198.51.100.0/255.255.255.0’ 與前面的示例相同

2.2.3 修改用戶權限

執行Grant,revoke,set password,rename user命令修改權限之后, MySQL會自動將修改后的權限信息同步加載到系統內存中

如果執行insert/update/delete操作上述的系統權限表之后,則必須再執行刷新權限命令才能同步到系統內存中,刷新權限命令包括:flush privileges/mysqladmin flush-privileges / mysqladmin reload

如果是修改tables和columns級別的權限,則客戶端的下次操作新權限就會生效

如果是修改database級別的權限,則新權限在客戶端執行use database命令后生效

如果是修改global級別的權限,則需要重新創建連接新權限才能生效

如果是修改global級別的權限,則需要重新創建連接新權限才能生效 (例如修改密碼)

2.2.4 創建 mysql 用戶

有兩種方式創建MySQL授權用戶

執行create user/grant命令(推薦方式) 通過insert語句直接操作MySQL系統權限表

# 創建finley 這只是創建用戶并沒有權限mysql> CREATE USER ’finley’@’localhost’ IDENTIFIED BY ’some_pass’;# 把finley 變成管理員用戶mysql> GRANT ALL PRIVILEGES ON *.* TO ’finley’@’localhost’ WITHGRANT OPTION;#創建用戶并賦予RELOAD,PROCESS權限 ,在所有的庫和表上mysql> GRANT RELOAD,PROCESS ON *.* TO ’admin’@’localhost’ identified by ’123456’; # 創建keme用戶,在test庫,temp表, 上的id列只有select 權限mysql> grant select(id) on test.temp to keme@’localhost’ identified by ’123456’;

2.2.4 回收 mysql 權限

通過revoke命令收回用戶權限,回收的時候看一下這個用戶有哪些權限然后回收我對admin 用戶做測試

mysql> show grants for admin@’localhost’;mysql> select user,host from mysql.user;mysql> revoke PROCESS ON *.* FROM admin@’localhost’;

Mysql 用戶權限管理實現

2.2.5 刪除 mysql 用戶

通過執行drop user命令刪除MySQL用戶還可以通過系統權限表刪除(不建議)

mysql> drop user admin@’localhost’;

2.2.6 設置MySQL用戶資源限制

通過設置全局變量max_user_connections可以限制所有用戶在同一時間連接MySQL實例的數量,但此參數無法對每個用戶區別對待,所以MySQL提供了對每個用戶的資源限制管理

MAX_QUERIES_PER_HOUR:一個用戶在一個小時內可以執行查詢的次數(基本包含所有語句)

MAX_UPDATES_PER_HOUR:一個用戶在一個小時內可以執行修改的次數(僅包含修改數據庫或表的語句)

MAX_CONNECTIONS_PER_HOUR:一個用戶在一個小時內可以連接MySQL的時間

MAX_USER_CONNECTIONS:一個用戶可以在同一時間連接MySQL實例的數量

從5.0.3版本開始,對用戶‘user’@‘%.example.com’的資源限制是指所有通過example.com域名主機連接user用戶的連接,而不是分別指從host1.example.com和host2.example.com主機過來的連接

2.2.7 修改 mysql 用戶密碼

修改用戶密碼的方式包括:

mysql> ALTER USER ’jeffrey’@’localhost’ IDENTIFIED BY ’mypass’;mysql> SET PASSWORD FOR ’jeffrey’@’localhost’ = PASSWORD(’mypass’);mysql> GRANT USAGE ON *.* TO ’jeffrey’@’localhost’ IDENTIFIED BY ’mypass’;shell> mysqladmin -u user_name -h host_name password 'new_password'

創建用戶時指定密碼

mysql> CREATE USER ’jeffrey’@’localhost’ IDENTIFIED BY ’mypass’;

修改當前會話本身用戶密碼的方式包括:

mysql> ALTER USER USER() IDENTIFIED BY ’mypass’;mysql> SET PASSWORD = PASSWORD(’mypass’);

2.2.8 設置MySQL用戶密碼過期策略

設置系統參數default_password_lifetime作用于所有的用戶賬戶

default_password_lifetime=180 設置180天過期 default_password_lifetime=0 設置密碼不過期

如果為每個用戶設置了密碼過期策略,則會覆蓋上述系統參數

ALTER USER ’jeffrey’@’localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;ALTER USER ’jeffrey’@’localhost’ PASSWORD EXPIRE NEVER; 密碼不過期ALTER USER ’jeffrey’@’localhost’ PASSWORD EXPIRE DEFAULT; 默認過期策略

手動強制某個用戶密碼過期

ALTER USER ’jeffrey’@’localhost’ PASSWORD EXPIRE;

2.2.9 mysql 用戶 lock

通過執行create user/alter user命令中帶account lock/unlock子句設置用戶的lock狀態

Create user語句默認的用戶是unlock狀態

# 創建的時候給用戶鎖定mysql> create user abc2@localhost identified by ’mysql’ account lock;

Alter user語句默認不會修改用戶的lock/unlock狀態

# 修改用戶為unlockmysql> alter user abc2@’localhost’ account unlock;

當客戶端使用lock狀態的用戶登錄MySQL時,會收到如此報錯Access denied for user ‘user_name’@’host_name’.Account is locked.

官方文檔:https://dev.mysql.com/doc/refman/5.7/en/privilege-system.html

到此這篇關于Mysql 用戶權限管理實現的文章就介紹到這了,更多相關Mysql 用戶權限管理內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
韩国三级一区| 日韩午夜精品| 久久亚洲国产| 亚洲高清成人| 美女日韩在线中文字幕| 一区二区三区四区精品视频| 亚洲日本久久| 欧美精品第一区| 国际精品欧美精品| 久久激情网站| 中文字幕中文字幕精品| 日韩黄色在线观看| 久久永久免费| 婷婷久久一区| 欧美一区精品| av免费不卡国产观看| 性欧美xxxx免费岛国不卡电影| 美女网站一区| 日韩1区2区日韩1区2区| 国产精品不卡| 亚洲在线免费| 精品精品国产三级a∨在线| 99久久99久久精品国产片果冰| 久久一二三区| 国产不卡人人| 日本一区二区三区视频在线看| 精品伊人久久久| 亚洲区欧美区| 精品一区二区三区四区五区| 99成人在线| 水蜜桃久久夜色精品一区| 美国三级日本三级久久99| 免费亚洲婷婷| 亚洲午夜久久| 亚洲国产不卡| 日产精品一区二区| 日韩黄色在线观看| 日韩亚洲精品在线| 91综合视频| 国产精品久久乐| 最新国产精品视频| 激情综合自拍| 中文字幕在线视频网站| 中文在线日韩| 午夜精品影院| 国产一区二区三区四区五区| 国产精品普通话对白| 久久精品二区亚洲w码| 午夜亚洲福利| 亚洲精品进入| 免费不卡在线观看| 欧美高清一区| 激情久久久久久| 天堂网av成人| 日本不良网站在线观看| 精品资源在线| 激情国产在线| 日韩欧美精品| 久久久久久美女精品| 黄色aa久久| 亚洲高清毛片| 99成人在线| 欧美午夜不卡| 日韩视频在线一区二区三区| 欧美日韩国产传媒| 丝袜美腿亚洲色图| 亚洲日产国产精品| 国产午夜一区| 卡一精品卡二卡三网站乱码| 精品国产午夜| 精品成人免费一区二区在线播放| 四虎884aa成人精品最新| 欧美日韩在线观看视频小说| 久久九九国产| 丝袜亚洲另类欧美| 久久国产乱子精品免费女| 国产精品久久久久久模特| 国产精品magnet| 日本一区二区高清不卡| 欧美日韩精品一区二区视频| 亚洲精品少妇| 狠狠久久伊人| 黄色免费成人| 国产精品一区二区av日韩在线| 欧美激情在线精品一区二区三区| 中文字幕人成乱码在线观看 | 中文视频一区| 日本va欧美va精品| 国产成人精品一区二区三区视频| 欧美黑人巨大videos精品| 国产中文一区| 国产精品自在| 欧美精品激情| 国产日韩欧美一区二区三区| 91精品国产成人观看| 日韩欧美中文字幕电影| 国产aa精品| 视频一区日韩精品| 亚洲国产专区校园欧美| 欧美另类中文字幕| 美女精品在线观看| 免费在线小视频| 欧美日本三区| 樱桃成人精品视频在线播放| 日韩精品久久久久久久软件91| 在线天堂中文资源最新版| 日韩av中文字幕一区二区| 欧美精选一区二区三区| 正在播放日韩精品| 美女高潮久久久| 日本国产亚洲| 六月丁香综合| 激情自拍一区| 欧美午夜精品一区二区三区电影| 久久久久伊人| 国产激情综合| 美女性感视频久久| 国产视频一区二区在线播放| 亚洲天堂免费| 午夜国产精品视频免费体验区| av中文字幕在线观看第一页| 美女视频黄免费的久久| 欧美精品国产一区| 91免费精品国偷自产在线在线| 亚洲免费网址| 免费看黄色91| 日本一区二区三区中文字幕| 免费人成网站在线观看欧美高清| 在线亚洲免费| 中文字幕一区二区三区日韩精品 | 久久亚洲精品中文字幕蜜潮电影| 国产精品.xx视频.xxtv| 国产精品成人3p一区二区三区| 国产精品夜夜夜| 免费在线观看一区| 福利片在线一区二区| 免费看av不卡| 欧美日韩视频| 欧美一区二区三区免费看| 国产精品高潮呻吟久久久久| 久久免费福利| 国产精品99免费看| 亚洲一区不卡| 国产精区一区二区| 亚洲91久久| 日本午夜精品一区二区三区电影 | 欧美一区二区性| 日韩一区二区三区免费视频| 国产精品15p| 婷婷激情图片久久| 国产精品亚洲欧美一级在线| 久久精品亚洲人成影院 | 日韩毛片一区| 国产白浆在线免费观看| 免费精品视频| 久久99精品久久久久久园产越南 | 色老板在线视频一区二区| 天使萌一区二区三区免费观看| 青青草91久久久久久久久| 五月激情久久| 国产日韩在线观看视频| av资源新版天堂在线| 日韩福利视频导航| 欧美特黄一级大片| 精品视频在线你懂得| 久久国产精品99国产| 日韩在线免费| 免费视频一区二区三区在线观看 | 美女免费视频一区| 日韩精品一页| 影音国产精品| 99久久亚洲精品| 国语精品一区| 亚洲欧洲av| 欧美日韩精品一本二本三本| 日韩国产一区二区| 久久不卡日韩美女| 日韩一区精品| 婷婷精品在线| 综合国产在线| 亚洲综合日本| 欧美在线资源| 红桃视频国产一区| 在线一区欧美| 国产欧美一区| 国产乱人伦精品一区| 人人爱人人干婷婷丁香亚洲| 一区二区亚洲视频| 午夜电影亚洲| 极品日韩av| 视频一区视频二区中文字幕| 日韩高清成人在线| 国产亚洲一卡2卡3卡4卡新区| 日韩精品视频一区二区三区| 日本一区二区三区中文字幕| 亚洲91在线| 国产精品久久久久久模特| 日本久久一区| 免费看一区二区三区| sm久久捆绑调教精品一区|