資料庫權限的意義:
為了確保資料庫中的業務資料不會被非授權的使用者非法竊取,需要對資料庫的存取者進行各種限制,而資料庫安全性控制措施主要有這三種,第一種使用者身分鑑別,手段可以是口令,磁卡,指紋等技術,只有擁有合法身分的人才可以進入資料庫。第二種存取權限控制,不同角色,對資料庫的存取權限是不同的,必須為每個角色設定其存取的資料庫物件、權限。第三種制定資料庫管理的管理制度,制度最終約束人的行為,透過制定相應的規章制度,可以保證在適當的時間、由適當的人對資料進行合適的操作。
mysql對使用者權限的檢查分為兩個階段
1、是否可以與mysql伺服器建立連結
2、是否具有某些操作權限(如:select update 等)
一、與mysql伺服器建立連結
mysql伺服器如何校驗使用者是否可以建立連結
1、驗證你從哪裡來host
2、你是誰user
3、密碼password
連結mysql的方式:C:\Users\PC003>mysql -h192.168.6.223 -uroot -pjalja
參數解釋:-h:從何處要建立連結
-u: user
-p:密碼
mysql> select user,host,password from user; +------+-----------+-------------------------------------------+ | user | host | password | +------+-----------+-------------------------------------------+ | root | localhost | *CFAFE434FB0E5D64538901E668E1EACD077A54DF | | root | % | *CFAFE434FB0E5D64538901E668E1EACD077A54DF | +------+-----------+-------------------------------------------+
host=localhost表示可以使用預設主機進行連結(C:\Users\PC003>mysql -uroot -pjalja,C:\Users\PC003>mysql -uroot -pjalja,C:\Users\PC003> -hlocalhost -uroot -pjalja,C:\Users\PC003>mysql -h127.0.0.1 -uroot -pjalja)
host=%表示該伺服器可以與它所在一個區域網路(公網)內的所有主機建立鏈接,該方式在生產環境中不安全
host=192.168.6.224表示該伺服器只能與192.168.6.224主機建立鏈接 C:\Users\PC003>mysql -h192. 168.6.223 -uroot -pjalja
如何修改host:
mysql> update user set host='192.168.6.223' where user ='root'
mysql> flush privileges;刷新權限(因為修改後資料是在記憶體中每次操作用戶權限相關操作都要刷新)
修改密碼:
mysql> update user set password=password('111111') where user='root'; mysql> flush privileges;
二、mysql如何進行權限檢查
mysql中有一個mysql庫該庫下user表檢查該用戶是否存在,db表檢查該用戶對哪些庫有哪些操作權限,tables_priv表檢查該用戶對那些表有哪些操作權限。
建立使用者並授權:
grant [權限1,權限2] on *.* to user@'host' identfied by 'password';
常用權限:all,create,drop,insert,delete,update,select
#例如:授予ls使用者所有庫所有表的所有權限並且可以從該區域網路該網段任何主機登陸。
mysql> grant all on *.* to 'ls'@'192.168.6.%' identified by '111111';
使用該使用者登陸:C:\Users\PC003>mysql -h192.168.6.223 -uls -p111111;
查看ls使用者特定有哪些權限:
mysql> select * from mysql.user where user='ls' \G; *************************** 1. row *************************** Host: 192.168.6.% User: ls Password: *FD571203974BA9AFE270FE62151AE967ECA5E0AA Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y Process_priv: Y File_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Show_db_priv: Y Super_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Execute_priv: Y Repl_slave_priv: Y Repl_client_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: Y Create_user_priv: Y Event_priv: Y Trigger_priv: Y Create_tablespace_priv: Y ssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0 max_updates: 0 max_connections: 0 max_user_connections: 0 plugin: authentication_string: NULL
權限回收:收回ls的所有權限
mysql> revoke all on *.* from ls@'192.168.6.%';
授權某個函式庫的權限:
mysql> grant all on blog.* to ls@'192.168.6.%';授予ls使用者擁有blog資料庫的所有權限。
這樣ls用戶在user表中沒有權限,這時將進行db級別的權限檢查
mysql> select * from mysql.db where user='ls' \G;*************************** 1. row *************************** Host: 192.168.6.% Db: blog User: ls Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: Y Execute_priv: Y Event_priv: Y Trigger_priv: Y
回收ls用戶所有權限並賦予某各表權限:授予ls用戶blog庫中user表crud權限
mysql> revoke all on *.* from ls@'192.168.6.%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> grant insert,update,select,delete on blog.user to ls@'192.168.6.%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
這樣ls使用者在db層級中沒有權限,這時將進行tables_priv等級的權限檢查:
mysql> select * from mysql.tables_priv where user='ls' \G;*************************** 1. row *************************** Host: 192.168.6.% Db: blog User: ls Table_name: user Grantor: root@localhost Timestamp: 2017-02-09 14:35:38 Table_priv: Select,Insert,Update,DeleteColumn_priv:1 row in set (0.00 sec)
#mysql權限控制流程:
注意:mysql的權限檢查可以精確到某列資料。
以上是關於mysql學習之權限管理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器