3

不知道这是否可能。

我需要创建一个新的 mysql 用户,该用户只能访问具有前缀为 user_db_的数据库名称的数据库。

我有一个 php 应用程序,当添加新用户时,它会创建一个数据库user_db_'userid '。假设创建了三个用户,他们的数据库是user_db_1user_db_2user_db_3

我需要创建一个新用户说user_accounts,它只能访问user_db_1user_db_2user_db_3,............,user_db_n

4

3 回答 3

6

使用以下代码授予对特定数据库的权限。

grant all privileges on DB_NAME.* to 'USER'@'REMOTE_IP' identified by 'PASSWORD';
于 2013-01-08T09:04:02.843 回答
2

有三个步骤

  1. 创建数据库
  2. 创建新用户
  3. 使用 grant all 命令授予权限

像这样

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
于 2014-06-12T10:28:27.470 回答
0

恕我直言,您可以使用以下组合

SHOW DATABASES LIKE 'user_db_%'

获取当前用户数据库列表,以及

CREATE USER 'username'@'hostname' ...

创建用户,以及

GRANT ALL ON user_db_N.* TO 'username'@'hostname'

为您从中获得的每个数据库设置数据库权限给用户SHOW DATABASES

于 2013-01-08T05:32:31.937 回答