mysql創建用戶並賦予用戶權限。在很多時候,我們並不會直接利用mysql的root用戶進行項目的開發,一般的,我們都會創建一個具有部分權限的用戶。比如我們隻需要從資料庫中查找數據,我們就隻需要創建一個具有select權限的用戶即可。
??我總是忘記怎麼創建用戶和賦予用戶權限,以及怎麼查找用戶所具有的權限。為瞭更好地記住,我自己來總結一次吧!
??下面我們來創建一個用戶名為’superboy’,密碼為’iamsuperboy’的用戶,並賦予他對資料庫’simpleshop’部分權限:select,update,delete,insert;
查看用戶&權限
??為瞭更好的實踐,當然先得告訴你怎麼查看用戶信息及用戶權限。
??首先你得在黑窗口中使用mysql -u root -p登陸管理員用戶。
查看用戶信息
use mysql; select host,user,password from user;
??這裡的host是指用戶可以在哪裡(哪個ip)登陸到該mysql資料庫。localhost或者127.0.0.1表示本地,’%’表示所有ip,其他固定ip這表示僅能通過那個ip。下面主要對本地用戶進行說明,隻要將localhost換成相應ip或者’%’即可表示遠程用戶。
查看用戶權限
-- 查看本地root的權限,沒有指定後面的localhost則默認為'%' show grants for root@'localhost'; -- 查看指定host的root的權限 show grants for root@'192.168.122.12';
創建用戶
創建本地用戶
-- 選擇mysql資料庫 use mysql; -- 創建本地用戶 create user 'superboy'@'localhost' identified by 'iamsuperboy'; -- 刷新MySQL的系統權限相關表,使添加用戶操作生效,以免會出現拒絕訪問 flush privileges;
創建遠程用戶
-- 從192.168.122.12登陸的用戶 create user 'superboy'@'192.168.122.12' identified by 'iamsuperboy'; -- 從任意ip登陸的用戶 create user 'superboy'@'%' identified by 'iamsuperboy'; -- 不做指定默認為'%' create user 'superboy' identified by 'iamsuperboy';
修改用戶密碼
??如果馬大哈的小夥伴不小心輸錯瞭用戶名和密碼,可以使用下面的方法進行救急。這裡我們將密碼’iamsuperboy’修改為’iamsuperman’。
-- 使用update指令,註意這裡的password需要進行加密 use mysql; update user set password = password('iamsuperman') where user = 'superboy'; flush privileges; -- -----------------或者------------------ set password for superboy@'localhost'= password('iamsuperman'); flush privileges;
刪除用戶
??如果需要刪除用戶,可以這樣:
use mysql; delete from user where user='superboy' and host='localhost' ; flush privileges;
??註意:創建用戶或者修改用戶密碼之後,我們需要執行指令flush privileges;刷新MySQL的系統權限相關表,使操作生效,以免出現拒絕訪問。
賦予&撤銷用戶權限
賦予用戶權限
??由於我們的項目,用戶隻對資料庫’simpleshop’進行增刪查改操作,所以我們隻需要創建一個具有增刪查改權限的用戶。
-- 賦予部分權限,其中的shopping.*表示對以shopping所有文件操作。 grant select,delete,update,insert on simpleshop.* to superboy@'localhost' identified by 'superboy'; flush privileges; -- 賦予所有權限 grant all privileges on simpleshop.* to superboy@localhost identified by 'iamsuperboy'; flush privileges;
撤銷用戶權限
??後來我們發現,我們的項目,用戶根本就不需要修改信息。這時我們可以撤銷superboy的update權限。
-- 撤銷update權限 revoke update on simpleshop.* from superboy@localhost; -- 撤銷所有權限 revoke all on simpleshop.* from superboy@localhost;