Задание 3

dump.sh
#!/bin/bash -
mysqldump students_db | xz > "db_dump_$(date + '%Y-%m-%d').sql.xz"
find . -type f -mtime +7 -delete
db_dump.service
[Unit]
Description=Dump DB every day
 
[Service]
Type=oneshot
Execstart=/home/user/sh/db_dump
db_dump.timer
[Unit]
Description=Timer for db_dump.service
 
[Timer]
OnUnitActiveSec=1d
Unit=db_dump.service
 
[Install]
WantedBy=multi-user.target

Задание 4

dump.sh
#!/bin/bash -
mysqldump -u test -ptest students_db \
  | xz > "db_dump_$(date + '%Y-%m-%d').sql.xz"
find . -type f -mtime +7 -delete

Чтобы дать возможность новому юзеру делать бэкапы, нужно дать ему три разрешения: SELECT, LOCK TABLES, PROCESS.
С первыми двумя, я не думаю, что могут возникнуть проблемы с безопасностью. Но разрешение PROCESS дает право с помощью команды show processlist просматривать чужие соединения и в виде plain текста все чужие запросы, включая запросы root. Опасность главная в том, что в этот список попадают еще и запросы на изменение и установку паролей (тоже plain текстом).