From 398d2c6e262a6b8bac29d32e41ce5ea3f20d7fa9 Mon Sep 17 00:00:00 2001 From: typingbugs <21281280@bjtu.edu.cn> Date: Sun, 7 Apr 2024 23:20:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90lab4?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assignments/Assignment4/src/privilege.sql | 35 ++++++++++++++ Assignments/Assignment4/src/view_test.sql | 59 +++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 Assignments/Assignment4/src/privilege.sql create mode 100644 Assignments/Assignment4/src/view_test.sql diff --git a/Assignments/Assignment4/src/privilege.sql b/Assignments/Assignment4/src/privilege.sql new file mode 100644 index 0000000..e1fbdd5 --- /dev/null +++ b/Assignments/Assignment4/src/privilege.sql @@ -0,0 +1,35 @@ +DROP USER 'ticketAgent'@'localhost'; +DROP USER 'stationManager'@'localhost'; +DROP USER 'adminUser'@'localhost'; + +FLUSH PRIVILEGES; + +CREATE USER 'ticketAgent'@'localhost' IDENTIFIED BY 'password123'; +CREATE USER 'stationManager'@'localhost' IDENTIFIED BY 'password123'; +CREATE USER 'adminUser'@'localhost' IDENTIFIED BY 'password123'; + + +GRANT SELECT, INSERT ON DBLab.Tickets TO 'ticketAgent'@'localhost'; +GRANT ALL PRIVILEGES ON DBLab.Stations TO 'stationManager'@'localhost'; +GRANT SELECT, INSERT, UPDATE, DELETE ON DBLab.* TO 'adminUser'@'localhost'; + + +REVOKE INSERT ON DBLab.Tickets FROM 'ticketAgent'@'localhost'; + +GRANT SELECT(Price) ON DBLab.Tickets TO 'ticketAgent'@'localhost'; +GRANT UPDATE(Name, City) ON DBLab.Stations TO 'stationManager'@'localhost'; + +CREATE ROLE 'ticketRole'; +CREATE ROLE 'stationRole'; + + +GRANT SELECT, INSERT ON DBLab.Tickets TO 'ticketRole'; +GRANT SELECT, UPDATE ON DBLab.Stations TO 'stationRole'; + + +GRANT 'ticketRole' TO 'ticketAgent'@'localhost'; +GRANT 'stationRole' TO 'stationManager'@'localhost'; + +REVOKE 'ticketRole' FROM 'ticketAgent'@'localhost'; + +FLUSH PRIVILEGES; diff --git a/Assignments/Assignment4/src/view_test.sql b/Assignments/Assignment4/src/view_test.sql new file mode 100644 index 0000000..baf10c5 --- /dev/null +++ b/Assignments/Assignment4/src/view_test.sql @@ -0,0 +1,59 @@ +DROP VIEW +IF + EXISTS v_TrainRoutes; +DROP VIEW +IF + EXISTS v_StayTimes; +DROP VIEW +IF + EXISTS v_TrainStationCounts; +CREATE VIEW v_TrainRoutes AS SELECT +ID AS TrainID, +StationID_start, +StationID_arrive +FROM + Trains; +CREATE VIEW v_StayTimes AS SELECT +TrainID, +StationID, +arrive_time, +leave_time, +TIMEDIFF( leave_time, arrive_time ) AS StayDuration +FROM + Passbys; +CREATE VIEW v_TrainStationCounts AS SELECT +TrainID, +COUNT( StationID ) AS StationCount +FROM + Passbys +GROUP BY + TrainID; +SELECT + * +FROM + v_StayTimes +WHERE + TrainID = 'G103'; +UPDATE v_StayTimes +SET StationID = 3 +WHERE + TrainID = 'G103' + AND arrive_time = '2024-03-28 07:13:00'; +SELECT + * +FROM + v_StayTimes +WHERE + TrainID = 'G103'; +DELETE +FROM + v_StayTimes +WHERE + TrainID = 'G103' + AND arrive_time = '2024-03-28 07:13:00'; +SELECT + * +FROM + v_StayTimes +WHERE + TrainID = 'G103'; \ No newline at end of file