数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制。

MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据具有访问权)

访问控制:需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。

管理访问控制需要创建和管理用户账号

如:

1、多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表

2、某些用户需要读表,但可能不需要更新表

3、你可能想允许某些用户添加数据,但不允许他们删除数据

4、某些用户(管理员)可能需要处理用户账号的权限,但多数用户可能不需要

5、你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据

6、你可能根据用户登录的地点限制对某些功能的访问

最开始安装时为了操作数据库,需要登陆MySQL,创建一个名为root用户账号,使它对整个MySQL 服务器具有完全的控制,之前的操作也是依赖于此账号,你一个人怎么弄都行,但是要是实际使用的话,应该创建一系列的账号,有的用于管理,有的用于用户、开发等等

注意:

1、访问控制的目的不仅仅是防止用户的恶意企图,更常见的是防止无意识的操作错误,通过保证用户不能执行他们不应该执行的语句,有利于维护数据的安全,

2、要严肃对来root 登录使用,仅在绝对需要的时候使用它

MySQL Administrator 提供了一个图形用户界面,用来管理用户及账号权限。本文使用语句进行操作 ,下面就来介绍一下

One、查看用户

MySQL用户账号和信息存储在名为mysql 的数据库,一般不需要直接访问mysql 数据库和表,但有时需要直接访问

需要直接访问它的时机之一是在需要获得所有用户账号列表时

-- 使用名为mysql 的数据库 use mysql;

-- 查看有哪些用户select user from user;

从中可以看出,mysql 数据库中有一个名为user 的表,它包含所有的用户账号,

user表中有一个名为user 的列,它存储用户登录名。新安装的一般就一个root 用户

试验对用户账号和权限进行更改的最好方法就是打开多个数据库客户机(如mysql命令行实用程序的多个副本),作为一个管理登录,其他作为被测试的用户登陆

Two、创建用户账号(并指定密码)

cretae user 创建一个新用户账号,在创建用户账号时不一定需要口令(即密码),指定口令时使用 IDENTIFIED BY 进行指定

-- create user 用户名 identified by 密码 create user obge identified by 'password123';

这个表有 45行,有很多是一些其访问权限的控制

验证一下有没有,创建成功

注意:

1、identified by 指定的口令为纯文本,MySQL将在保存到user 表之前对其加密,为了作为散列值指定口令使用 IDENTIFIED BY PASSWORD

IDENTIFIED BY PASSWORD

2、GRANT 语句也可以用于创建用户账号,但一般使用CREATE USER ,因为create user 语句最为清楚和简单,也可以使用insert语句进行增加不过一般不建议,因为MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对他们的任何毁坏都有可能严重的伤害到MySQL服务器,因此相对于直接处理来说,最好是用标记和函数来处理这些表。

Three、重命名用户名 (RENAME)

-- RENAME USER 原来的名字 TO 现在的rename user obge to boge;

注意:仅在MySQL 5 或之后的版本支持上述语句(rename user),之前是通过 update语句进行更新

Four、更改口令

使用 SET PASSWORD ,新的口令必须加密

主要分为两种,一种是给指定的用户设置密码,另一种是自己设置自己的密码

-- 给 obge 这个用户更改密码 set password for obge = password('pwdobge');

-- 更新当前登陆用户的密码,不需要指定用户set password = password('rootobge');

注意:SET PASSWORD 更新用户口令时,新的口令必须传递到Password()函数中进行加密

Five、删除用户账号(DROP)

为了删除一个用户账号(以及相关的权限),使用 DROP USER 用户名

-- 删除名为 boge 的用户drop user boge;

注意:MySQL 5 或之后的版本可以通过 drop user 来删除用户账号和所有相关的账号权限,但是之前的版本,使用drop user 语句只能删除用户账号,不能删除账号权限,还要先借助 REVOKE删除与账号相关的权限,然后在使用drop user 删除账号。

Six、设置访问权限(GRANT)

在创建用户账号后必须接着分配访问权限。因为新创建的用户账号没有访问权限,虽然可以登陆MySQL但不能看到数据,不能执行任何数据操作。

1、查看赋予用户账号的权限

-- SHOW GRANTS FOR 用户账号名show grants for obge;

上述中, USAGE ON *.* 表示没有权限,与之相对的是 ALL PRIVILEGES ON *.* 与所有权限。

而 GRANT USAGE ON *.* TO 'obge'@'%' 就可以理解为,在任意数据库和任意表上对任何东西没有权限。

MySQL 的权限使用: 用户名和主机名结合定义(user@host),

如果不指定主机名,则使用默认的主机名%授予用户访问权限而不管主机名

2、使用 grant 语句进行设置权限

设置时需要至少提供:要授予的权限,被授予访问权限的数据库或表以及 用户名

如:设置 obge 这个用户只可以查询 bookstu 这个数据库的所有表

-- GRANT SELECT ON 数据库名.* TO 用户名grant select on bookstu.* to obge;

上述 grank 允许 用户在bookstu 数据库的所有表(bookstu.*)上使用 select,通过只授予select 访问权限,用户 obge ,对bookstu 这个数据库中的所有数据具有只读权限。

