不知道这是否可行。
我需要创建一个新的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
答案 0 :(得分:6)
使用以下代码授予特定数据库的权限。
grant all privileges on DB_NAME.* to 'USER'@'REMOTE_IP' identified by 'PASSWORD';
答案 1 :(得分:2)
有三个步骤
喜欢这个
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
获得的每个数据库设置数据库权限。