本文目錄一覽:
mysql 權限設置
背景
在了解動態權限之前,我們先回顧下 MySQL 的權限列表。
權限列表大體分為服務級別和表級別,列級別以及大而廣的角色(也是MySQL 8.0 新增)存儲程序等權限。我們看到有一個特殊的 SUPER 權限,可以做好多個操作。比如 SET 變量,在從機重新指定相關主機信息以及清理二進制日誌等。那這裡可以看到,SUPER 有點太過強大,導致了僅僅想實現子權限變得十分困難,比如用戶只能 SET 變量,其他的都不想要。那麼 MySQL 8.0 之前沒法實現,權限的細分不夠明確,容易讓非法用戶鑽空子。
那麼 MySQL 8.0 把權限細分為靜態權限和動態權限,下面我畫了兩張詳細的區分圖,圖 1 為靜態權限,圖 2 為動態權限。
圖 1- MySQL 靜態權限的權限管理圖
圖 2-動態權限圖
那我們看到其實動態權限就是對 SUPER 權限的細分。 SUPER 權限在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 ‘ytt2@localhost’, 有 SUPER 權限。
mysql show grants for ytt2@’localhost’;+———————————————————————————+| Grants for ytt2@localhost |+———————————————————————————+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+———————————————————————————+1 row in set (0.00 sec)
但是現在我只想這個用戶有 SUPER 的子集,設置變量的權限。那麼單獨給這個用戶賦予兩個能設置系統變量的動態權限,完了把 SUPER 給拿掉。
mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@’localhost’;Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@’localhost’;Query OK, 0 rows affected, 1 warning (0.02 sec)
我們看到這個 WARNINGS 提示 SUPER 已經廢棄了。
mysql show warnings;
+———+——+———————————————-+
| Level | Code | Message |
+———+——+———————————————-+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+———+——+———————————————-+
1 row in set (0.00 sec)`
mysql show grants for ytt2@’localhost’;
+———————————————————————————–+
| Grants for ytt2@localhost |
+———————————————————————————–+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost |
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+———————————————————————————–+
2 rows in set (0.00 sec)
當然圖 2 上還有其它的動態權限,這裡就不做特別說明了。
怎麼給mysql用戶File權限
查看MySQL用戶權限:
show grants for 你的用戶比如:
show grants for root@’localhost’;Grant 用法GRANT USAGE ON *.* TO ‘discuz’@’localhost’ IDENTIFIED BY PASSWORD ‘*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB’;
GRANT ALL PRIVILEGES ON `discuz`.* TO ‘discuz’@’localhost’;
我先按我的理解解釋一下上面兩句的意思
建立一個只可以在本地登陸的 不能操作的用用戶名 discuz 密碼為 ***** 已經加密了的
然後第二句的意思是 ,給這個discuz用戶操作discuz數據庫的所有權限使用GRANTGRANT命令用來建立新用戶,指定用戶口令並增加用戶權限。其格式如下:
mysql GRANT privileges ON what
– TO user [IDENTIFIED BY password]
– [WITH GRANT OPTION];
正如你看到的源碼天空
,在這個命令中有許多待填的內容。讓我們逐一地對它們進行介紹,並最終給出一些例子以讓你對它們的協同工作有一個了解。
privileges是一個用逗號分隔的你想要賦予的MySQL用戶權限的列表。你可以指定的權限可以分為三種類型:
數據庫/數據表/數據列權限: Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的數據庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或數據庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。
全局管理MySQL用戶權限:
file: 在MySQL服務器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
特別的權限:
ALL: 允許做任何事(和root一樣)。
MYSQL提權(LINUX)
select @@global.secure_file_priv;
查看MySQL服務器的文件讀寫權限
如果是NULL就是完全禁止
udf提權用到的so文件(linux)在kali下默認集成,路徑為 /usr/share/sqlmap/udf/mysql/linux/64(32)
或者 searchsploit mysql udf
把對應的內容編譯出來
mysql創建函數命令
原創文章,作者:SMHN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144422.html