背景
創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元南岔做網(wǎng)站,已為上家服務(wù),為南岔各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
在了解動態(tài)權(quán)限之前,我們先回顧下 MySQL 的權(quán)限列表。
權(quán)限列表大體分為服務(wù)級別和表級別,列級別以及大而廣的角色(也是MySQL 8.0 新增)存儲程序等權(quán)限。我們看到有一個特殊的 SUPER 權(quán)限,可以做好多個操作。比如 SET 變量,在從機重新指定相關(guān)主機信息以及清理二進(jìn)制日志等。那這里可以看到,SUPER 有點太過強大,導(dǎo)致了僅僅想實現(xiàn)子權(quán)限變得十分困難,比如用戶只能 SET 變量,其他的都不想要。那么 MySQL 8.0 之前沒法實現(xiàn),權(quán)限的細(xì)分不夠明確,容易讓非法用戶鉆空子。
那么 MySQL 8.0 把權(quán)限細(xì)分為靜態(tài)權(quán)限和動態(tài)權(quán)限,下面我畫了兩張詳細(xì)的區(qū)分圖,圖 1 為靜態(tài)權(quán)限,圖 2 為動態(tài)權(quán)限。
圖 1- MySQL 靜態(tài)權(quán)限的權(quán)限管理圖
圖 2-動態(tài)權(quán)限圖
那我們看到其實動態(tài)權(quán)限就是對 SUPER 權(quán)限的細(xì)分。 SUPER 權(quán)限在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 'ytt2@localhost', 有 SUPER 權(quán)限。
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)
但是現(xiàn)在我只想這個用戶有 SUPER 的子集,設(shè)置變量的權(quán)限。那么單獨給這個用戶賦予兩個能設(shè)置系統(tǒng)變量的動態(tài)權(quán)限,完了把 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 已經(jīng)廢棄了。
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)
當(dāng)然圖 2 上還有其它的動態(tài)權(quán)限,這里就不做特別說明了。
1、創(chuàng)建新用戶
通過root用戶登錄之后創(chuàng)建
grant all privileges on *.* to testuser@localhost identified by "123456" ;//創(chuàng)建新用戶,用戶名為testuser,密碼為123456 ;
grant all privileges on *.* to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,可以在本地訪問mysql
grant all privileges on *.* to testuser@"%" identified by "123456" ; //設(shè)置用戶testuser,可以在遠(yuǎn)程訪問mysql
flush privileges ;//mysql 新設(shè)置用戶或更改密碼后需用flush privileges刷新MySQL的系統(tǒng)權(quán)限相關(guān)表,否則會出現(xiàn)拒絕訪問,還有一種方法,就是重新啟動mysql服務(wù)器,來使新設(shè)置生效
2、設(shè)置用戶訪問數(shù)據(jù)庫權(quán)限
grant all privileges on test_db.* to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,只能訪問數(shù)據(jù)庫test_db,其他數(shù)據(jù)庫均不能訪問 ;
grant all privileges on *.* to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,可以訪問mysql上的所有數(shù)據(jù)庫 ;
grant all privileges on test_db.user_infor to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,只能訪問數(shù)據(jù)庫test_db的表user_infor,數(shù)據(jù)庫中的其他表均不能訪問 ;
3、設(shè)置用戶操作權(quán)限
grant all privileges on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ;//設(shè)置用戶testuser,擁有所有的操作權(quán)限,也就是管理員 ;
grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ;//設(shè)置用戶testuser,只擁有【查詢】操作權(quán)限 ;
grant select,insert on *.* to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,只擁有【查詢\插入】操作權(quán)限 ;
grant select,insert,update,delete on *.* to testuser@localhost identified by "123456" ;//設(shè)置用戶testuser,只擁有【查詢\插入】操作權(quán)限 ;
REVOKE select,insert ON what FROM testuser//取消用戶testuser的【查詢\插入】操作權(quán)限 ;
第一:更改 “mysql” 數(shù)據(jù)庫里的 “user” 表里的 “host” 項,從”localhost”改稱'%'。
或者新加條記錄,“host” 項為要訪問的ip地址,并授權(quán)。重啟mysql服務(wù)。
第二:在系統(tǒng)防火墻添加例外端口:3306,并允許例外。錯誤提示:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
的解決方法: 1。 改表法??赡苁悄愕膸ぬ柌辉试S從遠(yuǎn)程登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項,從"localhost"改稱"%"
mysql -u root -pvmwaremysqluse mysql;mysqlupdate user set host = '%' where user = 'root';mysqlselect host, user from user; 2. 授權(quán)法。例如,你想myuser使用mypassword從任何主機連接到mysql服務(wù)器的話。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務(wù)器,并使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
3.在window自帶的防火墻里的例外添加3306端口
總結(jié):mysql -u root -p
mysqluse mysql;
mysqlselect 'host' from user where user='root';
mysqlupdate user set host = '%' where user ='root';
mysqlflush privileges;
mysqlselect 'host' from user where user='root';
第一句是以權(quán)限用戶root登錄
第二句:選擇mysql庫
第三句:查看mysql庫中的user表的host值(即可進(jìn)行連接訪問的主機/IP名稱)
第四句:修改host值(以通配符%的內(nèi)容增加主機/IP地址),當(dāng)然也可以直接增加IP地址
第五句:刷新MySQL的系統(tǒng)權(quán)限相關(guān)表
第六句:再重新查看user表時,有修改。。
重起mysql服務(wù)即可完成。
分享標(biāo)題:mysql權(quán)限怎么設(shè)置 mysql如何設(shè)置權(quán)限
文章URL:http://jinyejixie.com/article16/hpcidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、關(guān)鍵詞優(yōu)化、商城網(wǎng)站、微信小程序、網(wǎng)站內(nèi)鏈、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)