我有一个数据库用户create_db_user,我已经授予了具有特定前缀的数据库的所有权限:
GRANT ALL PRIVILEGES ON 'myprefix\_%'.* TO 'create_db_user'@'localhost' WITH GRANT OPTION;
我有另一个standard_user我授予SELECT, INSERT, UPDATE, DELETE权限的数据库用户帐户.
全局用户执行一个创建新数据库的SQL语句:myprefix_new_db.它似乎没有任何问题(至少没有抛出异常).但是,当它尝试将SIUD权限授予新创建的数据库的标准帐户时,将引发以下异常:
SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user 'create_db_user'@'localhost' to database 'myprefix_new_db' @ #0
因此,至少从表面上看,我的全局用户帐户似乎具有足够的权限来创建数据库,但还不足以与之交互.
确切的代码流程如下:
$create_db_user->query(" SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO' ");
$create_db_user->execute();
$stmt = ' CREATE DATABASE IF NOT EXISTS ' . $myprefix_new_db . ' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ';
$stmt.= ' USE ' . $myprefix_new_db . ';';
$stmt.= $sql_stmt;
$create_db_user->query($stmt);
$create_db_user->execute();
// with or without grant option
$create_db_user->query(" GRANT ALL PRIVILEGES ON {$myprefix_new_db}.* TO 'create_db_user'@'localhost' WITH GRANT OPTION; ");
$create_db_user->execute();
$sql = " GRANT SELECT, INSERT, UPDATE, DELETE ON `{$myprefix_new_db}`.* TO 'standard_user'@'localhost' ";
$create_db_user->query($sql);
$create_db_user->execute();
Run Code Online (Sandbox Code Playgroud)
我的问题是:我必须做些什么来确保我的create_db_user帐户有足够的权限来做任何动态创建的数据库?或者,我必须做些什么来确保创建数据库后,它包含在全局用户的范围内?
编辑:我有管理员级别的cPanel和WHM访问权限.
小智 1
据我了解,您试图让 create_db_user 授予自己所有权限以及数据库上的 with grant 选项。我不确定是否应该允许。
您能否通过触发器(例如,通过触发器)从具有适当WITH GRANT权限的另一个用户授予create_db_user权限?
祝你好运 :-)
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |