Поскольку MySQL не имеет концепции ролей, вы должны либо использовать различные базы данных пользователей MySQL и базы данных для достижения того же логического разделения данных. Эффективно, после определения контекста, вам нужно подключиться к mysql, используя другую учетную запись пользователя myswl и другую базу данных по умолчанию. Недостатком является то, что это решение сделает инертный пул соединений. К счастью, в MySQL установление нового соединения с базой данных происходит быстро и не требует слишком большого количества ресурсов.
В качестве альтернативы вы можете использовать единую базу данных и учетную запись пользователя mysql и различать пользователей на уровне учетной записи пользователя приложения. Очевидно, это означает, что данные ваших пользователей не будут иметь такое же логическое разделение, как у вас в настоящее время, но вы все равно можете использовать пул соединений.
В качестве третьей альтернативы с ограниченным числом пользователей вы можете использовать ту же учетную запись пользователя mysql и базу данных по умолчанию для подключения к mysql, но хранить фактические данные пользователя в отдельных базах данных, доступных только с использованием отдельных учетных записей пользователей mysql. Однако в этой базе данных по умолчанию создайте отдельный views для каждой таблицы в пользовательских базах данных. В инструкции create view задайте условие definer учетной записи пользователя mysql, которая может получить доступ к данной базе данных, где хранится таблица, и установить условие безопасности sql для определения. Таким образом, вы все равно можете использовать пул соединений, поскольку соединения выполняются с использованием общего идентификатора пользователя в базе данных по умолчанию. Данные клиента будут логически разделены в базах данных. Недостатком является то, что через представления в базе данных по умолчанию все данные будут доступны, и любые изменения в базовой структуре данных должны также отражаться в представлениях.