Myspl 数据库用户和权限管理
2020-02-03 22:02
1016 查看
1. 用户管理
1.1 创建用户
# 创建完默认情况下不能本地登录,只能远程登录 create user 用户名 identified by 密码 # 创建用户并只能可以通过某个地址的客户端登录 create user 用户名@主机地址 identified by 密码 # 使用授权命令授权的时候创建新用户并授权 grant all privileges on xxxx.* to dddd@'%' identified by '654321';
1.2 授权
# 使用授权命令授权的时候创建新用户并授权 grant 权限类型 on 数据库.数据表 to 用户@主机地址 identified by 密码; # 给已经存在的用户授权 grant 权限类型 on 数据库.数据表 to 已存在的用户名; # 给用aaa在xxxx数据库中的所有表都授有select权限 grant select on xxxx.* to aaa; # 对于有些权限的设置 需要加上host地址,这个地址一般和该用户在mysql.user表中的host字段的值相同 grant select on xxxx.* to aaa@'host地址'; # 给用aaa在xxxx数据库中的所有表都授有update和delete权限 grant update,delete on xxxx.* to aaa;
常用的权限类型:
权限类型 | 说明 |
---|---|
all privileges | 所有权限 |
all | 所有权限 |
select | 读取权限 |
delete | 删除权限 |
update | 更新权限 |
create | 创建权限 |
drop | 删除数据库、数据表权限 |
主机地址
主机类型 | 含义 |
---|---|
localhost | 只允许该用户在本地登录,不能远程登录 |
% | 允许在除本机之外的任何一台机器远程登录 |
192.168.52.32 | 具体的IP表示只允许该用户从特定IP登录 |
1.3 撤销权限
基本格式:
revoke 权限类型 on 数据库.数据表 from 用户名;
例子:
# 撤销某一类权限 revoke update on xxxx.* from aaa; # 一次性多个权限 revoke select,insert,delete on xxxx.* from aaa; # 一次性撤销所有权限 revoke all on xxxx.* from aaa; revoke all privileges on xxxx.* from aaa;
1.4 刷新权限
flush privileges;
注意:权限更新后,如果之前已经连接到服务端的用户,并不会马上生效新权限更改。只有退出后重新登录才生效。
2. 附: MySQL权限类型
权限 | 含义 |
---|---|
usage | 连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。 |
file | 拥有file权限才可以执行 select …into outfile和load data infile…操作,但是不要把file, process, super权限授予管理员以外的账号,这样存在严重的安全隐患。 |
super | 这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS。 |
select | 必须有select的权限,才可以使用select table |
insert | 必须有insert的权限,才可以使用insert into …… values…. |
update | 必须有update的权限,才可以使用update table |
delete | 必须有delete的权限,才可以使用delete from ….where….(删除表中的记录) |
alter | 必须有alter的权限,才可以使用alter table |
alter routine | 必须具有alter routine的权限,才可以使用{alter | drop} {procedure|function} |
create | 必须有create的权限,才可以使用create table |
drop | 必须有drop的权限,才可以删除库、表、索引、视图等 |
create routine | 必须具有create routine的权限,才可以使用{create | alter |
create temporary tables | (注意这里是tables,不是table) 必须有create temporary tables的权限,才可以使用create temporary tables. |
create view | 必须有create view的权限,才可以使用create view |
create user | 要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。 |
show database | 通过show database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。对于root@localhost用户来说,没有对mysql数据库的权限,所以以此身份登陆查询时,无法看到mysql数据库: |
show view | 必须拥有show view权限,才能执行show create view |
index | 必须拥有index权限,才能执行[create | drop] index |
excute | 执行存在的Functions,Procedures |
event | event的使用频率较低建议使用root用户进行创建和维护。要使event起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1 |
lock tables | 必须拥有lock tables权限,才可以使用lock tables |
references | 有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束。 |
reload | 必须拥有reload权限,才可以执行flush [tables | logs | privileges] |
replication client | 拥有此权限可以查询master server、slave server状态。 |
replication slave | 拥有此权限可以查看从服务器,从主服务器读取二进制日志。 |
Shutdown | 关闭mysql权限 |
grant option | 拥有grant option,就可以将自己拥有的权限授予其他用户(仅限于自己已经拥有的权限) |
process | 通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。 |
all privileges | 所有权限。with grant option 可以连带授权 |
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分)
- RBAC用户权限管理数据库设计
- RBAC用户权限管理数据库设计(转载)
- Oracle 数据库权限管理及用户创建以及查看当前实例名
- RBAC用户权限管理数据库设计
- 第五阶段 -- 数据库:day21_07/03/19【用户管理;用户权限】
- 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
- 数据库用户权限管理与测试
- Spring Security 引用数据库管理用户权限-----login.jsp 提示"用户名或密码错误"
- SQLsever用户权限管理和数据库映射
- 用户和角色:通用权限管理系统数据库表结构如何设计?
- RBAC用户权限管理数据库设计
- MySQL 数据库用户和权限管理
- 后台管理用户权限数据库设计
- RBAC用户权限管理数据库设计
- RBAC用户权限管理数据库设计
- Spring Security教程(6)---- 使用数据库管理用户及权限
- RBAC用户权限管理数据库设计
- 第 2 章 使用数据库管理用户权限
- 用户和角色:通用权限管理系统数据库表结构如何设计?