Mysql--權限管理

#建立用戶
create user 'egon'@'1.1.1.1' identified by '123';
create user 'egon'@'192.168.1.%' identified by '123';
create user 'egon'@'%' identified by '123';mysql


#受權:對文件夾,對文件,對文件某一字段的權限sql

受權的同時會建立用戶,下面是經常使用的受權命令:數據庫

grant    all    on    *.*    to    ‘egon’@‘192.168.12%’    identified by ‘password’ide

     全部權限 在哪一個表      庫.表   給哪一個帳戶  egon帳戶從某個IP        設置密碼spa

flush privileges;3d

經常使用命令rest

select user();    #查看當前登陸帳戶

 mysql or mariadb 設置了密碼,仍然不須要密碼就可登陸的問題code

今天開發中在Centos7中安裝MySQL5.6版本後,在表中新建了一個weicheng的帳戶,而且設置了密碼,可是在用weicheng帳號登錄mysql發現,若是使用「mysql -uweicheng -p」登錄會報錯,即便密碼正確也不能登陸,最後發現,直接用「mysql -uweicheng」不輸入密碼也能夠登錄。
後來,查詢了資料緣由是:應爲數據庫裏面有空用戶,經過
select * from mysql.user where user='';
查詢若是有,而後經過
use mysql;
delete from user where user = '';
刪除了多餘的空白帳戶, 而後,經過
flush privileges;­
重載一次權限表,最後用
service mysqld restart
重啓mysql服務,問題獲得解決,至此mark一下!
Tip:
1、必定要記住重啓mysql服務,不然不會生效,本身就是由於沒有重啓msyql致使一直得不到解決!
2、msyql的用戶表在mysql數據庫中的user表中,主要字段有host,user,password等,做爲mysql用的管理的主要表。
展開

 

 

 


查看幫助:help grant
經常使用權限有:select,update,alter,delete
all能夠表明除了grant以外的全部權限blog

#針對全部庫的受權:*.*
grant select on *.* to 'egon1'@'localhost' identified by '123'; #只在user表中能夠查到egon1用戶的select權限被設置爲Yip

#針對某一數據庫:db1.*
grant select on db1.* to 'egon2'@'%' identified by '123'; #只在db表中能夠查到egon2用戶的select權限被設置爲Y

#針對某一個表:db1.t1
grant select on db1.t1 to 'egon3'@'%' identified by '123'; #只在tables_priv表中能夠查到egon3用戶的select權限

#針對某一個字段:
mysql> select * from t3;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | egon1 | 18 |
| 2 | egon2 | 19 |
| 3 | egon3 | 29 |
+------+-------+------+

grant select (id,name),update (age) on db1.t3 to 'egon4'@'localhost' identified by '123';
#能夠在tables_priv和columns_priv中看到相應的權限
mysql> select * from tables_priv where user='egon4'\G
*************************** 1. row ***************************
Host: localhost
Db: db1
User: egon4
Table_name: t3
Grantor: root@localhost
Timestamp: 0000-00-00 00:00:00
Table_priv:
Column_priv: Select,Update
row in set (0.00 sec)

mysql> select * from columns_priv where user='egon4'\G
*************************** 1. row ***************************
Host: localhost
Db: db1
User: egon4
Table_name: t3
Column_name: id
Timestamp: 0000-00-00 00:00:00
Column_priv: Select
*************************** 2. row ***************************
Host: localhost
Db: db1
User: egon4
Table_name: t3
Column_name: name
Timestamp: 0000-00-00 00:00:00
Column_priv: Select
*************************** 3. row ***************************
Host: localhost
Db: db1
User: egon4
Table_name: t3
Column_name: age
Timestamp: 0000-00-00 00:00:00
Column_priv: Update
rows in set (0.00 sec)

#刪除權限
revoke select on db1.* from 'egon'@'%';

權限相關操做

相關文章
相關標籤/搜索