【数据库原理及应用】数据库的安全性维护

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 数据库的安全性维护示例

【任务8.1】添加数据库用户

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权限表存储用户在各个数据库上的操作权限,决定哪些用户可以从哪些主机访问哪些数据库。

host权限表是db权限表的扩展,配合db权限表对给定主机上数据库级操作权限做更细致的控制。host权限表很少使用,只有在db表的范围内扩展一个条目时才会用到。

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

(4)columns_priv权限表。记录数据字段级别的操作权限。columns_priv 权限表的作用与table_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”关键字指定使用哈希值设置密码。密码的哈希值可以使用PASSWORD()函数获取。

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

INSERT INTO mysql.user (User, Host, Password)Values(<'用户名'>,<'主机'>,PASSWORD(<'密码'>));

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

注意,GRANT语句在授予用户权限任务部分详细讲解。

【任务8.2】授予、回收数据库用户权限

1.授予用户权限

GRANT语句不仅是授权语句,还可以达到添加新用户或修改用户密码的作用。GRANT语句的语法格式为:

GRANT<权限名称>[(字段列表)]ON<对象名>TO<'用户名'>@<'主机>[IDENTIFIED BY[PASSWORD]<'新密码'>][WITH GRANT OPTION];

说明:

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

ALL[PRIVILEGES]:除GRANT OPTION之外的所有简单权限。

CREATE:允许创建数据表。

ALTER:允许修改数据表。

DROP:允许删除数据表。

SELECT:允许检索数据表。

INSERT:允许在数据表中插入数据。

DELETE:允许在数据表中删除数据。

UPDATE:允许在数据表中更新数据。

INDEX:允许在数据表中定义索引。

CREATE VIEW:允许创建视图。

EXECUTE:允许运行指定的存储过程。

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

全局权限:适用于一个给定服务器中的所有数据库,可以用“*。 *”来表示。

数据库权限:适用于一个给定数据库中的所有数据库对象,可以用“数据库名。·”来表示。

表权限:适用于一个给定表中的所有列,可以用“数据库名,表名”来表示。

列权限:适用于一个给定表中的单一列,可以先用“数据库名,表名”来表示,再在权限名称后加上“[(字段列表)]”可选项,如SELECT(员工ID,姓名)。

子程序权限:适用于给定存储过程或函数,可以用“PROCEDURE|FUNCTION数据库名,过程名”来表示。

③“<用户名'>@<'主机'>”中若“用户名”不存在则添加用户“[IDENTIFIEDBY[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_priv、Insert_priv、Create_priv等,mysql.db中可以查询到用户的数据库权限。

3.回收用户权限

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

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

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

【任务8.3】数据库用户管理

当管理员在MySQL中添加了用户后,因为各种问题可能需要对用户进行改名、修改密码或删除用户来实现对用户的管理。

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=<'主机'>;

说明:“新密码”需要用“PASSWORD()”函数来加密。

3.删除用户

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

DROP USER<'用户名'>@<'主机'>;

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

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

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

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
21 2
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
61 0
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
51 0
|
1月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
1月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
57 0
|
2天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
17 0
|
8天前
|
存储 数据库连接 数据处理
NumPy与数据库的结合应用探索
【4月更文挑战第17天】本文探讨了NumPy与数据库结合在数据处理和分析中的应用,阐述了结合使用的必要性,包括数据提取、转换、处理与分析及结果存储。通过Python数据库连接库提取数据,转化为NumPy数组进行高效计算,适用于金融等领域的数据分析。结合应用的优势在于高效性、灵活性和可扩展性,但也面临数据转换、性能优化和安全性挑战。
|
15天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
11 1
|
22天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
1月前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。

热门文章

最新文章