数据库除了数据管理之外,安全管理也是很重要的那分,其中的用户权限管以有效保证数据的安全访问,防止数据被非必要用户泄露、修改或删除。因此,MySQL提供了用户管理来保证数据的安全性。
MySQL安全管理通过创建用户、用户授权、用户登录3个步骤的用户管理来实现。MySQL安全系统非常灵活,可以通过命令或界面化登录,而用户权限也可以从数据库、表、列及其他数据库对象的不同授权来达到,既满足用户的需求,又限售用户不能超出访问、操作的权限。

添加数据库用户
1.MySQL的权限表
MySQL通过权限表来控制用户对数据库的访问,MySQL数据库在安装时会自动安装多个数据库。MySQL权限表存放在名称为MySQL的数据库中。常用的权限表有user、db、host、table _priv、columns_priv 和procs_ priv。
(1) user权限表。user是MySQL中最重要的一个权限表, user列主要分为4个部分:用户列、权限列、安全列和资源控制列。

①用户列:用户登录时通过表中的Host、User 和Password列判断连接的IP、用户名称和密码是否存在于表中来通过身份验证或拒绝连接。

②权限列: user 表中包含多个以“_ priv”结尾的字段,这些字段决定了该用户的权限,既包括查询权限、插入权限、更新权限、删除权限等普通权限,也包括关闭服务器和加载用户等高级管理权限。

③安全列: ssl (加密)、x509 (标识用户)开头的字段,以及plugin和authentication_string字段(验证用户身份、授权的插件)。

④资源控制列: max (最大允许次数,0表示无限制)开头的字段。

max_ questions:表示每小时允许执行查询数据库的次数。
max_updates: 表示每小时允许执行更新数据库的次数。
max_connections;表示每小时允许执行连接数据库的次数。
max_user_conntions:表示单个用户同时连接数据库的次数。

(2) db、 host 权限表。db 权限表存储用户在各个数据库上的操作权限,决定哪些用户可以从哪些主机访问哪些数据库。

(3) table_ priv 权限表。记录数据表级别的操作权限。table _ priv 权限表与db权限表相似,不同之处是它用于数据表而不是数据库。

(4) columns - priv 权限表。记录数据字段级别的操作权限。columns priv 权限表的作用与tuable - priv 权限表类似,不同之处是它针对某此表的特定字段的权限。

(5) procs- priv 权限表。该权限表存储用户在存储过程和函数上的操作权限。

2.添加用户
新安装的MySQL中只有一个名称为root的用户。这个用户是安装服务器时由系统创建并赋予了MySQL的所有权限。在对MySQL的实际操作中,通常需要创建不同层次要求的用户来确保数据的安全访问。

可以通过CREATE USER、INSERT和GRANT语句来实现添加用户

(1) CREATE USER语句的语法格式为:

CREATE USER <‘用户名’>@<‘主机’> 【IDENTIFIED BY 【PASSWORD】【<'密码'>】

说明:①使用CREATE USER语句可以创建一个或多个用户,用户之间用逗号分隔。

②“主机”可以是主机名或IP地址,本地主机名可以使用localhost,“%”表示一组主机。

③“IDENTIFIED BY"关键字用于设置用户的密码,若指定用户登录不需要密码,则可以省略该选项。

④“PASSWORD"关键字指定使用哈希值设置密码。密码的哈希值可以使用PASSWORDO()函数获取。

(2) INSERT 语句的语法格式为:

INSERT INTO mysql. user( User, Host,Password)

Values(<‘用户名’>,<'主机'> ,PASSWORD(<‘密码’>));

说明:通常语句只能添加Host、User、Password 字段的值,分别表示user数据表中的主机名字段、用户名字段和密码字段。

授予、 回收数据库用户权限
新添加的数据库用户既不允许访问其他用户的数据库,也不能创建自己的数据库,只有在授予了相应的权限后才能访问或创建数据库,为满足MySQL服务器的安全需要考虑以下内容。
①多数用户只需要对数据表进行读、写操作,只有少数用户需要创建、删除数据表。
②某些用户需要读、写数据而不需要修改数据。
③某些用户允许添加数据而不允许删除数据。
④管理员用户需要有管理用户的权力,而其他用户则不需要。
⑤某些用户允许通过存储过程来访问数据,而不允许直接访问数据表。

1. 授予用户权限
GRANT语句不仅是授权语句,还可以达到添加新用户或修改用户密码的作用。GRANT语句的语法格格式为:
GRANT<权限名称>[(字段列表)]ON<对象名> TO<'用户名'>@<'主机'>
[IDENTIFIED BY [PASSWORD] <'新密码'>] [WITH GRANT OPTION];

说明:

①“权限名称”中常用的权限如下。

All [PRIVIEGES]:除GRANT OPTION之外的所有简单权限。
CREATE:允许创建数据表。
ALTER:允许修改数据表。
DROP:允许删除数据表。
SELECT:允许检索数据表。
INSERT:允许在数据表中插入数据.
DELETE:允许在数据表中删除数据。
UPDATE:允许在数据表中更新数据。
INDEX:允许在数据表中定义索引。
CREATE VIEW;允许创建视图。
EXECUTE:允许运行指定的存储过程。

