精华内容
下载资源
问答
  • mysql综合管理用户权限
    千次阅读
    2021-02-04 22:17:05

    综合案例——图书管理系统

    在这里插入图片描述

    图书管理系统有三大类角色:普通用户、图书管理员和系统管理员。
    (1)普通用户:查看个人信息、修改个人信息、查询图书、借阅图书。
    (2)图书管理员:图书预约查询、图书借阅查询、借阅图书登记、还书登记、图书遗失登记。
    (3)系统管理员:管理用户、分配角色权限、系统设置。

    一、数据库设计

    1、创建用户表user:包含用户编号、姓名、出生日期、身份证号、登录名称、登录密码、手机号、电子邮箱、部门编号、角色编号信息,如表1所示。
    在这里插入图片描述
    2、创建部门表dept:包含部门编号、部门名称、创建日期信息,如表2所示。
    在这里插入图片描述
    3、创建角色表role:包含角色编号、角色名称、备注信息,如表3所示。
    在这里插入图片描述

    二、创建数据库

    有一部分同行因varchar字符串类型时常而报错,网上有各色各类的说法,其实际操作起来较为麻烦,而且还解决不了问题。大家可以试试,将varchar改为nvarchar,其效果完全一样,毫无差别。我们要的是实现效果,其过程官方也确认!
    大小写可根据个人情况,在公司尽量大小写分明,这样就一目了然,为防止交接工作时别人看不懂。更要极为重视英汉标点符号。

    1、建表语句

    mysql> create table user (
    id int(11) not null primary key,
    user_name nvarchar(255) default null,
    birth_date date default null,
    id_card nvarchar(255) default null,
    login_name nvarchar(255) default null,
    password nvarchar(255) default null,
    dept_id int(11) default null,
    role_id int(11) default null);
    Query OK, 0 rows affected (0.05 sec)
    ------------------------------------------
    mysql> create table dept (
    id int(11) not null,
    dept_name nvarchar(255) default null,
    create_date date default null);
    Query OK, 0 rows affected (0.06 sec)
    ------------------------------------------
    mysql> create table role (
    id int(11) not null,
    role_name nvarchar(255) default null,
    remark nvarchar(255) default null);
    Query OK, 0 rows affected (0.05 sec)
    

    2、初始化数据

    (1)插入数据到用户表中,数据如表4所示。

    在这里插入图片描述

    mysql> insert into user values(1,'小红','1985-05-25','10111','xiaohong','123456',1,1);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into user values(2,'小影','1989-02-19','10112','xiaoying','123456',1,1);
    Query OK, 1 row affected (0.02 sec)
    
    mysql> insert into user values(3,'大梅','1989-06-01','30102','damei','123456',2,2);
    Query OK, 1 row affected (0.02 sec)
    
    mysql> insert into user values(4,'admin','1988-03-25','30103','admin','123456',3,3);
    Query OK, 1 row affected (0.02 sec)
    
    (2)插入数据到部门表dept,数据如表5所示。

    在这里插入图片描述

    mysql> insert into dept values(1,'行政部','2018-06-03'),(2,'后勤部','2018-06-03'),(3,' 运维部','2018-06-03');
    
    Query OK, 1 row affected (0.02 sec)
    
    (3)插入数据到角色表,数据如表6所示。

    在这里插入图片描述

    mysql> insert into role values(1,'普通用户',null),(2,'图书管理员',null),(3,'系统管理员',null);
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    

    3、实现效果

    mysql> select*from user;
    +----+-----------+------------+---------+------------+----------+---------+---------+
    | id | user_name | birth_date | id_card | login_name | password | dept_id | role_id |
    +----+-----------+------------+---------+------------+----------+---------+---------+
    |  1 | 小红      | 1985-05-25 | 10111   | xiaohong   | 123456   |       1 |       1 |
    |  2 | 小影      | 1989-02-19 | 10112   | xiaoying   | 123456   |       1 |       1 |
    |  3 | 大梅      | 1989-06-01 | 30102   | damei      | 123456   |       2 |       2 |
    |  4 | admin     | 1988-03-25 | 30103   | admin      | 123456   |       3 |       3 |
    +----+-----------+------------+---------+------------+----------+---------+---------+
    4 rows in set (0.02 sec)
    
    mysql> select*from dept;
    +----+-----------+-------------+
    | id | dept_name | create_date |
    +----+-----------+-------------+
    |  1 | 行政部    | 2018-06-03  |
    |  2 | 后勤部    | 2018-06-03  |
    |  3 | 运维部    | 2018-06-03  |
    +----+-----------+-------------+
    3 rows in set (0.02 sec)
    
    mysql> select*from role;
    +----+------------+--------+
    | id | role_name  | remark |
    +----+------------+--------+
    |  1 | 普通用户   | NULL   |
    |  2 | 图书管理员 | NULL   |
    |  3 | 系统管理员 | NULL   |
    +----+------------+--------+
    3 rows in set (0.00 sec)
    

    三、用户信息管理

    1、修改用户小红的部门,修改为运维部。
    mysql> update user set dept_id=3 where login_name='xiaohong';
    Query OK, 1 row affected (0.02 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select*from user;
    +----+-----------+------------+---------+------------+----------+---------+---------+
    | id | user_name | birth_date | id_card | login_name | password | dept_id | role_id |
    +----+-----------+------------+---------+------------+----------+---------+---------+
    |  1 | 小红      | 1985-05-25 | 10111   | xiaohong   | 123456   |       3 |       1 |
    |  2 | 小影      | 1989-02-19 | 10112   | xiaoying   | 123456   |       1 |       1 |
    |  3 | 大梅      | 1989-06-01 | 30112   | damei      | 123456   |       2 |       2 |
    |  4 | admin     | 1988-03-25 | 30103   | admin      | 123456   |       3 |       3 |
    +----+-----------+------------+---------+------------+----------+---------+---------+
    4 rows in set (0.00 sec)
    
    2、查询用户小红的姓名、登录名、部门名称、角色名称。
    mysql> select u.user_name,u.login_name,d.dept_name,r.role_name from user u, dept d,role r where u.dept_id=d.id and u.role_id=r.id and u.login_name='xiaohong';
    +-----------+------------+-----------+-----------+
    | user_name | login_name | dept_name | role_name |
    +-----------+------------+-----------+-----------+
    | 小红      | xiaohong   | 运维部    | 普通用户  |
    +-----------+------------+-----------+-----------+
    1 row in set (0.00 sec)
    
    3、删除用户小红。
    mysql> delete from user where login_name='xiaohong';
    Query OK, 1 row affected (0.00 sec)
    

    四、部门管理

    1、查询所有部门信息。
    mysql> select*from dept;
    +----+-----------+-------------+
    | id | dept_name | create_date |
    +----+-----------+-------------+
    |  1 | 行政部    | 2018-06-03  |
    |  2 | 后勤部    | 2018-06-03  |
    |  3 | 运维部    | 2018-06-03  |
    +----+-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> insert into dept values('4','办公室','2020-12-02');
    Query OK, 1 row affected (0.02 sec)
    
    2、新增一个办公室部门,创建时间为2020-12-02。
    mysql> insert into dept values('4','办公室','2020-12-02');
    Query OK, 1 row affected (0.02 sec)
    

    五、用户信息查询视图

    针对用户表user、部门表dept、角色表role建立一个用户信息查询视图user_info_view,查询用户编号、姓名、登录名称。
    mysql> create or replace view user_info_view
        as
        select u.id,u.user_name,u.login_name
        from user u,dept d,role r
        where u.dept_id=d.id and u.role_id=r.id;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> select*from user_info_view;
    +----+-----------+------------+
    | id | user_name | login_name |
    +----+-----------+------------+
    |  2 | 小影      | xiaoying   |
    |  3 | 大梅      | damei      |
    |  4 | admin     | admin      |
    +----+-----------+------------+
    3 rows in set (0.02 sec)
    

    其为简洁化,需要全面的微信私信我!

    更多相关内容
  • E2 Mysql的基本操作和用户权限 一、实验目的: 要求掌握Mysql平台的基本操作和基本的权限管理。 二、实验要求: 1、基本硬件配置:英特尔Pentium III 以上,大于4G内存; 2、软件要求:Mysql; 3、时间:4小时; 4、撰写...

    E2 Mysql的基本操作和用户权限

    一、实验目的:
    要求掌握Mysql平台的基本操作和基本的权限管理。

    二、实验要求:
    1、基本硬件配置:英特尔Pentium III 以上,大于4G内存;
    2、软件要求:Mysql;
    3、时间:4小时;
    4、撰写实验报告并按时提交。

    三、实验内容:
    Group 1: 安装Mysql for window or for linux
    (1)从Mysql网站下载软件;
    http://downloads.mysql.com/archives/installer/(mysql-installer-community-8.0.12.0.msi)
    (2)把它安装在你的电脑上;
    (3)设置windows环境路径;
    (4)启动Mysql服务器。

    Group 2:登录Mysql服务器通过以下方法:
    (1) HeidiSQL
    (2) CDM:Mysql –u username -p
    (3)带IP地址的用户创建,然后链接Mysql

    解决方案:
    https://blog.csdn.net/u010026255/article/details/80062153

    Group 3: mysql下创建一个新用户的方法:
    例子:创建用户“movie_user”@”*”by“123456”;
    用户名@IP地址用户只能该IP下才能访问
    用户名@192.168.1.%用户只能在该IP段下才能访问(通配符%表示任意)
    用户名@ %用户可以在任意IP下访问(默认IP地址为%)
    修改密码: set password for ‘用户名’@‘IP地址’ = ‘新密码’;
    自己修改密码:set password = ‘123’;

     create user 'laurie'@'localhost' identified by '123456789';
    

    在这里插入图片描述

    set password for 'laurie'@'localhost' = '123456';
    

    在这里插入图片描述

    Group 4:grant和revoke
    1.查看某个mysql用户的权限:show grants for ‘用户’@'IP地址

    2、给某个用户授权:grant 权限 on 数据库.表 to ‘用户’@‘IP地址’;
    选择至少6种权限进行操作和验证。

    grant select on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    grant insert on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    grant update on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    grant alter on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    grant delete on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    grant create view on example.emp to 'laurie'@'localhost';
    

    在这里插入图片描述

    show grants for 'laurie'@'localhost';
    

    在这里插入图片描述

    表示有所有的权限,除了grant这个命令,这个命令是root才有的。

    grant all privileges on db1.t1 to “mjj”@’%’;
    //all privileges 除grant外的所有权限,
    select 仅查权限
    select,insert 查和插入权限

    usage 无访问权限
    alter 使用alter table
    alter routine 使用alter procedure和drop procedure
    create 使用create table
    create routine 使用create procedure
    create temporary tables 使用create temporary tables
    create user
    // 使用create user、drop user、rename user和revoke all privileges
    create view 使用create view
    delete 使用delete
    drop 使用drop table
    execute 使用call和存储过程
    file 使用select into outfile 和 load data infile
    grant option 使用grant 和 revoke
    index 使用index
    insert 使用insert
    lock tables 使用lock table
    process 使用show full processlist
    select 使用select
    show databases 使用show databases
    show view 使用show view
    update 使用update
    reload 使用flush
    shutdown 使用mysqladmin shutdown(关闭MySQL)
    super 使用change master、kill、logs、purge、master和set global。还允许mysqladmin 调试登陆
    replication client 服务器位置的访问
    replication slave 由复制从属使用

          3、从某个用户收回权力并验证revoke:revoke priv_type on database.table from user
    
    revoke create view on example.emp from 'laurie'@'localhost';
    

    在这里插入图片描述

    Group 5:Role角色模拟演示
    1、创建角色
    CREATE ROLE ‘app_developer’, ‘app_read’, ‘app_write’; --创建了3个角色

    create role 'app_develop', 'app_read', 'app_write';
    

    在这里插入图片描述

    2、赋予角色权限
    GRANT ALL ON app_db.* TO ‘app_developer’; – 给app_db数据库中所有表的所有权限

    grant all on example.* to'app_develop';
    

    在这里插入图片描述

    GRANT SELECT ON app_db.* TO ‘app_read’; – app_db数据库中所有表的查询权限

    grant select on example.* to 'app_read';
    

    在这里插入图片描述

    GRANT INSERT, UPDATE, DELETE ON app_db.* TO ‘app_write’; --app_db数据库中所有表的修改权限

    grant insert, update, delete on example.* to 'app_write';
    

    在这里插入图片描述

    3、赋予账户角色
    创建4个用户
    CREATE USER ‘dev1’@‘localhost’ IDENTIFIED BY ‘dev1pass’;

    create user 'dev1'@'localhost' identified by 'dev1pass';
    

    在这里插入图片描述

    CREATE USER ‘read_user1’@‘localhost’ IDENTIFIED BY ‘read_user1pass’;
    CREATE USER ‘read_user2’@‘localhost’ IDENTIFIED BY ‘read_user2pass’;

    create user 'read_user2'@'localhost' identified by 'read_user2';
    

    在这里插入图片描述

    CREATE USER ‘rw_user1’@‘localhost’ IDENTIFIED BY ‘rw_user1pass’;

    create user 'write_user3'@'localhost' identified by 'write_user3';
    

    在这里插入图片描述

    赋予角色
    GRANT ‘app_developer’ TO ‘dev1’@‘localhost’;

    grant 'app_develop' to 'dev1'@'localhost';
    

    在这里插入图片描述

    GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
    grant 'app_read' to 'read_user2'@'localhost';
    

    在这里插入图片描述

    GRANT ‘app_read’, ‘app_write’ TO ‘rw_user1’@‘localhost’;

    grant 'app_read', 'app_write' to 'write_user3'@'localhost';
    

    在这里插入图片描述

    4、角色激活
    查看当前会话已激活的角色
    SELECT CURRENT_ROLE();

    select current_role();
    

    在这里插入图片描述

    设置默认激活的角色
    – 为下面4个用户默认激活所有已拥有的角色
    SET DEFAULT ROLE ALL TO
    ‘dev1’@‘localhost’,
    ‘read_user1’@‘localhost’,
    ‘read_user2’@‘localhost’,
    ‘rw_user1’@‘localhost’;

    set default role all to 'dev1'@'localhost','read_user2'@'localhost','write_user3'@'localhost';
    

    在这里插入图片描述

    运行时激活:set role app_developer;
    在这里插入图片描述

    Group 6: 综合实验
    假设有一个员工管理系统的数据库exam,包括以下表格: student, grade,course三个,分别表示学生表、成绩表和课程表,表格结构风别如下:
    Student(stuid, stuname, birthday, Classid); course(cid, cname, credit); grade(stuid,cid,score);
    学生(学号,学生姓名,生日,班级号)
    课程(课程号,课程名,学分)
    成绩(学号,课程号,分数)
    1、root设计ManagerTeacher用户
    ManagerTeacher用户:该用户负责创建以上数据库及三个表,拥有所有的权限,并负责给所有任课老师、班主任和学生分别创建一个用户(每种角色创建2个用户),并根据要求进行角色构建与授权、或者基于用户的授权,使得他们拥有以下的访问权限(可利用角色与视图):
    任课教师:拥有该老师相关课程成绩的所有操作权限(已知任课老师与课程编号的对应关系);
    班主任:拥有查询他管理的班级的所有学生与成绩信息、所有课程信息;
    学生:拥有对该学生自身成绩信息的查询权限;

    2、验证您的权限设置。
    您可能根据角色的合理需求执行以下操作:创建角色、授予角色特权、create用户、授予用户角色、操作数据、验证设置。要求写下整个过程的所有合理步骤。

    create user managerteacher identified by '123456';
    

    在这里插入图片描述

    grant all privileges on *.* to managerteacher;
    在这里插入图片描述

    exit
    mysql -u managerteacher -p
    

    Enter password: 123456
    在这里插入图片描述

    create database exam;
    

    在这里插入图片描述

    use exam;
    

    在这里插入图片描述

    create table student(stuid int primary key, stuname varchar(20), birthday datetime, classid int);
    

    在这里插入图片描述

    create table course(cid int primary key, cname varchar(20), credit int);
    

    在这里插入图片描述

    create table grade(stuid int primary key, cid int, score int);
    

    在这里插入图片描述

    create user 'student' identified by '123456';
    

    在这里插入图片描述

    create user 'instructor' identified by '123456';
    

    在这里插入图片描述

    create user 'head_teacher' identified by '123456';
    

    在这里插入图片描述

    create role 'select_role', 'class_role', 'course_role';
    

    在这里插入图片描述

    grant select on exam.grade to 'select_role';
    

    在这里插入图片描述

    grant all privileges on exam.grade to class_role;
    

    在这里插入图片描述

    grant all privileges on exam.student to class_role;
    

    在这里插入图片描述

    grant all privileges on exam.course to course_role;
    

    在这里插入图片描述

    grant 'select_role' to 'student';
    

    在这里插入图片描述

    grant 'course_role' to 'instructor';
    

    在这里插入图片描述

    grant 'class_role' to 'head_teacher';
    

    在这里插入图片描述

    grant 'course_role' to 'head_teacher';
    

    在这里插入图片描述

    验证班主任:

    set role select_role;
    

    在这里插入图片描述

    select * from exam.grade;
    

    在这里插入图片描述

    mysql -u head_teacher -p
    

    Enter password: 123456
    在这里插入图片描述

    set role class_role, course_role;
    

    在这里插入图片描述

    insert into exam.grade values(2, 2, 93);
    

    在这里插入图片描述

    insert into exam.course values(2, '大学物理', 1);
    

    在这里插入图片描述

    验证任课老师:

    mysql -u instructor -p
    

    Enter password: 123456
    在这里插入图片描述

    set role 'course_role';
    

    在这里插入图片描述

    select * from exam.course;
    

    在这里插入图片描述

    验证学生:

    mysql -u student -p
    

    Enter password: 123456
    在这里插入图片描述

    set role 'select_role';
    

    在这里插入图片描述

    select * from exam.grade where stuid = 1;
    

    在这里插入图片描述

    总结:
    本次实验让我对于角色,用户,权限等有了充分的认识,能够对于不同的用户赋予不同的角色以达到给予不同权限的目的.


    新手上路,有错请指正;

    展开全文
  • JSP综合素质评价管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 系统管理权限,具有以下功能: 用户管理模块:...
  • 数据安全控制 一实验目的: 熟练掌握SQL SERVER数据库中使用SQL命令方式对视图的创建修改与删除熟练掌握SQL SERVER数据库中用户和角色的创建修改和删除在第一次实验的基础上对用户和角色对表和视图的访问进行权限控制...
  • 用户角色权限设计(转)

    千次阅读 2021-01-27 02:48:09
    文章转自http://www.cnblogs.com/a7345678/archive/2008/09/25/1298838.html实现业务系统中的用户权限管理B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户权限检测可以通过客户端...

    文章转自  http://www.cnblogs.com/a7345678/archive/2008/09/25/1298838.html

    实现业务系统中的用户权限管理

    B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能。因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。下面就让我们一起了解一下如何设计可以满足大部分B/S系统中对用户功能权限控制的权限系统。

    需求陈述

    不同职责的人员,对于系统操作的权限应该是不同的。优秀的业务系统,这是最基本的功能。

    可以对“组”进行权限分配。对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情。所以,系统中就提出了对“组”进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配。

    权限管理系统应该是可扩展的。它应该可以加入到任何带有权限管理功能的系统中。就像是组件一样的可以被不断的重用,而不是每开发一套管理系统,就要针对权限管理部分进行重新开发。

    满足业务系统中的功能权限。传统业务系统中,存在着两种权限管理,其一是功能权限的管理,而另外一种则是资源权限的管理,在不同系统之间,功能权限是可以重用的,而资源权限则不能。

    关于设计

    借助NoahWeb的动作编程理念,在设计阶段,系统设计人员无须考虑程序结构的设计,而是从程序流程以及数据库结构开始入手。为了实现需求,数据库的设计可谓及其重要,无论是“组”操作的概念,还是整套权限管理系统的重用性,都在于数据库的设计。

    我们先来分析一下数据库结构:

    首先,action表(以下简称为“权限表”),gorupmanager表(以下简称为“管理组表”),以及master表(以下简称为“人员表”),是三张实体表,它们依次记录着“权限”的信息,“管理组”的信息和“人员”的信息。如下图:

    f17a439c9337c784aa74a61485b23509.gif

    这三个表之间的关系是多对多的,一个权限可能同时属于多个管理组,一个管理组中也可能同时包含多个权限。同样的道理,一个人员可能同时属于多个管理组,而一个管理组中也可能同时包含多个人员。如下图:

    10251e55a00f178ebef2757e5a299722.gif

    由于这三张表之间存在着多对多的关系,那么它们之间的交互,最好使用另外两张表来完成。而这两张表起着映射的作用,分别是“actiongroup”表(以下简称“权限映射表”)和“mastergroup”表(以下简称“人员映射表”),前者映射了权限表与管理组表之间的交互。后者映射了人员表与管理组表之间的交互。如下图:

    730e5d2786ef2d26fcd35a811b7dfee2.gif

    另外,还需要一张表来控制系统运行时左侧菜单中的权限分栏,也就是“权限分栏表”,如下图:

    95d19a22690acc0b64bdd7d212ba45f3.gif

    根据上面的分析,我们进行数据库结构设计,如下图:

    87259604a2bdf1ff78a3eef15feaf5c9.gif

    为了能够进行良好的分析,我们将数据库结构图拆分开来,三张实体表的作用已经很清晰,现在我们来看一下两张映射表的作用。

    一 权限映射表 如下图:

    首先,我们来了解一下权限映射表与管理组表以及权限表之间的字段关联。

    1f974dd08b6c84663f1ce87010e0b641.gif

    看图中的红圈,先看gorupid字段相关联,这种关联方式在实际数据库中的表现如下图:

    ecca6b24f47cb6f974e4ddbcacf18bb8.gif

    如图中所示,管理组表中“超级管理员”的groupid为1,那么权限映射表中groupid为1的权限也就是“超级管理员”所拥有的权限。

    使用groupid字段关联,是为了查到一个管理组能够执行的权限有哪些。但这些权限的详细信息却是action字段关联所查询到的。

    action字段相关联在数据库中的表现如下图:

    9e578979560a6e7b0470b32e310f0b52.gif

    通过这种关联,才查询到权限映射表之中那些权限的详细信息。综合起来,我们就知道了一个管理组可以执行的权限有哪些,以及这些权限的详细信息是什么。

    或许你会问,为什么不使用actionid字段相关联呢?因为:

    权限表中的id字段在经过多次的数据库操作之后可能会发生更改。

    权限映射表中仅仅记录着一个管理组可以执行的权限。

    一旦权限表中的id更改,那么权限映射表中的记录也就更改了。

    一个管理组可以执行的权限势必将出错,这是非常不希望的。

    考虑到上面的情况,所以应该使用action字段相关联,因为:

    在权限表中,id可能发生变化,而action字段却是在任何情况下也不可能发生变化的。

    权限映射表中记录的action字段也就不会变。

    一个管理组可以执行的权限就不会出错了。

    二 人员映射表 如下图:

    我们来了解一下人员映射表与管理组表以及人员表之间的字段关联,如下图:

    622cc7f01849dda79759802ce59d48c1.gif

    看图中的红圈部分,先看groupid字段关联,这种关联方式在数据库中的表现如下图:

    ae086bd8d6dae204669f2b24c8a42f04.gif

    如图,“超级管理员”组的groupid为1,我们再看人员映射表,admin属于超级管理员组,而administrator属于超级管理员组,同时也属于管理员组。

    使用这种关联方式,是为了查到一个管理组中的人员有谁。和上面一样,人员的详细信息是靠id字段(人员映射表中是masterid字段)关联查询到的。

    id字段(人员映射表中是masterid字段)关联表现在数据库中的形式如下图:

    9ae6f0b2d05a0795b2db92dce8a577f3.gif

    一个人员可能同时属于多个“管理组”,如图中,administrator就同时属于两个“管理组”。所以,在人员映射表中关于administrator的记录就会是两条。

    这种关联方式才查询到管理组中人员的详细信息有哪些。综合起来,才可以知道一个管理组中的人员有谁,以及这个人员的详细信息。

    再结合上面谈到的权限表和权限映射表,就实现了需求中的“组”操作,如下图:

    226b6706602835fa0283898cd8301a6a.gif

    其实,管理组表中仅仅记录着组的基本信息,如名称,组id等等。至于一个组中人员的详细信息,以及该组能够执行的权限的详细信息,都记录在人员表和权限表中。两张映射表才真正记录着一个组有哪些人员,能够执行哪些权限。通过两张映射表的衔接,三张实体表之间的交互才得以实现,从而完成了需求中提到的“组”操作。

    我们再来看一下权限分栏表与权限表之间的交互。这两张表之间的字段关联如下图:

    4d6e9588c9f75aa7619155f2043137cb.gif

    两张表使用了actioncolumnid字段相关联,这种关联方式在数据库中的表现如下图:

    633922588779e5bb7bd79e32ebf60c53.gif

    如图所示,通过这种关联方式,我们可以非常清晰的看到权限表中的权限属于哪个分栏。

    现在,数据库结构已经很清晰了,分配权限的功能以及“组”操作都已经实现。下面我们再来分析一下需求中提到的关于权限管理系统的重用性问题。

    为什么使用这种数据库设计方式搭建起来的系统可以重用呢?

    三张实体表中记录着系统中的三个决定性元素。“权限”,“组”和“人”。而这三种元素可以任意添加,彼此之间不受影响。无论是那种类型的业务系统,这三个决定性元素是不会变的,也就意味着结构上不会变,而变的仅仅是数据。

    两张映射表中记录着三个元素之间的关系。但这些关系完全是人为创建的,需要变化的时候,只是对数据库中的记录进行操作,无需改动结构。

    权限分栏表中记录着系统使用时显示的分栏。无论是要添加分栏,修改分栏还是减少分栏,也只不过是操作记录而已。

    综上所述,这样设计数据库,系统是完全可以重用的,并且经受得住“变更”考验的。

    总结:

    此套系统的重点在于,三张实体表牢牢地抓住了系统的核心成分,而两张映射表完美地映射出三张实体表之间的交互。其难点在于,理解映射表的工作,它记录着关系,并且实现了“组”操作的概念。而系统总体的设计是本着可以在不同的MIS系统中“重用”来满足不同系统的功能权限设置。

    附录:

    权限管理系统数据表的字段设计

    下面我们来看看权限管理系统的数据库表设计,共分为六张表,如下图:

    action表:

    15c15869d9a4a4f84ba93a9701bb8e21.gif

    action表中记录着系统中所有的动作,以及动作相关描述。

    actioncolumn表:

    ff43fe6f5c69ef1dfac5b70e16b09a0d.gif

    actioncolumn表中记录着动作的分栏,系统运行时,左侧菜单栏提供了几块不同的功能,每一块就是一个分栏,每添加一个分栏,该表中的记录就会增加一条,相对应的,左侧菜单栏中也会新增机一个栏。

    actiongroup表:

    b15a5fd85bf64abe875295d5f2eef5df.gif

    actiongroup表记录着动作所在的组。

    groupmanager表:

    036e569028b6060c79ae69ddaf7114d9.gif

    groupmanager表记录着管理组的相关信息,每添加一个管理组,这里的记录就会增加一条。

    mastergroup表:

    c0f19489ae184654deaa8e060dfa83e7.gif

    mastergroup表记录着管理员所在的管理组,由于一名管理员可能同同时属于多个组,所以该表中关于某一名管理员的记录可能有多条。

    master表:

    49fc66cccb8d690c7e33dd15add01942.gif

    master表记录着所有管理员的信息,每添加一个管理员,该表就会增加一条记录。

    展开全文
  • 4、数据库的选型,根据系统的数据规模与需求方的相关要求,综合多方考量,调研多种数据库后选定mysql为系统数据库;5、运行环境根据功能模块的特点,选型window server2008+IIS,部署更简洁;6、使用报表导出开源...
  • 基于安卓个人财务管理系统是一套完善的WEB+android设计系统,对理解JSP java,安卓app编程开发语言有帮助(系统采用web服务端+APP端 综合模式进行设计开发),系统具有完整的源代码和数据库,系统主要采用B/S模式...
  • E2 Mysql的基本操作和用户权限 Mysql平台的基本操作和基本的权限管理。 Group 1: 安装Mysql for window or for linux (1)从Mysql网站下载软件; http://downloads.mysql.com/archives/installer/(mysql-installer...

    E2 Mysql的基本操作和用户权限

    • Mysql平台的基本操作和基本的权限管理。

    • Group 1: 安装Mysql for window or for linux
      (1)从Mysql网站下载软件;
      http://downloads.mysql.com/archives/installer/(mysql-installer-community-8.0.12.0.msi)
      (2)把它安装在你的电脑上;
      (3)设置windows环境路径;
      (4)启动Mysql服务器。

    • Group 2:登录Mysql服务器通过以下方法:
      (1) HeidiSQL
      (2) CDM:Mysql –u username -p
      (3)带IP地址的用户创建,然后链接Mysql
      解决方案:
      https://blog.csdn.net/u010026255/article/details/80062153

    • Group 3: mysql下创建一个新用户的方法:
      例子:创建用户“movie_user”@”*”by“123456”;
      用户名@IP地址用户只能该IP下才能访问
      用户名@192.168.1.%用户只能在该IP段下才能访问(通配符%表示任意)
      用户名@ %用户可以在任意IP下访问(默认IP地址为%)
      在这里插入图片描述
      在这里插入图片描述
      修改密码: set password for ‘用户名’@‘IP地址’ = ‘新密码’;
      自己修改密码:set password = ‘123’;
      在这里插入图片描述

    • Group 4:grant和revoke
      1.查看某个mysql用户的权限:show grants for ‘用户’@'IP地址
      在这里插入图片描述
      2、给某个用户授权:grant 权限 on 数据库.表 to ‘用户’@‘IP地址’;
      选择至少6种权限进行操作和验证。

      # 表示有所有的权限,除了grant这个命令,这个命令是root才有的。
      grant all privileges on db1.t1 to “mjj”@’%’;
      //all privileges 除grant外的所有权限,
      select 仅查权限
      select,insert 查和插入权限

      usage 无访问权限
      alter 使用alter table
      alter routine 使用alter procedure和drop procedure
      create 使用create table
      create routine 使用create procedure
      create temporary tables 使用create temporary tables
      create user
      // 使用create user、drop user、rename user和revoke all privileges
      create view 使用create view
      delete 使用delete
      drop 使用drop table
      execute 使用call和存储过程
      file 使用select into outfile 和 load data infile
      grant option 使用grant 和 revoke
      index 使用index
      insert 使用insert
      lock tables 使用lock table
      process 使用show full processlist
      select 使用select
      show databases 使用show databases
      show view 使用show view
      update 使用update
      reload 使用flush
      shutdown 使用mysqladmin shutdown(关闭MySQL)
      super 使用change master、kill、logs、purge、master和set global。还允许mysqladmin 调试登陆
      replication client 服务器位置的访问
      replication slave 由复制从属使用

      分别将仅查权限、insert权限、create权限、create view权限、撤销权限和删除权限赋予给movie_user这个用户:
      在这里插入图片描述
      进行select权限验证:
      在这里插入图片描述
      进行insert权限验证:
      在这里插入图片描述
      进行create权限验证:
      在这里插入图片描述
      在这里插入图片描述
      进行create view权限验证:
      在这里插入图片描述
      进行drop权限验证:
      在这里插入图片描述
      进行delete验证:
      在这里插入图片描述
      3、从某个用户收回权力并验证revoke:revoke priv_type on database.table from user
      在这里插入图片描述
      在这里插入图片描述

    • Group 5:Role角色模拟演示
      1、创建角色
      CREATE ROLE ‘app_developer’, ‘app_read’, ‘app_write’; --创建了3个角色
      在这里插入图片描述
      2、赋予角色权限
      GRANT ALL ON app_db.* TO ‘app_developer’; – 给app_db数据库中所有表的所有权限
      GRANT SELECT ON app_db.* TO ‘app_read’; – app_db数据库中所有表的查询权限
      GRANT INSERT, UPDATE, DELETE ON app_db.* TO ‘app_write’; --app_db数据库中所有表的修改权限
      在这里插入图片描述
      3、赋予账户角色
      创建4个用户
      CREATE USER ‘dev1’@‘localhost’ IDENTIFIED BY ‘dev1pass’;
      CREATE USER ‘read_user1’@‘localhost’ IDENTIFIED BY ‘read_user1pass’;
      CREATE USER ‘read_user2’@‘localhost’ IDENTIFIED BY ‘read_user2pass’;
      CREATE USER ‘rw_user1’@‘localhost’ IDENTIFIED BY ‘rw_user1pass’;
      在这里插入图片描述
      赋予角色
      GRANT ‘app_developer’ TO ‘dev1’@‘localhost’;
      GRANT ‘app_read’ TO ‘read_user1’@‘localhost’, ‘read_user2’@‘localhost’;
      GRANT ‘app_read’, ‘app_write’ TO ‘rw_user1’@‘localhost’;
      在这里插入图片描述
      4、角色激活
      查看当前会话已激活的角色
      SELECT CURRENT_ROLE();
      在这里插入图片描述
      设置默认激活的角色
      – 为下面4个用户默认激活所有已拥有的角色
      SET DEFAULT ROLE ALL TO
      ‘dev1’@‘localhost’,
      ‘read_user1’@‘localhost’,
      ‘read_user2’@‘localhost’,
      ‘rw_user1’@‘localhost’;
      在这里插入图片描述
      运行时激活:set role app_developer;
      在这里插入图片描述

    • Group 6: 综合实验
      假设有一个员工管理系统的数据库exam,包括以下表格: student, grade,course三个,分别表示学生表、成绩表和课程表,表格结构风别如下:
      Student(stuid, stuname, birthday, Classid); course(cid, canme, credit); grade(stuid,cid,score);
      1、root设计ManagerTeacher用户
      ManagerTeacher用户:该用户负责创建以上数据库及三个表,拥有所有的权限,并负责给所有任课老师、班主任和学生分别创建一个用户(每个用户创建2种角色),并根据要求进行角色构建与授权,使得他们拥有以下的访问权限(结合视图):
      任课教师:拥有该老师相关课程成绩的所有操作权限(已知任课老师与课程编号的对应关系);
      班主任:拥有查询他管理的班级的所有学生与成绩信息、所有课程信息;
      学生:拥有对该学生自身成绩信息的查询权限;
      2、验证您的权限设置。
      您可能根据角色的合理需求执行以下操作:创建角色、授予角色特权、create用户、授予用户角色、操作数据、验证设置。要求写下整个过程的所有合理步骤。
      步骤如下:
      使用root用户创建ManagrTeacher,然后ManageTeacher创建exam数据库和该数据库里面的三个表(student、course和grade);
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      2、创建三个用户(学生student、任课老师instructor和班主任class_teacher),给学生分配两个角色select_role(用来查询成绩表)、view_role(用来查询学生表),给认可老师分配两个角色grade_role(关于成绩的所有操作)、course_role(关于课程的所有操作),给班主任两个角色class_role(关于班级学生和成绩的所有操作)、course_role(关于课程的所有操作),共五个角色。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      3、验证学生的权限。
      在这里插入图片描述
      在这里插入图片描述
      4、验证任课教师的权限。
      在这里插入图片描述
      5、验证班主任的权限。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 总结:这次的实验让我们学习到了建立用户,建立角色,并将不同的角色分配给不同的用户,实现用户的不同功能、权限的控制,进一步体现了数据库管理的魅力。其中想要managerteacher用户能够进一步分配给其他人的话,记得root用户给managerteacher权限的时候加上with grant option(这很关键)。最后,我们在建立这样子的体系的过程中,一定要保证各个用户的功能,他们之间的区别、分界线。

    展开全文
  • 系统的组织架构如图所示,三种用户根据自己不同的权限对课题、文档、成绩、公告、任务五种数据信息进行处理,不同用户角色再根据这些数据信息进行交互通过课题进行交互,并且围绕着文档进行数据的传递和处理等。...
  • 整套博客系统开箱即用,对elemen-ui二次封装组件非常便利,管理权限模块,用户登录,验证码,token验证,文章编辑,修改,查看,发布,评论,分类查询,站点配置,音乐配置等等node.js + mysql博客全栈系统源码,...
  • 第9章算法 MySQL 数据库应用实战教 课程名称 项目名称 MySQL 管理 程慕课版 任务名称 MySQL 管理 课时 2 项目性质 演示性 验证性 设计性 综合性 授课班级 授课日期 授课地点 能力目标 具备进行MySQL 管理的能力 知识...
  • 4、数据库的选型,根据系统的数据规模与需求方的相关要求,综合多方考量,调研多种数据库后选定mysql为系统数据库;  5、运行环境根据功能模块的特点,选型window server2008+IIS,部署更简洁;  6、使用报表导出...
  • 基于 SpringBoot + Mybatis Plus + Shiro + mysql + redis构建的智慧云智能教育平台。架构上使用完全前后端分离。 支持多种题型:选择题、多选题、判断题、填空题、综合题以及数学公式。支持在线考试,教师在线批改...
  • │ 3_MySQL授权用户权限回收.mp4 │ 4_MySQL8新的密码认证方式和客户端链接.mp4 │ 5_MySQL Create命令.mp4 │ 6_MySQL CreateTable命令.mp4 │ 7_课堂练习1.mp4 │ 8_MySQL Insert命令.mp4 │ 9_MySQL Insert课堂...
  • 115cms综合内容管理系统是一款采用当前最流行的ThinkPHP框架开发的高效开源的内容管理系统。本产品完全采用模块化开发,插件主题功能,增加了程序的维护性、可扩展性,使二次开发变得简单、容易,系统设计的模板标签...
  • 发布报表以及创建公共空间管理用户以及用户权限方法 安装完成之后 -- 一、产品背景 Power BI来源于微软公司,第一个商业版本于2015年7月发布 。它是在微软的SQL Server Reporting Services团队中成立的 ...
  • 前端界面主要功能: 1.二手物品交易:类似于一个小型购物...但超级管理员有不同于管理员的权限,系统管理员可增删改查管理员信息。 可适当增加一些简单内容或功能使网页以及后台看起来复杂点,界面相对现代化且美观。
  • MySql入门到精通

    2021-06-17 20:30:57
    付老师带你学习全部MySQL数据库的基础,数据表的常用操作及各种约束的使用,以及综合的运用各种命令实现记录进行CURD、管理用户权限等操作
  • MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存放在 mysql 数据库中,由mysql_install_db 脚本初始化。存储账户权限信息表主要有: user 、 db 、 host 、 tables_priv 、columns_priv和procs_priv。 ...
  • PAGE PAGE 3 第9章算法 课程名称 MySQL数据库应用实战教程慕课版 项目名称 MySQL管理 任务名称 MySQL管理 课时 2 项目性质 演示性 验证性 设计性 综合性 授课班级 授课日期 授课地点 教学目标 能力目标 具备进行...
  • MySQL详解(二):权限与安全

    千次阅读 2018-08-05 15:45:23
    MySQL权限系统主要用来监测数据库用户是否属于合法的用户,如果是合法的用户,则赋予相应的数据库使用权限。 数据库的安全性在很大的程度上跟数据库的权限系统有很大的关系,不当的权限设置可能会导致各种各样的...
  • 内容索引:JAVA源码,综合应用,选修... 用户管理模块(权限控制)  修改密码模块  操作日志管理模块  数据库初始化模块  学生、教师、课程的添加、修改、删除、查询等模块  学生信息录入模块  课程信息浏览(查询
  • 4、数据库的选型,根据系统的数据规模与需求方的相关要求,综合多方考量,调研多种数据库后选定mysql为系统数据库; 5、运行环境根据功能模块的特点,选型window server2008+IIS,部署更简洁; 6、使用报表导出开源...
  • 图书馆综合管理系统

    2015-05-29 23:10:16
    练手写的图书管理系统, 单个程序根据登陆用户权限分成管理员跟读者两个部分, 有部分功能通用,初步设计界面简单
  • MySQL技术内幕——MySQL的基本管理 学习参考资料: 《MySQL技术内幕》第5版
  • MySQL建表语句综合

    千次阅读 2022-02-08 20:26:42
    带主键和外键,索引,和约束条件的 ... Source Server : MySQL_local Source Server Type : MySQL Source Server Version : 80026 Source Host : localhost:3306 Source Schema : ljp_jxc Target Server Type .
  • (一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4...
  • - [x] RABC管理(系统用户-角色-菜单权限) - [x] 宽带业务客户、套餐产品、订单设计 - [x] 套餐续费 - [x] task定时任务——生成到期订单的提醒公告 - [x] 强化输入组件的数据联动 - [x] 更换druid数据连接池 - [x]...
  • MySQL:用户管理

    2015-11-18 12:19:05
    【例13.1】使用root用户登录到本地mysql服务器的test库中 mysql -uroot -p -hlocalhost test 【例13.2】使用root用户登录到本地mysql服务器的test库中,执行一条查询语句 mysql -uroot -p -hlocalhost test -e ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,248
精华内容 7,699
热门标签
关键字:

mysql综合管理用户权限

mysql 订阅