登陆测试一下

3、撤销特定的权限(REVOKE)

-- REVOKE 设置的权限 from 用户名revoke insert on bookstu.archive_orders from obge;

撤销用户obge 对 bookstu.archive_orders 的增加权限

注意: 被撤销的访问权限必须存在否则会报错

4、GRANT 与 REVOKE

4.1、grant 与revoke 可在以下几个层次进行控制访问权限

a、整个服务器,使用GRANT ALL 和 REVOKE ALL

b、整个数据库,使用 ON database.*

c、特定的表,使用ON databse.table

d、特定的列

e、特定的存储过程

4.2、可以授予和撤销的每个权限

使用 grant 和revoke 结合表中列出的权限,可以完全控制用户对数据做什么事情和不能做什么事情。

注意:

1、在使用grant和 revoke时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据和表之前设计和实现安全措施,但是这样做的副作用是当某个数据库或表被删除时,相关的访问权限依然存在,而且将来重新创建该数据库或表时,这些权限依然起作用,所以建议,在设置权限时对那些存在的数据库和表进行设置表

2、可以通过列出各个权限并用逗号分隔,将多条grant 语句串在一起

-- 允许obge 对 bookstu 数据库中的表执行 增加和查看操作grant select、insert on bookstu.* to obge;

mysql revoke数据库_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...相关推荐

  1. android通过用户名密码访问服务器获取信息_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

    数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制. MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据 ...

  2. mysql授权用户多个数据库_MySQL创建用户授权数据库

    MySQL等主流数据库的最高权限一般是root用户. 有时我们需要提供数据库的账号和密码以使用某些服务. 但实际上每个服务只会使用1个左右的数据库. 直接将root账号和密码随意分配是一件很危险的事情 ...

  3. 在使用数据库对象管理工具新建数据库时,默认自带的模式有哪些?  A. public   B. sys_catalog   C. exam   D. sysaudit...

    在使用数据库对象管理工具新建数据库时,默认自带的模式有A. public和B. sys_catalog.

  4. mysql管理利器sqlyogent初识(php建立数据库)_MySql管理利器SQLyogEnt初识(php建立数据库)...

    今天我建立的数据库名叫"mydb",数据库里包含一个表"news".接下来我们就打开SQLyogEnt实际操作一下. 第一,打开SQLyogEnt,由于要运行m ...

  5. mysql主从结构主数据库_mysql主从结构主数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. springBoot+springSecurity 数据库动态管理用户、角色、权限(二)

    序:  本文使用springboot+mybatis+SpringSecurity 实现数据库动态的管理用户.角色.权限管理 本文细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义 ...

  7. mysql主从结构主数据库_mysql主从结构主数据库中的日志

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...

    MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL Workbench设计和创建新的数据库图示,建 ...

  9. mysql 系统默认_mysql之系统默认数据库

    相关内容: 系统默认数据库information_schema,performance_schema,mysql,test  的意义 首发时间:2018-02-23 17:10 安装mysql完成后, ...

最新文章

  1. Active Diretory 全攻略(八)--组策略(2)
  2. pl/sql里的exists和in的差别
  3. 第23天学习Java的笔记-抽象类
  4. 程序设计基础c语言版习题答案,C语言程序设计基础知识 习题一及参考答案
  5. 计算机专业小三门要求,最新小三门选科要求有啥变化?附对比表
  6. SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
  7. java动漫项目_狂拽酷炫diao炸天的开源动画项目:lottie-android,拿来就用!
  8. python修改word文本框中的内容
  9. 视差映射:更逼真的纹理细节表现(上):为什么要使用视差映射
  10. 如何使用sql语句算两经纬度的距离
  11. Android超强大的粒子动画库,流星雨,爆炸,满屏飞花,等粒子特效快速实现
  12. 编一行代码,飞向星辰的大海
  13. 漫威电影宇宙的正确观影顺序
  14. 在页面上用$(#userName).val();获取不到值,提示$(#userName)未定义
  15. idea modules中Sources介绍
  16. java websocket netty_用SpringBoot集成Netty开发一个基于WebSocket的聊天室
  17. 基于javaweb+jsp的餐饮店信息管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
  18. chckxy函数 matlab,在VS2010中调用MATLAB内建函数
  19. bzoj 1503 郁闷的出纳员 (平衡树+前缀和)
  20. Ubuntu 查看内核版本

热门文章

  1. mysql8.0怎么打开_MySQL8.0 下载安装启动(Windows10)
  2. idea给项目(ssm)打包(war)部署到阿里云
  3. @JSONField注解的作用
  4. VSCode配置python调试环境
  5. 登录慕测平台从慕测开发者测试练习的Triangle和NextDay程序中分别生成满足100%语句覆盖、函数覆盖
  6. 元素绝对定位在底部水平居中
  7. iconv java_libiconv之iconv函数的使用方法
  8. Android_仿苹果数字键盘以及判断信用卡有效期的Editext
  9. Android适配全攻略
  10. linux 查看所有用户、组信息