利用 GRANT 語句進行授權。
成都創新互聯公司長期為上千余家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為隆安企業提供專業的網站設計制作、網站設計,隆安網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。
具體步驟如下:
1、首先使用一個沒有權限的賬號鏈接mysql,成功之后執行:show databases;這時會發現沒有權限的用戶只能看到一個數據庫,mysql和test等數據庫是看不到的;
2、如果已經安裝了phpmyadmin,打開127.0.0.1/phpmyadmin,在菜單欄找到用戶,然后找到沒有權限的用戶,點擊編輯權限;
3、跳轉到設置頁面,找到全局權限,在全選checkbox打勾,點擊右下角的執行,完成后該用戶就獲得了mysql數據庫的所有權限;
4、再次用該賬號再次鏈接mysql,鏈接成功后執行:show databases;你會發現所有數據庫都會顯示出來,而且使用該賬號可以進行任意編輯;
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;
可以用phpMyAdmin通過輸入語句的方法建立用戶,或者一般的圖形界面的SQL管理程序也可以建立和編輯用戶.
這里只說使用GRANT語句的方法,當然還有直接修改MySQL表的方法,不過很麻煩,用的人不多~
前提是有MySQL root權限
例子:建立另一個超級用戶(所有權限)的方法
GRANT ALL ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION
localhost是主機名,也可以是IP,用于限定這個用戶是否可以遠程連接.還可以用通配符"%",比如%.im286.com,或者202.97.224.%
*.* 中第一個星星是數據庫名(*為所有數據庫),第二個星星是表名(*為前面數據庫下的所有表)
ALL 是指全部語句的操作權限(經常看到虛擬主機等的用戶沒有DROP權限,就是這里做了手腳)
語法大概就是這樣吧.
查看用戶權限
mysql show grants for zx_root;
賦予權限
mysql grant select on dmc_db.* to zx_root;
回收權限
mysql revoke select on dmc_db.* from zx_root; //如果權限不存在會報錯
設置權限時必須給出一下信息
1,要授予的權限
2,被授予訪問權限的數據庫或表
3,用戶名
grant和revoke可以在幾個層次上控制訪問權限
1,整個服務器,使用 grant ALL 和revoke ALL
2,整個數據庫,使用on database.*
3,特點表,使用on database.table
4,特定的列
5,特定的存儲過程
MySQL基礎知識第一期,如何遠程訪問MySQL數據庫設置權限方法總結,討論訪問單個數據庫,全部數據庫,指定用戶訪問,設置訪問密碼,指定訪問主機。
1,設置訪問單個數據庫權限
復制代碼
代碼如下:
mysqlgrant
all
privileges
on
test.*
to
'root'@'%';
說明:設置用戶名為root,密碼為空,可訪問數據庫test
2,設置訪問全部數據庫權限
復制代碼
代碼如下:
mysqlgrant
all
privileges
on
*.*
to
'root'@'%';
說明:設置用戶名為root,密碼為空,可訪問所有數據庫*
3,設置指定用戶名訪問權限
復制代碼
代碼如下:
mysqlgrant
all
privileges
on
*.*
to
'liuhui'@'%';
說明:設置指定用戶名為liuhui,密碼為空,可訪問所有數據庫*
4,設置密碼訪問權限
復制代碼
代碼如下:
mysqlgrant
all
privileges
on
*.*
to
'liuhui'@'%'
IDENTIFIED
BY
'liuhui';
說明:設置指定用戶名為liuhui,密碼為liuhui,可訪問所有數據庫*
5,設置指定可訪問主機權限
復制代碼
代碼如下:
mysqlgrant
all
privileges
on
*.*
to
'liuhui'@'10.2.1.11';
說明:設置指定用戶名為liuhui,可訪問所有數據庫*,只有10.2.1.11這臺機器有權限訪問
還可以設置指定訪問某個數據庫下的某個數據表,請繼續關注MySQL基礎知識系列。
用戶管理
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 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用戶設置一個的權限
標題來源:http://vcdvsql.cn/article24/hecsce.html
成都網站建設公司_創新互聯,為您提供網站設計、網站改版、定制開發、服務器托管、定制網站、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