背景
創新互聯公司2013年開創至今,是專業互聯網技術服務公司,擁有項目成都網站設計、成都網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元汾西做網站,已為上家服務,為汾西各地企業和個人服務,聯系電話:13518219792
在了解動態權限之前,我們先回顧下 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里面有很多權限,不同權限可以使用不同功能,今天就教大家怎么獲取Mysql的root權限,也就是最高權限,可以做任何事情。
1.首先使用一個沒有權限的賬號鏈接mysql,成功之后執行:show databases;這時會發現沒有權限的用戶只能看到一個數據庫,mysql和test等數據庫是看不到的;
2.如果已經安裝了phpmyadmin,打開127.0.0.1/phpmyadmin,在菜單欄找到用戶,然后找到沒有權限的用戶,點擊編輯權限;
3.跳轉到設置頁面,找到全局權限,在全選checkbox打勾,點擊右下角的執行,完成后該用戶就獲得了mysql數據庫的所有權限;
4.再次用該賬號再次鏈接mysql,鏈接成功后執行:show databases;你會發現所有數據庫都會顯示出來,而且使用該賬號可以進行任意編輯;
6
5.也可以直接在cmd窗口命令行設置,設置權限的命令為:
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'localhost'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
PS:用戶名部分根據自己的實際情況進行更改。
用戶管理
mysqluse mysql;
查看
mysql select host,user,password from user ;
創建
mysql create user zx_root IDENTIFIED by 'xxxxx'; //identified by 會將純文本密碼加密作為散列值存儲
修改
mysqlrename user feng to newuser;//mysql 5之后可以使用,之前需要使用update 更新user表
刪除
mysqldrop user newuser; //mysql5之前刪除用戶時必須先使用revoke 刪除用戶權限,然后刪除用戶,mysql5之后drop 命令可以刪除用戶的同時刪除用戶的相關權限
更改密碼
mysql set password for zx_root =password('xxxxxx');
mysql update mysql.user set password=password('xxxx') where user='otheruser'
查看用戶權限
mysql show grants for zx_root;
賦予權限
mysql grant select on dmc_db.* to zx_root;
回收權限
mysql revoke select on dmc_db.* from zx_root; //如果權限不存在會報錯
網站題目:mysql怎么做權限 mysql 設置權限
分享URL:http://vcdvsql.cn/article38/doisesp.html
成都網站建設公司_創新互聯,為您提供網站維護、、面包屑導航、外貿建站、網站設計、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