mysql 修改用戶權限 刷新權限 設置增刪改查


已有用戶修改權限,根據我測試,需要先刪除原有權限,然后再設置新權限

查詢用戶權限
show grants for 'root'@'%';

刷新權限
FLUSH PRIVILEGES;

查看當前用戶
SELECT CURRENT_USER();

設置用戶只能增刪改查
grant select,delete,insert,update on 數據庫.* to 用戶名@'127.0.0.1';

創建用戶
GRANT Select,Update,insert,delete ON 數據庫(*).* TO '用戶名'@"%" IDENTIFIED BY "密碼";

刪除用戶權限
REVOKE select,insert ON 數據庫.* FROM testuser@'localhost'

 

 

權限列表

  • All/All Privileges權限代表全局或者全數據庫對象級別的所有權限

  • Alter權限代表允許修改表結構的權限,但必須要求有create和insert權限配合。如果是rename表名,則要求有alter和drop原表, create和insert新表的權限

  • Alter routine權限代表允許修改或者刪除存儲過程、函數的權限

  • Create權限代表允許創建新的數據庫和表的權限

  • Create routine權限代表允許創建存儲過程、函數的權限

  • Create tablespace權限代表允許創建、修改、刪除表空間和日志組的權限

  • Create temporary tables權限代表允許創建臨時表的權限

  • Create user權限代表允許創建、修改、刪除、重命名user的權限

  • Create view權限代表允許創建視圖的權限

  • Delete權限代表允許刪除行數據的權限

  • Drop權限代表允許刪除數據庫、表、視圖的權限,包括truncate table命令

  • Event權限代表允許查詢,創建,修改,刪除MySQL事件

  • Execute權限代表允許執行存儲過程和函數的權限

  • File權限代表允許在MySQL可以訪問的目錄進行讀寫磁盤文件操作,可使用的命令包括load data infile,select … into outfile,load file()函數

  • Grant option權限代表是否允許此用戶授權或者收回給其他用戶你給予的權限,重新付給管理員的時候需要加上這個權限

  • Index權限代表是否允許創建和刪除索引

  • Insert權限代表是否允許在表里插入數據,同時在執行analyze table,optimize table,repair table語句的時候也需要insert權限

  • Lock權限代表允許對擁有select權限的表進行鎖定,以防止其他鏈接對此表的讀或寫

  • Process權限代表允許查看MySQL中的進程信息,比如執行show processlist, mysqladmin processlist, show engine等命令

  • Reference權限是在5.7.6版本之后引入,代表是否允許創建外鍵

  • Reload權限代表允許執行flush命令,指明重新加載權限表到系統內存中,refresh命令代表關閉和重新開啟日志文件並刷新所有的表

  • Replication client權限代表允許執行show master status,show slave status,show binary logs命令

  • Replication slave權限代表允許slave主機通過此用戶連接master以便建立主從復制關系

  • Select權限代表允許從表中查看數據,某些不查詢表數據的select執行則不需要此權限,如Select 1+1, Select PI()+2;而且select權限在執行update/delete語句中含有where條件的情況下也是需要的

  • Show databases權限代表通過執行show databases命令查看所有的數據庫名

  • Show view權限代表通過執行show create view命令查看視圖創建的語句

  • Shutdown權限代表允許關閉數據庫實例,執行語句包括mysqladmin shutdown

  • Super權限代表允許執行一系列數據庫管理命令,包括kill強制關閉某個連接命令, change master to創建復制關系命令,以及create/alter/drop server等命令

  • Trigger權限代表允許創建,刪除,執行,顯示觸發器的權限

  • Update權限代表允許修改表中的數據的權限

  • Usage權限是創建一個用戶之后的默認權限,其本身代表連接登錄權限

1、創建新用戶

  通過root用戶登錄之后創建

  >> grant all privileges on *.* to testuser@localhost identified by "123456" ;  //  創建新用戶,用戶名為testuser,密碼為123456 ;

  >> grant all privileges on *.* to testuser@localhost identified by "123456" ;  //  設置用戶testuser,可以在本地訪問mysql

  >> grant all privileges on *.* to testuser@"%" identified by "123456" ;   //  設置用戶testuser,可以在遠程訪問mysql

  >> flush privileges ;  //  mysql 新設置用戶或更改密碼后需用flush privileges刷新MySQL的系統權限相關表,否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql服務器,來使新設置生效

  

  2、設置用戶訪問數據庫權限

  >> grant all privileges on test_db.* to testuser@localhost identified by "123456" ;  //  設置用戶testuser,只能訪問數據庫test_db,其他數據庫均不能訪問 ;

  >> grant all privileges on *.* to testuser@localhost identified by "123456" ;  //  設置用戶testuser,可以訪問mysql上的所有數據庫 ;

  >> grant all privileges on test_db.user_infor to testuser@localhost identified by "123456" ;  //  設置用戶testuser,只能訪問數據庫test_db的表user_infor,數據庫中的其他表均不能訪問 ;

  

  3、設置用戶操作權限

  >> grant all privileges on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ;  //設置用戶testuser,擁有所有的操作權限,也就是管理員 ;

  >> grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ;  //設置用戶testuser,只擁有【查詢】操作權限 ;

  >> grant select,insert on *.* to testuser@localhost identified by "123456"  ;  //設置用戶testuser,只擁有【查詢\插入】操作權限 ;

  >> grant select,insert,update,delete on *.* to testuser@localhost identified by "123456"  ;  //設置用戶testuser,只擁有【查詢\插入】操作權限 ;

  >> REVOKE select,insert ON what FROM testuser  //取消用戶testuser的【查詢\插入】操作權限 ;

  

  4、設置用戶遠程訪問權限

  >> grant all privileges on *.* to testuser@“192.168.1.100” identified by "123456" ;  //設置用戶testuser,只能在客戶端IP為192.168.1.100上才能遠程訪問mysql ;

  

  5、關於root用戶的訪問設置

  設置所有用戶可以遠程訪問mysql,修改my.cnf配置文件,將bind-address = 127.0.0.1前面加“#”注釋掉,這樣就可以允許其他機器遠程訪問本機mysql了;

  >> grant all privileges on *.* to root@"%" identified by "123456" ;   //  設置用戶root,可以在遠程訪問mysql

  >> select host,user from user;   //查詢mysql中所有用戶權限

  關閉root用戶遠程訪問權限

  >> delete from user where user="root" and host="%" ;  //禁止root用戶在遠程機器上訪問mysql

  >> flush privileges ;  //修改權限之后,刷新MySQL的系統權限相關表方可生效 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM