🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# **一 需求 ** 在项目开发的过程中可能需要开放自己的数据库给别人,但是出于安全的考虑,不能同时开放自己服务器里的其他数据库。那么可以新建一个用户,赋予该用户特定的数据库权限。 **二 实现** ** 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;`