不确定是否可行。
我需要创建一个新的mysql用户,只能访问数据库名称具有前缀 user_db_ 的数据库。
我有一个php应用程序,在其中添加新用户时会创建一个名为user_db_'userid'的数据库。假设创建了三个用户,其数据库分别为user_db_1,user_db_2,user_db_3。
我需要创建一个名为user_accounts的新用户,他只能访问user_db_1,user_db_2,user_db_3,..........,user_db_n。
不确定是否可行。
我需要创建一个新的mysql用户,只能访问数据库名称具有前缀 user_db_ 的数据库。
我有一个php应用程序,在其中添加新用户时会创建一个名为user_db_'userid'的数据库。假设创建了三个用户,其数据库分别为user_db_1,user_db_2,user_db_3。
我需要创建一个名为user_accounts的新用户,他只能访问user_db_1,user_db_2,user_db_3,..........,user_db_n。
grant all privileges on DB_NAME.* to 'USER'@'REMOTE_IP' identified by 'PASSWORD';
以下是三个步骤:
例如:
CREATE DATABASE DBTEST
CREATE USER 'NEWUSER'@'LOCALHOST' IDENTIFIED BY 'NEWUSERPASSWORD'
在创建用户后,赋予其创建表和删除表的权限。
GRANT ALL PRIVILEGES ON *.* TO 'NEWUSER'@'LOCALHOST'
FLUSH PRIVILEGES
更新 2015 年 3 月 31 日(如评论中所述)
您可以像这样在特定的数据库上授予权限
GRANT ALL PRIVILEGES ON DBTEST.* TO 'NEWUSER'@'LOCALHOST
在我看来,你可以使用以下组合:
SHOW DATABASES LIKE 'user_db_%'
获取当前用户数据库列表,以及
CREATE USER 'username'@'hostname' ...
GRANT ALL ON user_db_N.* TO 'username'@'hostname'
为每个从SHOW DATABASES
获取的数据库设置用户的数据库权限。