您现在的位置是:首页 >技术教程 >MySQL:触发器、权限管理网站首页技术教程

MySQL:触发器、权限管理

淬炼之火 2024-06-17 11:18:57
简介MySQL:触发器、权限管理

一、学习目标

  1. 了解什么是触发器
  2. 掌握创建触发器的方法
  3. 掌握查看触发器的方法
  4. 掌握触发器的使用技巧
  5. 掌握删除触发器的方法
  6. 熟练掌握使用触发器的方法和技巧
  7. 了解什么是权限表
  8. 掌握权限表的用法
  9. 掌握账户管理的方法
  10. 掌握权限管理的方法
  11. 掌握访问控制的方法
  12. 熟练掌握新建用户的方法和技巧
  13. 了解什么是数据备份
  14. 掌握各种数据备份的方法
  15. 掌握各种数据恢复的方法
  16. 掌握数据库迁移的方法
  17. 掌握表的导入和导出方法
  18. 熟练掌握数据备份与恢复的方法和技巧

二、实验内容

  1. 掌握触发器的创建和调用方法

下面是创建触发器的实例,每更新一次persons表的num字段后都要更新sales表对应的sum字段。其中,persons表结构、sales表结构以及persons表结构的内容如下所示,按照后面的具体要求完成操作。

persons表结构

字段名

数据类型

主键

外键

非空

唯一

自增

name

varchar(40)

num

int

sales表结构

字段名

数据类型

主键

外键

非空

唯一

自增

name

varchar(40)

num

int

persons表结构

name

num

xiaoming

20

xiaojun

69

步骤如下:

①创建一个业务统计表persons

②创建一个销售额表sales

③创建一个触发器

④向persons表中插入记录

2.掌握创建用户和授权的方法。步骤如下:

①打开MySQL客户端工具,输入登录命令,登录MySQL

②选择MySQL数据库为当前数据库

③创建新账户,用户名称为newAdmin,密码为pw123

④分别从user表中查看新账户的账户信息

⑤使用SHOW GRANTS语句查看newAdmin的权限信息

⑥使用newAdmin用户登录MySQL

⑦使用newAdmin用户查看test_db数据库中person表中的数据

⑧使用newAdmin用户向person表中插入一条新记录,查看语句执行结果

⑨退出当前登录,使用root用户重新登录,收回newAdmin账户的权限

⑩删除newAdmin的账户信息

1.1-1.2

 create table persons(name varchar(40) not null,num int not null);
 create table sales(name varchar(40) not null,num int not null);

 1.3-1.4

create trigger per_sales
after insert on persons
for each row
insert into sales values(new.name,new.num);




insert into persons(name,num)values('xiaoming',20),('xiaojun',69);

 2.1-2.4

CD C:Program FilesMySQLMySQL Server 8.0in

mysql -h localhost -u root -p

use MySQL

create user 'newAdmin' identified by 'pw123';

select user from user;
select * from user where user='newAdmin';

2.5 

show grants for newAdmin;

2.6 

update user set  
Select_priv = 'Y',
Insert_priv= 'Y',
Update_priv = 'Y',
Delete_priv = 'Y',
Create_priv = 'Y',
Drop_priv= 'Y',
Reload_priv = 'Y',
Shutdown_priv = 'Y',
Process_priv = 'Y',
File_priv = 'Y',
Grant_priv= 'Y',
References_priv = 'Y',
Index_priv = 'Y',
Alter_priv= 'Y',
Show_db_priv = 'Y',
Super_priv = 'Y',
Create_tmp_table_priv= 'Y',
Lock_tables_priv = 'Y',
Execute_priv= 'Y',
Repl_slave_priv = 'Y',
Repl_client_priv = 'Y',
Create_view_priv = 'Y',
Show_view_priv = 'Y',
Create_routine_priv= 'Y',
Alter_routine_priv = 'Y',
Create_user_priv = 'Y',
Event_priv = 'Y',
Trigger_priv = 'Y',
Create_tablespace_priv= 'Y'
 where user='newAdmin';
/*在root登录时给予newAdmin账户权限,以便于进行后续操作*/
exit;

CD C:Program FilesMySQLMySQL Server 8.0in
mysql -h localhost -u newAdmin -p
/*输入密码*/

 

 2.7

select * from test_db.persons;

 2.8

use test_db; 
insert into persons(name,num)values('sundayong',35);

 2.9

exit;

CD C:Program FilesMySQLMySQL Server 8.0in

mysql -h localhost -u root -p

2.10

use MySQL;

update user set  
  Select_priv = 'N',
  Insert_priv= 'N',
  Update_priv = 'N',
  Delete_priv = 'N',
  Create_priv = 'N',
  Drop_priv= 'N',
  Reload_priv = 'N',
  Shutdown_priv = 'N',
  Process_priv = 'N',
  File_priv = 'N',
  Grant_priv= 'N',
  References_priv = 'N',
  Index_priv = 'N',
  Alter_priv= 'N',
  Show_db_priv = 'N',
  Super_priv = 'N',
  Create_tmp_table_priv= 'N',
  Lock_tables_priv = 'N',
  Execute_priv= 'N',
  Repl_slave_priv = 'N',
  Repl_client_priv = 'N',
  Create_view_priv = 'N',
  Show_view_priv = 'N',
 Create_routine_priv= 'N',
  Alter_routine_priv = 'N',
  Create_user_priv = 'N',
  Event_priv = 'N',
  Trigger_priv = 'N',
  Create_tablespace_priv= 'N'
 where user='newAdmin';

drop user newAdmin;

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。