我有一个 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
不仅可以访问创建新数据库,还可以访问表。
如何解决?
你可以这样做:
那些。您为具有“new_user_”前缀的用户分配一个命名空间 - 他可以在其中做任何他想做的事情,同时可以访问任何具有此类前缀的数据库(例如,
new_user_db1
或new_user_superdatabase
)。