1. 程式人生 > >mysql 建立使用者並賦予使用者許可權

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 [email protected]
'localhost';
-- 檢視指定host的root的許可權 show grants for [email protected]'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 [email protected]'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 [email protected]'localhost' identified by 'superboy';
flush privileges;
-- 賦予所有許可權
grant all privileges on simpleshop.* to [email protected] identified by 'iamsuperboy';
flush privileges;

撤銷使用者許可權

  後來我們發現,我們的專案,使用者根本就不需要修改資訊。這時我們可以撤銷superboy的update許可權。

-- 撤銷update許可權
revoke update on simpleshop.* from [email protected];
-- 撤銷所有許可權
revoke all on simpleshop.* from [email protected];