管理MYSQL用戶帳戶

管理MySQL用戶帳戶mysql

MySQL服務器的權限所有存放在mysql庫中的幾個權限表。(以下表)sql

權限表數據庫

權限表的內容緩存

user服務器

可鏈接到服務器的用戶和他們的全局權限ide

db函數

數據庫級權限ui

tables_privspa

數據表級權限線程

column_priv

數據列級權限

procs_priv

與存儲例程有關的權限

對於mysql數據庫的操做注意經過下面這些帳戶管理SQL語句完成:

create user ; drop user ; rename user;

grant;

revoke;

set password;

show grants;

若是grant的權限給定了庫、表、列。那麼它們將被分別記錄到db、tables_priv、column_priv權限表裏。revoke也是從相關表裏將記錄刪除掉。

注:若是MySQL版本升級到一個新的版本,要運行mysql_update命令把那些權限表也升級到新版本的結構。

 

一、高級mysql用戶管理

1)建立用戶

create user 'user'@'hostname' identified by 'passwd';

通配符:

「%」字符是一個通配符,主機名若是設置爲「%」,就表示「任意一臺主機」。

「-」也能夠用在主機名部分裏,能夠匹配任意單個字符。

例:若是讓用戶從a.com域中的任意一臺主機去鏈接服務器,須要把主機名設置「%.a.com」

create user 'username'@'%.a.com' identified by 'passwd';

若是讓用戶從網段中訪問,也可使用網段或者「192.168.1.%」

create user 'username'@'192.168.1.0/255.255.255.0' identified by 'passwd';

create user 'username'@'192.168.1.%' identified by 'passwd';

2)刪除用戶

drop user 'username'@'hostname';

3)重命名用戶

rename user 'username'@'hostname' to 'username'@'hostname';

 

二、對帳戶受權

grant privileges (column) on dbname.tablename to 'username'@'hostname' identified by 'passwd' [REQUIRE] [WITH]

 

1)肯定帳戶的權限

能夠授予用戶的權限分爲不少種,咱們把這些權限按照管理類別分表。

數據庫管理權限表                  

權限名

該權限所容許的操做

Create user

建立用戶

File

讀、寫MySQL服務器主機上的文件

Grant Option

受權

Process

查看服務器運行的線程

Reload

從新加載權限數據表或者更新日誌及緩存

Replication client

查詢主/從服務器的運行地點

Replication slave

以複製的從服務器運行

Show database

用show database 語句查看全體數據庫的名字

Shutdown

關閉服務器

Super

用kill命令終止線程以及進行其餘超級用戶操做

 

 

數據庫對象操做權限

權限名

該權限所容許的操做

Alter

更改數據表和索引的定義

Alter routine

更改或者刪除存儲函數和存儲過程

Create

建立數據庫和數據表

Create routine

建立存儲函數和存儲過程

Create temporary tables

用temporary關鍵字建立臨時數據表

Create view

建立視圖

Delete

刪除數據表裏的現有數據行

Drop

刪除數據庫、數據表和其餘對象

Event

爲事件調度程序建立、刪除或修改各類事件

Execute

執行存儲函數和存儲過程

Index

建立或刪除索引

Insert

插入數據

Lock tables

用lock tables 語句明確鎖定數據表

Select

查詢

Show view

用show create view 語句查看視圖的定義

Trigger

建立或者刪除觸發器

Update

修改數據行

其餘權限

權限名

該權限所容許的操做

All

全部操做(不包括grant)

Usage

一個特殊的「無權限」權限

 

權限級別限定符

權限限定符

有關權限的做用範圍

ON *.*

全局級

ON dbname.*

數據庫級

ON dbname.tablename

數據表級

ON tablename

數據表級

ON dbname.routine_name

存儲例程權限

 

2)使用「無權限」的USAGE權限

USAGE的用法是:授予全局級USAGE權限,指定帳戶名,給出該帳戶與權限無關的特性值。

好比:若是你想在不影響帳戶權限的前提下改變該帳戶的口令,或要求用戶必須使用SSL鏈接,或者想對該帳戶限制鏈接,可使用下面幾條語句:

grant usage on *.* to account identified by 'passwd';

grant usage on *.* to account require SSL;

grant usage on *.* to account with max_connections_per_hour 10;

 

三、查看帳戶的權限

show grants for 'username'@'hostname'

 

四、撤銷權限和刪除用戶

revoke privileges on dbname.tablename from 'username'@'hostname';

drop user 'username'@'hostname'

五、改變口令

 

set password for 'username'@'hostname' = PASSWORD ('passwd')

相關文章
相關標籤/搜索