已有使用者修改權限,根據我測試,需要先删除原有權限,然後再設定新權限
查詢使用者權限
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使用者遠端通路權限