我想让多个 MySQL用户能够发出像
这样的命令CREATE DATABASE dbTest;
但我也希望这些用户能够只查看和访问自己的数据库。
我只能找到如何通过DBA创建数据库并将此数据库的权限授予特定用户:
GRANT ALL PRIVILEGES ON dbTest.* TO 'user';
或将所有数据库的权限授予用户:
GRANT ALL PRIVILEGES ON *.* TO 'user';
但这也不是我想要的,因为它需要扩展并且安全。
答案 0 :(得分:75)
您可以使用
GRANT ALL PRIVILEGES ON `testuser\_%` . * TO 'testuser'@'%';
在名称以testuser
开头的所有数据库上授予用户testuser_
权限。
这允许testuser创建仅限于以testuser _
开头的名称的数据库答案 1 :(得分:23)
您可以使用
GRANT ALL PRIVILEGES ON `testuser_%` . * TO 'testuser'@'%';
在名称以testuser
开头的所有数据库上授予用户testuser_
权限。
编辑:我不确定此用户现在是否也被允许创建数据库。
是的,这允许testuser
创建仅限于以testuser_
开头的名称的数据库
答案 2 :(得分:13)
创建由admin用户定义的存储过程,并使用SQL SECURITY DEFINER以admin用户权限调用。在存储过程中,
使用USER()获取当前用户登录详细信息。
答案 3 :(得分:0)
无法仅使用权限。
另一个答案建议的解决方法:
GRANT ALL PRIVILEGES ON
TESTUSER _%. * TO 'testuser'@'%';
有一个问题是用户必须非常小心地命名他们的数据库。
例如,如果用户aaa
创建了数据库bbb_xyz
,则可以由用户bbb
专门访问,但不能由用户aaa
访问。