I want to have multiple a MySQL users to be able to issue commands like
CREATE DATABASE dbTest;
But I also want each of t
Create a stored procedure that is defined by the admin user and invokes with the admin user privileges by using SQL SECURITY DEFINER. In the stored procedure,
Use USER() to get the current user login details.
Find out more about SQL SECURITY DEFINER.
You can use
GRANT ALL PRIVILEGES ON `testuser_%` . * TO 'testuser'@'%';
to grant the user testuser
privileges on all databases with names beginning with testuser_
.
EDIT: I'm not sure if this user is now also allowed to create databases.
Yes, this allows the testuser
to create databases limited to names starting with testuser_
You can use
GRANT ALL PRIVILEGES ON `testuser\_%` . * TO 'testuser'@'%';
to grant the user testuser
privileges on all databases with names beginning with testuser_
.
This allows the testuser to create databases limited to names starting with testuser_
It is impossible to do this using permissions only .
The workaround as suggested in another answer:
GRANT ALL PRIVILEGES ON
testuser_%. * TO 'testuser'@'%';
has the problem that the users must then be very careful in naming their databases.
For example if user aaa
creates database bbb_xyz
, it can then be accessed exclusively by user bbb
but not by user aaa
.