【MySQL】-安全性控制

这篇具有很好参考价值的文章主要介绍了【MySQL】-安全性控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一关:用户和权限

用户(User)
MySQL创建用户:

create user 用户名 identified by 用户登录密码;

通常用户名可包含域名,限定用户在该域名内登录再有效。

alter user语句可重置用户密码:

ALTER USER user IDENTIFIED BY ‘new_password’;

权限

MySQL常用的权限有:

all: 所有权限(grant option除外)
alter: alter table权限
alter routine: alter 存储过程
create: create database/table
create role: create role
create foutine: create 存储过程和函数
create user: create/alter/rename/drop user
create view: create view
delete: delete语句
drop: drop database/table
drop role: drop role
execute: 调用存储过程或函数
index:create/drop index
insert: insert语句
select: select语句
trigger: 触发器相关操作
update: update语句 等。 select,update,insert,delete还可以用在列上,如select(c_id),update(b_balance)等。

角色(Role)
角色是权限的集合。如果有一组人(承担相同职责的小组,或者説小组成员扮演相同的角色)应该被授予一组相同的权限,不妨创建一个角色,将那组权限授予该角色,然后再将角色授予该组的每个成员。这比一个个地给每个组员授予一批权限要方便得多。

创建角色的语句:

CREATE ROLE [IF NOT EXISTS] role [, role ] …
一次可以创建多个角色。

删除角色:
DROP ROLE [IF EXISTS] role [, role ] …

角色被删除后,拥有该角色的用户立即失去角色定义的权限组合。不过,如果用户同时拥有多个角色,两个角色代表的权限集合如果有交集,则该用户仍拥有交集代表的权限。

GRANT授权语句

以下语句授予权限给用户或角色:

grant 权限[,权限] … on 数据库对象 to user|role,[user|role]… [with grant option]

可以同时将多个权限授予多个用户或角色。

with grant option表示被授权用户可以传播权限,即授权该用户将其拥有的权限(之前获得的权限,通过本语句获得的权限,以及今后获得的权限)再授予其它用户。

以下语句授予角色所代表的权限集给用户或角色:

GRANT role [, role] … TO user_or_role [, user_or_role] … [WITH ADMIN OPTION]

GRANT语句可以将权限或角色(权限集合)授予用户或角色。但是不能将权限和角色混合授予用户(或角色)。

REVOKE收回权限语句

以下语句将对象的权限从用户或角色手中收回:

revoke 权限[,权限]… on 数据库对象 from user|role[,user|role]…

下列语句把role所代表的权限集合从用户或角色中收回:

REVOKE role [, role ] … FROM user_or_role [, user_or_role ] …

如果用户本身拥有多个角色所代表的权限集合,而这些集合存在交集,收回其中部分角色代表的权限集后,用户可能仍拥有那个角色所代表的部分权限(交集代表的那部分权限)。

编程任务

完成以下创建用户和授权操作:

(1) 创建用户tom和jerry,初始密码均为’123456’;

(2) 授予用户tom查询客户的姓名,邮箱和电话的权限,且tom可转授权限;

(3) 授予用户jerry修改银行卡余额的权限;

(4) 收回用户Cindy查询银行卡信息的权限。

表1 client(客户表)

字段名称 数据类型 约束 说明
c_id INTEGER PRIMARY KEY 客户编号
c_name VARCHAR(100) NOT NULL 客户名称
c_mail CHAR(30) UNIQUE 客户邮箱
c_id_card CHAR(20) UNIQUE NOT NULL 客户身份证
c_phone CHAR(20) UNIQUE NOT NULL 客户手机号
c_password CHAR(20) NOT NULLE 客户登录密码

表2 bank_card(银行卡)

字段名称 数据类型 约束 说明
b_number CHAR(30) PRIMARY KEY 银行卡号
b_type CHAR(20) 银行卡类型(储蓄卡/信用卡)
b_c_id INTEGER NOT NULL FOREIGN KEY 所属客户编号,引用自client表的c_id字段
b_balance NUMERIC(10,2) NOT NULL 余额信用卡余额系指已透支的金额

代码实现

【MySQL】-安全性控制

输出结果

user
Cindy
jerry
tom
Grants for Cindy@%
GRANT USAGE ON . TO Cindy@%
Grants for tom@%
GRANT USAGE ON . TO tom@%
GRANT SELECT (c_mail, c_name, c_phone) ON finance.client TO tom@% WITH GRANT OPTION
Grants for jerry@%
GRANT USAGE ON . TO jerry@%
GRANT UPDATE (b_balance) ON finance.bank_card TO jerry@%
user table_name table_priv column_priv
jerry bank_card Update
tom client Grant Select
user table_name column_name column_priv
jerry bank_card b_balance Update
tom client c_mail Select
tom client c_name Select
tom client c_phone Select

第二关:用户、角色与权限

编程任务

完成以下创建用户和授权操作:

(1) 创建角色client_manager和fund_manager;

(2) 授予client_manager对client表拥有select,insert,update的权限;

(3) 授予client_manager对bank_card表拥有查询除银行卡余额外的select权限;

(4) 授予fund_manager对fund表的select,insert,update权限;

(5) 将client_manager的权限授予用户tom和jerry;

(6) 将fund_manager权限授予用户Cindy.

代码实现

【MySQL】-安全性控制

输出结果

