不知道这是否可能。
我需要创建一个新的 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'
用户创建后赋予create table drop table的权限
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
。