# **一 需求
**
在项目开发的过程中可能需要开放自己的数据库给别人,但是出于安全的考虑,不能同时开放自己服务器里的其他数据库。那么可以新建一个用户,赋予该用户特定的数据库权限。
**二 实现**
**
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 授权成功
![](https://box.kancloud.cn/a99e50773828917627aad84cfbed1fdf_326x250.png)
**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;`