在mysql中创建新用户,只能访问某些数据库

时间:2013-01-08 05:07:02

标签: mysql

不知道这是否可行。

我需要创建一个新的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

3 个答案:

答案 0 :(得分:6)

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

grant all privileges on DB_NAME.* to 'USER'@'REMOTE_IP' identified by 'PASSWORD';

答案 1 :(得分:2)

有三个步骤

  1. 创建数据库
  2. 创建新用户
  3. 使用grant all命令赋予权限
  4. 喜欢这个

    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
    

答案 2 :(得分:0)

恕我直言,你可以使用

的组合
SHOW DATABASES LIKE 'user_db_%'

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

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

创建用户,

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

为您从SHOW DATABASES获得的每个数据库设置数据库权限。