user
Cindy
client_manager
fund_manager
jerry
tom
Grants for client_manager@%
GRANT USAGE ON . TO client_manager@%
GRANT SELECT (b_c_id, b_number, b_type) ON finance.bank_card TO client_manager@%
GRANT SELECT, INSERT, UPDATE ON finance.client TO client_manager@%
Grants for fund_manager@%
GRANT USAGE ON . TO fund_manager@%
GRANT SELECT, INSERT, UPDATE ON finance.fund TO fund_manager@%
Grants for Cindy@%
GRANT USAGE ON . TO Cindy@%
GRANT SELECT, INSERT, UPDATE ON finance.fund TO Cindy@%
GRANT fund_manager@% TO Cindy@%
Grants for tom@%
GRANT USAGE ON . TO tom@%
GRANT SELECT (b_c_id, b_number, b_type) ON finance.bank_card TO tom@%
GRANT SELECT, INSERT, UPDATE ON finance.client TO tom@%
GRANT client_manager@% TO tom@%
Grants for jerry@%
GRANT USAGE ON . TO jerry@%
GRANT SELECT (b_c_id, b_number, b_type) ON finance.bank_card TO jerry@%
GRANT SELECT, INSERT, UPDATE ON finance.client TO jerry@%
GRANT client_manager@% TO jerry@%
user table_name table_priv column_priv
client_manager bank_card Select
client_manager client Select,Insert,Update
fund_manager fund Select,Insert,Update
user table_name column_name column_priv
client_manager bank_card b_c_id Select
client_manager bank_card b_number Select
client_manager bank_card b_type Select文章来源地址https://www.toymoban.com/news/detail-425700.html

到了这里,关于【MySQL】-安全性控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper的安全性与权限管理

    Apache Zookeeper是一个开源的分布式协调服务,用于构建分布式应用程序的基础设施。它提供了一种可靠的、高性能的、分布式的协同服务,以实现分布式应用程序的一致性。Zookeeper的核心功能包括:集群管理、配置管理、同步服务、组件协同等。 在分布式系统中,Zookeeper的安

    2024年02月21日
    浏览(22)
  • 基于物理安全的数据库访问控制:确保数据安全性

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着大数据时代的到来,各类组织机构和企业纷纷开始关注数据安全和隐私保护。在数据处理和存储过程中,确保数据的物理安全和逻辑安全至关重要。数据库访问控制作为保障数据安全的一项基础工作,也应受到足够的重

    2024年02月12日
    浏览(23)
  • 小程序安全性加固:如何保护用户数据和防止恶意攻击

    第一章:引言   在当今数字化时代,移动应用程序的使用已经成为人们日常生活中的重要组成部分。小程序作为一种轻量级的应用程序形式,受到了广泛的欢迎。然而,随着小程序的流行,安全性问题也日益凸显。用户数据泄露和恶意攻击威胁着用户的隐私和安全。本文将重

    2024年02月12日
    浏览(31)
  • 【Linux命令详解 | chmod命令】 chmod命令用于修改文件或目录的权限,保护文件安全性。

    在Ubuntu系统中, chmod 命令是一个强大的工具,用于修改文件或目录的权限,从而保护文件的安全性。通过适当配置权限,可以控制哪些用户或用户组可以访问、读取、写入或执行特定文件或目录。 chmod 命令是Linux/Unix系统中的基础命令之一,对于系统管理员和开发者来说都是

    2024年02月12日
    浏览(21)
  • 如何使用Flask-Login来实现用户身份验证和安全性?

    当你想要在你的Flask应用中实现用户身份验证和安全性时,Flask-Login这个扩展将会是你的最佳伙伴。它提供了一组简单而强大的工具来处理用户登录、注销和其他安全相关的操作。下面,我将以一个新手的角度,用尽可能轻松的语气来解释如何使用Flask-Login。 首先,你需要在你

    2024年02月15日
    浏览(22)
  • 云原生之深入解析Dapr安全性之访问控制策略

    ① 跨命名空间的服务调用 Dapr 通过服务调用 API 提供端到端的安全性,能够使用 Dapr 对应用程序进行身份验证并设置端点访问策略: Dapr 应用程序可以被限定在特定的命名空间,以实现部署和安全,当然仍然可以在部署到不同命名空间的服务之间进行调用。默认情况下,服务

    2024年02月12日
    浏览(25)
  • 提升Web3安全性和用户体验:元事务和加密技术的应用

    在Web3中,去中心化应用程序(DApps)是一种基于区块链技术的应用程序,它们通过智能合约实现透明、安全、去中心化的业务逻辑。然而,DApps的使用门槛比传统的中心化应用程序更高,需要用户具备一定的技术知识,例如安装和使用区块链钱包、交互式智能合约等。 为了解

    2024年02月16日
    浏览(22)
  • 基于Node.js的移动应用程序安全防御与攻击面识别:保护用户隐私、确保系统安全性

    作者:禅与计算机程序设计艺术 《56. 基于Node.js的移动应用程序安全防御与攻击面识别:保护用户隐私、确保系统安全性》 1.1. 背景介绍 随着移动互联网的快速发展,移动应用程序 (移动端应用) 越来越多地涉足用户的日常生活。在这些应用程序中,用户隐私泄露和系统安全

    2024年02月09日
    浏览(28)
  • C++ 访问说明符详解:封装数据,控制访问,提升安全性

    访问说明符是 C++ 中控制类成员(属性和方法)可访问性的。它们用于封装类数据并保护其免受意外修改或滥用。 public :允许从类外部的任何地方访问成员。 private :仅允许在类内部访问成员。 protected :允许在类内部及其派生类中访问成员。 解释: 在 Person 类中,

    2024年04月24日
    浏览(11)
  • 【MySQL】数据库完整性和安全性

    目录   一、完整性 1.概念 2.sql语言支持的两种约束     2.1静态约束          撤销追加约束          断言     2.3动态约束           触发器 二、安全性 用DBMS对数据库实现的两个特性  1.概念 指dbms保证的db的一种特性,在任何情况下的正确性、有效性、一致性 原理图

    2023年04月24日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包