Способ безопасного выполнения sql — запросов от пользователей?
Да, нужно изолировать, например с помощью контейнеров- докер.
Вот  пример готово решения, далее делаете к нему свою обвязку, чтобы для каждого пользователя запускался свой контейнер.
Вопрос нагрузки/ресурсов отдельный вопрос.
выполнять сырые sql
Любая СУБД предоставляет широкое управление доступом, поэтому вполне можно этим вопользоваться. Если учебные таблицы нужно только читать, то можно держать их в одном месте, ограничив доступ только на чтение. Т.к. менять данные они будут только свои, то лочить друг друга не смогут. Также надо посмотреть лимиты для кол-во данных, которые пользователи могут залить в БД. Лимитировать кол-во создаваемых БД. 
Несмотря на все, разумеется, лучше весь этот зоопарк держать на отдельной СУБД.
Можно, конечно, сделать это и через контейнеры. Но такая изоляция здесь не особо нужна, а накладные расходы будут очень велики, если у вас не 2 пользователя.