②“对象名”有以下权限级别。

全局权限:适用于一个给定服务器中的所有数据库。
数据库权限:适用于一个给定数据库中的所有数据库对象。
表权限:适用于一个给定表中的所有列。
列权限:适用于一个给定表中的单一列。
子程序权限:适用于给定存储过程或函数。

③"<'用户名‘>@<’主机'>”中若“用户名”不存在则添加用户。
“[IDENTIFIED BY [PASSWORD]<'新密码'>]”可选项可以设置新用户的密码,若“用户名”已经存在,则此选项可以修改用户的密码。

④" [WITH GRANT OPTION]"可选项表示允许用户将获得的权限授予其他用户。

2.查看用户权限
(1) 使用SHOW GRANTS语句查看授权信息,其语法格式为:

SHOW GRANTS FOR <'用户名'>@<'主机'>

(2)使用SELECT语句查看mysql. user表中用户的全局权限,其语法格式为:

SELECT <权限字段> FROM mysql. user
[ WHERE User=<'用户名'> AND Host<'主机'>]

说明: "mysql. user”表可以查询到用户的全局权限,“<权限字段>”中常用的权限字段有Select _priy、 Insert_ priy、 Create_priv等, mysql. db中可以查询到用户的数据库权限。

3.回收用户权限
使用REVOKE语句回收用户权限,其语法格式为:

REVOKE <权限名称>[(字段列表)]ON <对象名> FROM<'用户名'>@<'主机'>;

说明: REVOKE语句用来取消指定用户的某些指定权限,与GRANT语句类似。

[任务8.3]数据库用户管理
1. 修改用户的名称
使用RENAME USER语句可以修改用户的名称,其语法格式为:
RENAME USER <'旧的用户名'>@<'主机'>TO<'新的用户名'>@<'主机'>;
说明:RENAME USER语句可以对用户进行重命名,该语句可以同时对多个已存在的用户进行重命名,各个用户之间使用逗号分隔,重命名时“旧的用户名”必须已经存在,并且“新的用户名”还不存在,使用者必须拥有“RENAME USER"权限。

2.修改用户的密码
(1)使用mysqladmin命令修改用户密码的语法格式为:
mysqladmin -u<用户名> [-h<主机>] -p password [<新密码>]
说明: “mysqladmin" 是一条外部命令,必须在服务器端的“命令提示符”下执行。
(2)使用SET PASSWORD语句修改用户密码的语法格式为;
SET PASSWORD[FOR<'用户名'>@<'主机']= PASSWORD(<'新密码'>];
说明: SET PASSWORD语句可以修改用户的密码,语句中若不加“[FOR <'用户名'>@<'主机'>]”可选项,则修改当前用户密码。
(3) 使用UPDATE语句修改用户密码的语法格式为:
UPDATE mysql. user SET Password= PASSWORD(<'新密码'> )
WHERE User-<'用户名'> AND Host-<'主机'>;
说明:“新密码”需要用“PASSWORDO"函数来加密。

3.删除用户
(1)使用DROP USER语句删除用户的语法格式为:

DROP USER<‘用户名’>@<‘主机’>;

说明:DROP USER语句可以删除一个或多个普通用户,各用户之间用逗号分隔。如果删除用户已经创建的数据库对象,那么该用户将继缓保留。使用者必须拥有"DROP USER"权限。

(2)使用 DELETE语句删除用户的语法格式为:

EDELETE FROM mysql.user  WHERE User=<'用户名'>AND Host=<'主机‘>;

说明:使用DELETE语句删除用户时,使用者必须拥有"mysql.user”的“Delete"权限。

查看用户权限.
show grants for "用户名"@"主机号"\G

grant语句创建用户并授权
grant权限on库名.表名to "用户名"@"主机号" identified by"密码";
权限create, drop, insert, update, delete, select

grant语句给用户授权
grant权限on库名.表名to "用户名"@"主机号";

revoke语句回收用户部分权限
revoke权限on库名.表名from "用户名"@"主机号";

revoke语句回收用户全部权限
revoke all privileges, grant option from "用户名"@"主机号";

insert语可创建用尸
insert into user (host, user, password, ssl_ cipher , x509_ issuer , x509_ _subject) values
("主机号", "用户名",password("密码"), "","", "");
update语句修改用户密码
update user set password=password( "密码")
where host="主机号" and user="用户名";
delete语句删除用户
delete from user where host="主机号”and user="用户名";

刷新权限
flush privileges;

create语句创建用户
create user "用户名"@"主机号" identified by "密码";
set语句修改密码
set password = password( "密码");
set password for "用户名"@"主机号" = password("密码");
drop语句删除用户
drop user "用户名"@"主机号";

