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