Как создать юзера и дать ему доступ к серверу, чтоб он мог создавать свои БД и делать с ними все, но только с теми которые он сам создал?
У меня есть MySQL сервер и там мои БД, я хочу создать нового юзера и дать ему возможность создавать свои БД со своими таблицами и выполнять на них все команды, но только на тех БД которые он сам создал.
Те которые были созданы до него или которые будут создаваться другими юзерами после, он не может ничего с ними делать (лучше всего, чтоб он даже не видел их в списках).
На данный момент у то что у меня получилось
mysql -u root -p
CREATE USER 'new_user'@'new_user_ip' IDENTIFIED BY 'password';
GRANT CREATE ON *.* TO 'new_user'@'new_user_ip';
FLUSH PRIVILEGES;
Но, это работает не совсем так как нужно
- Юзер не может выполнять команды на таблицах (вставка, удаление и т.д.).
- Если я на своем root юзере создаю
my_root_user_created_new_dbБД, тоnew_userвидит ее. - Он может создавать в
my_root_user_created_new_dbновые таблицы (да он не может делать INSERT, SELECT и т.д, но он может создавать таблицы в тех БД которые он не создавал) и это понятно так какGRANT CREATEдает доступ не только к созданию новых БД но и таблиц.
Как это исправить?
Ответы (1 шт):
Можно сделать так:
CREATE USER 'new_user'@'new_user_ip' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON 'new_user_%'.* TO 'new_user'@'new_user_ip';
Т.е. вы выделяете пользователю пространство имён с префиксом "new_user_" - и он может делать в нём то, что захочет, при этом имеет доступ к любым базам с таким префиксом (например, new_user_db1 или new_user_superdatabase).