1.MySQL的权限表 
MySQL通过权限表来控制用户对数据库的访问
2.user权限表 
user是MySQL中最重要的一个权限表,主要分为4个部分:
(1)用户列
(2)权限列
(3)安全列
(4)资源控制列 
3.用户权限
新添加的数据库用户既不允许访问其他用户的数据库,也不能创建自己的数据库,只有在授予了相应的权限后才能访问或创建数据库。

项目八总结 数据库安全与维护相关推荐

  1. 你用的那些开源项目可能已经被放弃维护!

    在国内开源之路上,BAT 这些大型互联网科技公司走在前列. 有数据为证:截至 2019 年 3 月 22 日,阿里开源的总项目数为 1243 个,百度开源的总项目数为 746 个,腾讯开源的总项目数为 ...

  2. 网络存储技术Windows server 2012 (项目八 文件共享与磁盘映射)

    网络存储技术Windows server 2012 (项目八 文件共享与磁盘映射) 目录 前言 一.项目背景 二.项目实训题 三.操作步骤 1.在文件服务器上创建用户tom和jack: 2.在文件服务 ...

  3. Java毕设项目中学后勤设备保修维护管理系统计算机(附源码+系统+数据库+LW)

    Java毕设项目中学后勤设备保修维护管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也 ...

  4. 【甄选靶场】Vulnhub百个项目渗透——项目八:IMF-1(文件上传,缓冲区溢出)

    Vulnhub百个项目渗透 靶场环境 提取码:rong Vulnhub百个项目渗透--项目八:IMF-1(文件上传,缓冲区溢出)

  5. 【基础系列教程】项目八:震动传感器

    震动传感器,我们从名字中应该就可以判断,传感器能够检测震动中的物体.我们用什么来做震动传感器呢?那就是滚珠开关.滚珠开关,其内部含有导电珠子,器件一旦震动,珠子随之滚动,就能使两端的导针导通. 通过这 ...

  6. 开源项目商业模式分析(2) - 持续维护的重要性 - Selenium和WatiN

    该系列第一篇发布后收到不少反馈,包括: 第一篇里说的MonicaHQ不一定盈利 没错,但是问题在于绝大多数开源项目商业数据并没有公开,从而无法判断其具体是否盈利.难得MonicaHQ是公开的,所以才用 ...

  7. 期货大赛项目|八,ueditor的应用

    百度开发的富文本编辑器还是很不错的,可以已经不维护了 下载ueditor1_4_3_3-utf8-net放到项目中 找到net文件夹下config.json 修改以下两行 "imageUrl ...

  8. JavaWeb新闻项目(查询阅读主题维护)

    目录 一.主页面查询 1.主页面查询代码分析:单个查询+模糊查询 2. 主页面核心代码 二.添加主题 1.页面图 2.代码分析 3.帮助文件代码 三.修改主题 1.页面图 2.代码分析 3.页面核心代 ...

  9. 计算机辅助遥感制图的基本过程,项目八-遥感专题图的制作

    项目九遥感专题图的制作,授课教师:王冬梅,任务一遥感专题图的制作,一.遥感影像地图,遥感影像地图是一种以遥感影像和一定的地图符号来表现制图对象地理空间分布和环境状况的地图.在遥感影像地图中,图面内容要 ...

最新文章

  1. http学习笔记(三):报文
  2. PL/pgSQL的anyelement例子
  3. 【转】解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题...
  4. Android驱动开发之Hello实例(基于高通msm8909)
  5. 欧几里得距离网络_使用Tensorflow对象检测模型和OpenCV的社交距离和遮罩检测器...
  6. kafka中topic默认属性_分享:Kafka 的 Lag 计算误区及正确实现
  7. HDFS的JAVA客户端编写
  8. 设计模式系列之「装饰模式」
  9. Python标准库 urllib
  10. VM虚拟机下CentOS 6.5配置IP地址的三种方法
  11. 人人网普通登录源码爬取
  12. web前端开发面试题(六)
  13. 分布式系统的阿喀琉斯之踵:数据一致性!
  14. 我对写博客的一点感悟
  15. 过五关,斩六将!「网易/美团/菜鸟」已拿offer【Java岗】
  16. VSCode搭建 c 环境教程
  17. 海岸鸿蒙2018年标准物质,海岸鸿蒙标准物质目录.doc
  18. 解决Identify and stop the process that‘s listening on port 8080 端口问题
  19. vue cli3源码解析
  20. 基于JavaSwing开发简单的画图板程序 课程设计 大作业源码

热门文章

  1. 软件测试面试,一定要准备的7个高频面试题(附答案,建议收藏)
  2. 看完知乎轮子哥的编程之路,我只想说,收下我的膝盖...
  3. STM8L学习笔记-GPIO端口操作(一)
  4. Java获取本机公网ip
  5. axure低保真原型_如何在Google表格中创建低保真原型
  6. GO+ 教程总览(二)
  7. 花仙里云课堂知识付费v1.2.25知识付费 教育 直播
  8. zram lz4 和 lzo 算法性能评估比较
  9. List的contains方法老是返回false的解决法
  10. 如何理解PoW工作量证明?