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

133 阅读6分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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

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

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

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

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

解决方案: blog.csdn.net/u010026255/…

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;

在这里插入图片描述

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


新手上路,有错请指正;