Mysql 错误代码:1143 SELECT命令在我尝试运行更新查询时被拒绝,即使我同时拥有更新和选择权限
我得到错误代码:1143。每当我尝试使用条件语句运行更新查询时,SELECT命令拒绝给用户 我对数据库中的所有表具有选择权限,并对某些表中的某些字段具有更新权限Mysql 错误代码:1143 SELECT命令在我尝试运行更新查询时被拒绝,即使我同时拥有更新和选择权限,mysql,Mysql,我得到错误代码:1143。每当我尝试使用条件语句运行更新查询时,SELECT命令拒绝给用户 我对数据库中的所有表具有选择权限,并对某些表中的某些字段具有更新权限 将'Base!'上的SELECT授予'php_角色' Base`.`cart`上的更新(`amount`)授予`php_角色` 我能够运行以下SELECT查询而不出现任何错误: 从'cart'中选择*,其中'subscription\u id`=0 但当我尝试运行更新查询时,会出现以下错误: UPDATE`cart`SET`amount
将'Base!'上的SELECT授予'php_角色'代码>
Base`.`cart`上的更新(`amount`)授予`php_角色`代码>
我能够运行以下SELECT查询而不出现任何错误:
从'cart'中选择*,其中'subscription\u id`=0代码>
但当我尝试运行更新查询时,会出现以下错误:
UPDATE`cart`SET`amount`=0,其中`subscription\u id`=0代码>
即使我授予自己对整个表的更新权限,仍然会出现错误。
我发现唯一可以修复它的方法是授予整个数据库的更新权限
最小可重复示例:
作为Root用户,创建数据库、表和用户
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test(
p_id INT,
val INT,
PRIMARY KEY(p_id)
);
CREATE ROLE test_role;
CREATE USER test_user IDENTIFIED BY 'password';
GRANT SELECT ON test_db.* TO test_role;
GRANT INSERT ON test_db.* TO test_role;
GRANT UPDATE (val) ON test_db.test TO test_role;
GRANT test_role TO test_user;
SET DEFAULT ROLE test_role TO test_user;
作为新创建的用户,登录并尝试运行更新查询
USE test_db;
UPDATE test SET val = 0 WHERE p_id = 0;
更新查询导致错误,而以下查询工作正常:
从测试中选择*代码>