# **一 需求
**
在項目開發的過程中可能需要開放自己的數據庫給別人,但是出于安全的考慮,不能同時開放自己服務器里的其他數據庫。那么可以新建一個用戶,賦予該用戶特定的數據庫權限。
**二 實現**
**
1 新建用戶**
// root 用戶登陸 MySQL
`mysql -uroot -p
`
`Enter password:
`
// 新建用戶
`mysql>insert into mysql.user(Host,User,Password) values("localhost","buff",password("buff"));
`
// 刷新系統權限表
`mysql>flush privileges;`
**這樣就創建了一個名為:buff,密碼為:buff 的用戶。**
**2 登陸測試**
`mysql>exit`
// 用戶 buff 登陸 MySQL
`mysql -ubuff -p`
`Enter password:`
`mysql>`
說明新建的用戶 buff 登陸成功。
**3 用戶授權**
// root 用戶登陸 MySQL
`mysql -uroot -p`
`Enter password:`
// 為用戶 buff 創建一個數據庫 bluebuff
`mysql>create database bluebuff;`
// 授權用戶 buff 擁有數據庫 bluebuff 的所有權限
`mysql>grant all privileges on bluebuff.* to buff@localhost identified by 'buff';`
//刷新系統權限表
`mysql>flush privileges;`
其它操作mysql> grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%’表示從任何地址連接。
‘連接口令’不能為空,否則創建失敗。
例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to jee@10.163.225.87 identified by ‘123′;
給來自10.163.225.87的用戶jee分配可對數據庫vtdc的employee表進行select,insert,update,delete,create,drop等操作的權限,并設定口令為123。
`mysql>grant all privileges on vtdc.* to jee@10.10.10.87 identified by ‘123′;
`
給來自10.163.225.87的用戶jee分配可對數據庫vtdc所有表進行所有操作的權限,并設定口令為123。
`mysql>grant all privileges on *.* to jee@10.10.10.87 identified by ‘123′;
`
給來自10.163.225.87的用戶jee分配可對所有數據庫的所有表進行所有操作的權限,并設定口令為123。
`mysql>grant all privileges on *.* to jee@localhost identified by ‘123′;
`
給本機用戶jee分配可對所有數據庫的所有表進行所有操作的權限,并設定口令為123。
** 4 登錄測試**
// 用戶 buff 登陸數據庫
`Enter privileges:`
// 顯示數據庫
`mysql>show databases;`
`mysql -ubuff -p`
結果如下圖所示,說明為用戶 buff 授權成功

**5 修改用戶 buff 的密碼**
// root 用戶登陸 MySQL
`mysql -uroot -p`
`Enter password:`
// 修改用戶 buff 的密碼
`mysql>update table mysql.user set password=password('buffer') where User='buff' and Host='localhost';`
`mysql>update mysql.user set password=password('新密碼') where User='jeecn' and Host='localhost';`
`mysql>flush privileges;`
**6 刪除用戶**
// root 用戶登陸 MySQL
`mysql -uroot -p
`
`Enter password:
`
// 刪除用戶 buff
`mysql>delete from mysql.user where User = 'buff' and Host = 'localhost';
`
`mysql>flush privileges;`
**7 刪除數據庫**
`mysql>drop database bluebuff;`