项目八总结:数据库的安全性维护

        数据库除了数据管理之外,安全管理也是很重要的部分,其中的用户权限管理可以有效保证数据的安全访问,防止数据被非必要用户泄露、修改或删除。因此,MySQL提供了用户管理来保证数据的安全性。

        MySQL 安全管理通过创建用户、用户授权、 用户登录3个步骤的用户管理来实现。MySQL 安全系统非常灵活,可以通过命令或界面化登录,而用户权限也可以从数据库、表、列及其他数据库对象的不同授权来达到,既满足用户的需求,又限制用户不能超出访问、操作的权限。

【任务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[PASSWORI[<'密码'>]];

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

        ②“主机”可以是主机名或IP 地址,本地主机名可以使用localhost,“%”表示一组主机。
        ③“IDENTIFIED BY”关键字用于设置用户的密码,若指定用户登录不需要密码,则可以省略该选项。
        ④“PASSWORD”关键字指定使用哈希值设置密码。密码的哈希值可以使用 PASSWORDO 函数获取。
        (2)INSERT语句的语法格式为:

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

        说明:通常语句只能添加 Host、User、Password字段的值,分别表示 user 数据表中的主机名字段、用户名字段和密码字段。
        注意,GRANT语句在授予用户权限任务部分详细讲解。

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

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

         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数据库名·过程名”来表示。

        ③“<' 用户名>@<'主机'>”中若“用户名”不存在则添加用户。“[IDENTIFIED BY[PASSWORD]<'新密码'>]”可选项可以设置新用户的密码,若“用户名”已经存在,则此选项可以修改用户的密码。
        ④“[WITH GRANT OPTION]”可选项表示允许用户将获得的权限授予其他用户。
        2. 查看用户权限
        (1)使用SHOWGRANTS语句查看授权信息,其语法格式为:

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<'新的用户名'>@<主机'>;

        说明:RENAMEUSER语句可以对用户进行重命名,该语句可以同时对多个已存在的用户进行重命名,各个用户之间使用逗号分隔,重命名时“旧的用户名”必须已经存在,并且“新的用户名”还不存在,使用者必须拥有“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语句删除用户的语法格式为:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库大作业设计MySQL 在设计数据库大作业时,需要考虑以下几个方面: 1. 数据库设计: 需要进行概念设计和逻辑设计。概念设计主要是确定实体、属性和关系,建立数据模型;逻辑设计则是转化概念设计为关系型数据库模型,考虑表的创建、属性的数据类型和约束等。 2. 数据表设计: 针对需求进行数据表的设计,确定表中的字段、主键、外键等。建议根据实际情况设计尽可能小的数据表,提高查询和操作的效率。 3. 数据库优化: 在设计数据库时,需要考虑查询和操作的效率。可以通过建立索引、分表分区、优化查询语句等方式进行优化,提高数据库的性能。 4. 安全性考虑: 在设计数据库时,需要考虑数据安全性。可以通过设置用户权限、加密敏感数据、备份和恢复等方式保护数据库的安全。 5. 前后端交互: 在数据库设计时,需要考虑与前端和后端的交互。前端负责展示数据和与用户交互,后端负责处理用户请求和与数据库交互。可以通过设计API接口和数据库存储过程等方式实现前后端的数据传输和交互。 6. 测试: 在设计数据库大作业时,需要进行充分的测试。可以使用样例数据进行测试,确保数据库的正确性和健壮性。 总结:在设计数据库大作业时,需要考虑数据库设计、数据表设计、数据库的优化、安全性考虑、前后端交互和测试等方面。通过合理的设计和优化,可以提高数据库的性能和安全性。最终完成一个高效、健壮的MySQL数据库大作业。 ### 回答2: 数据库大作业设计MySQL的过程主要包括以下几个步骤: 1.需求分析:首先需要明确项目的需求,了解业务场景和实现目标。通过与需求方的沟通,明确数据库的基本功能和所需数据的结构、属性等。 2.数据库设计:根据需求分析的结果,设计数据库的逻辑结构和物理结构。逻辑结构包括实体、属性和关系等,可以使用E-R图或UML建模工具表示。物理结构包括数据库表的创建、字段的定义、索引的建立等,使用MySQL的DDL(Data Definition Language)语句完成。 3.数据模型设计:根据需求和数据库设计,选择合适的数据模型来表达数据之间的关系。MySQL支持关系型数据库模型,可以根据实际情况选择合适的范式化程度。 4.数据字典设计:编写数据字典,记录数据库中每个表的详细信息,包括表名、字段名、数据类型、字段约束等。为了方便管理,可以使用Excel表格或专业的数据库设计工具。 5.数据库实现:根据数据库设计和数据字典,使用MySQL的语言(SQL)创建数据库和表结构,并完成数据的插入、更新、删除等操作。可以使用MySQL的命令行工具或图形化工具如Navicat等。 6.性能优化:对数据库的性能进行优化,包括索引的使用、查询语句的优化、数据库的分表分库等。通过监测和调整数据库配置参数,提高数据库的运行效率和响应速度。 7.安全性设计:为了保护数据库安全性,需要设计合理的用户权限和访问控制策略。制定用户权限,并对数据库进行备份、恢复和监控等,以确保数据的安全和可靠性。 通过以上步骤完成数据库大作业的设计和实现,可以满足项目需求,确保数据库的正确性、完整性和一致性。 ### 回答3: 数据库大作业设计主要包括以下几个方面: 1. 数据表设计:根据需求确定数据库中需要创建的数据表,每个数据表对应一个实体或概念,并确定各个表的属性、主键、外键等。 2. 关系定义:在数据表之间建立合适的关联关系,通过定义外键保证数据的完整性和一致性。 3. 索引设计:根据查询需求设计适当的索引,提高数据库检索效率。 4. 触发器和存储过程:根据具体需求设计触发器和存储过程,用于实现复杂的业务逻辑和数据处理。 5. 数据导入:将现有数据导入到数据库中,可以使用SQL语句批量插入数据或者使用工具进行数据导入。 6. 数据查询和分析:根据具体需求编写SQL语句进行数据查询和分析,获取所需数据并进行处理。 7. 性能优化:通过运行时间分析和SQL语句优化等方法,提高数据库的性能和响应速度。 8. 数据备份和恢复:定期对数据库进行备份,以防止数据丢失,同时也能够在需要时进行数据恢复。 9. 数据库安全性:设置适当的用户权限和访问控制,保护数据库安全性和机密性。 10. 数据库维护和监控:定期对数据库进行维护和监控,包括数据清理、性能监控、空间管理等。 通过以上步骤的设计和实施,可以建立一个完善的MySQL数据库,满足大作业设计的需求,并提供高效、可靠、安全的数据存储和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值