【发布时间】:2016-06-07 06:00:05
【问题描述】:
我有一个用户在从属数据库上只有SELECT 和CREATE TEMPORARY TABLES 权限,以确保从属不会在复制之外更改表,但无法INSERT(和@987654324 @ 和 DELETE) 在任何创建的临时表上,CREATE TEMPORARY TABLES 权限是相当无用的。
是否可以授予这些权限但仅限于临时表?
我正在运行 MySQL 5.5
编辑:我使用 PHP 和 PDO 来运行命令。根据@phreakv6 的回答,会话可能存在问题
编辑 2:我的完整测试代码:
<?php
$dbh=new PDO("mysql:host=localhost;dbname=scratch;charset=utf8", 'readonly', 'readonlytestingonlypassword',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$prepped=$dbh->prepare("CREATE TEMPORARY TABLE `TempPermissionsTest` (`ID` INT( 11 ) NOT NULL ,`TestVal` INT( 11 ) NOT NULL )");
$prepped->execute();
$err=$prepped->errorInfo();
if ($err[0]>0) print $err[1]." : ".$err[2];
$prepped=$dbh->prepare("INSERT INTO `TempPermissionsTest` (`ID` ,`TestVal`) VALUES (1,3)");
$prepped->execute();
$err=$prepped->errorInfo();
if ($err[0]>0) print $err[1]." : ".$err[2];
$prepped=$dbh->prepare("SELECT * FROM `TempPermissionsTest`");
$prepped->execute();
$err=$prepped->errorInfo();
if ($err[0]>0) print $err[1]." : ".$err[2];
while ($row=$prepped->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
?>
在只有SELECT 和CREATE TEMPORARY TABLES 权限的用户上运行此命令会产生以下输出:
1142 : INSERT command denied to user 'readonly'@'localhost' for table 'TempPermissionsTest'
【问题讨论】:
标签: php mysql temp-tables sql-grant