相信很多人都說過一句玩笑話,刪庫跑路哈哈哈~說到刪庫跑路,那麼你是否了解過,如何給mysql設定許可權來防止這樣的事情發生呢
如果你使用的是root許可權的賬號,你需要給不同的賬號來分配許可權時,可以使用如下的sql語句來建立對應的賬號和許可權:
grant
select
on practice.*to
'dev'@'%
' identified by '
123' with
grant
option
;
這裡的practice是指資料庫的名稱,.*表示該資料庫下所有的表,dev表示連線資料庫使用的賬號名,%表示dev賬號可以用所有ip訪問,如果@後面是指定ip,則dev賬號只能在指定ip上訪問. 123表示dev賬號對應的密碼
檢視dev對應的許可權
登入dev賬號檢視許可權是否生效
進入dev賬號,當我想要刪除practice資料庫下的test表時,提示我們無法刪除,說明許可權已經生效.還想刪庫跑路嗎,哈哈
上面在建立dev賬號的過程中,我們能看到,mysql的許可權不是單純賦予給某個使用者dev的,而是賦予給"使用者+ip"的.比如我們上面建立的dev賬號用什麼密碼登陸,在哪個ip上能登陸,這樣才算乙個完整的使用者標識.
mysql中的幾張表可以記一下,面試時也是加分項.在我們連線的資料庫中都會有這麼幾張表
這個叫mysql的資料庫裡面有這麼幾張表
user,db,table_priv,column_priv,這些表有什麼用呢?和許可權有什麼關係呢?
user 的一行記錄代表乙個使用者標識
db 的一行記錄代表對資料庫的許可權
table_priv 的一行記錄代表對錶的許可權
column_priv 的一行記錄代表對某一列的許可權
drop
table
ifexists
`account`
;create
table
`account`
(`id`
int(11)
notnull
,`name`
varchar(50
)default
null
,`balance`
int(
255)
default
null
,primary
key(
`id`),
key`idx_balance`
(`balance`))
engine
=innodb
default
charset
=utf8;
插入幾條資料
insert
into
`account`
values
('1'
,'lilei'
,'900');
insert
into
`account`
values
('2'
,'hanmei'
,'100');
insert
into
`account`
values
('3'
,'lucy'
,'250');
insert
into
`account`
values
('5'
,'tom'
,'0'
);
建立完成後,當我們使用root賬號時可以看到表中所有的字段
那麼,如果我不想讓dev訪問balance列呢
我們先刪除下dev下的允許查詢所有的許可權
revoke
select
on practice.
*from
'dev'
@'%'
再執行下面這條sql
grant
select
(id,name)
on practice.account to
'dev'
@'%'
;
這時候可以分別看下mysql資料庫下的 table_priv,column_priv 的資料
使用dev登陸查詢發現查詢?不好意思,不允許了
而只查詢id和name時是可以的
哈哈,是不是感覺很簡單,我們下期再接著盤!
喜歡就點讚收藏吧,你的點讚就是我的動力,在成為架構師的路上我們一起努力~
Mysql查詢 深入學習
1 開篇 在學習的過程中我們一起進步,成長。有什麼寫的不對的還望可以指出。2 查詢 1 多表之間的查詢 笛卡爾積 100 100 10000 查詢的資料量可能非常大 給表名取別名 2 關聯查詢 隱示內連線查詢。sql92 內連線查詢。sql99 left join on 如果我寫 left join...
mysql查詢深入 Mysql查詢 深入學習
1 開篇 在學習的過程中我們一起進步,成長。有什麼寫的不對的還望可以指出。2 查詢 1 多表之間的查詢 笛卡爾積 100 100 10000 查詢的資料量可能非常大 給表名取別名 2 關聯查詢 隱示內連線查詢。sql92 內連線查詢。sql99 left join on 如果我寫 left join...
Php深入學習一
對於php的學習,你不可避免的要經常與前端互動,這要求你必須掌握html css js。最好還能會jquery或者angularjs以及bootstrap。後三個可以讓你開發前端更快捷 這裡面的內容對於初學者入門php完全足夠,前期不要用框架,基礎語法整紮實了,至少你要會基本的搭建環境和發布專案,常...