用戶連接到mysql,並做各種查詢,在用戶和伺服器中間分為兩個階段: 1:用戶是否有權連接上來 2:用戶是否有權執行此操作(如select,update等等) 先看第一個階段:伺服器如何判斷用戶是否有權連接上來 依據三個參數: 你從哪來? host 你是誰? user 你的密碼是多少? passwo ...
用戶連接到mysql,並做各種查詢,在用戶和伺服器中間分為兩個階段:
1:用戶是否有權連接上來
2:用戶是否有權執行此操作(如select,update等等)
先看第一個階段:伺服器如何判斷用戶是否有權連接上來
依據三個參數:
你從哪來? host
你是誰? user
你的密碼是多少? password
用戶的這3個信息,存儲在mysql庫中的user表下
---------------------------------------------
修改host域,使IP可以連接
update user set host='ip地址' where user='root'; flush privileges;#沖刷許可權
我們也可以刪除用戶使此用戶無法連接:
delete from user where user=''; flush privileges;
-------------------------
如何修改用戶的密碼:
在mysql8.0版本以上修改密碼的話使用如下語句完成:
use mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼'; FLUSH PRIVILEGES;
新增一個用戶並授權:
MySQL8.0以下的使用下麵的語句
grant [許可權1,許可權2,許可權3......]on 哪個庫.哪張表 to 用戶@'host' identfied by 'password';
MySQL8.0以上需要將創建用戶和授權分開進行:
#創建新用戶: create user 'lisi'@'192.168.3.110' identified by'111111'; #給新用戶授權: grant all privileges on *.* to 'lisi'@'192.168.3.110';
常用許可權有all,create,drop,insert,delete,update,select
我們來查看一下lisi用戶的全局許可權:
可以看到他的許可權是非常大的;那麼現在我們要收回許可權:
#收回許可權 revoke all on *.* form 'lisi'@'192.168.3.110';
那麼我們授權lisi用戶的test庫許可權:
grant all on test.* to 'lisi'@'192.168.3.110';
然後我們再看lisi用戶的全局許可權:
select * from user where user='lisi'\G
我們看到它的全局許可權變成了NO,但是他真的就沒有任何許可權嗎?
其實不是的,他在db表的記錄里還有許可權:
select * from db where user='lisi'\G
而且我們show databases;可以發現他還有操作test庫的權力:
-------------------------------------------
同樣的,我們使用grant all on test.goods to 'lisi'@'192.168.3.110';這條語句還能賦予lisi操作表的權力。