Mysql 为什么此INSERT语句需要SELECT授权?
我大致运行以下SQL语句:Mysql 为什么此INSERT语句需要SELECT授权?,mysql,permissions,amazon-aurora,Mysql,Permissions,Amazon Aurora,我大致运行以下SQL语句: INSERT INTO a_table (file_hash, p, c) VALUES (%(hash)s, %(p)s, %(c)s) ON DUPLICATE KEY UPDATE p = %(p)s, c = %(c)s ; 使用这些参数,尽管我屏蔽了这些值: [parameters: {'hash': -, 'p': -, 'c': -}] MySQL给了我以下错误: SELECT command denied to us
INSERT INTO a_table
(file_hash, p, c)
VALUES
(%(hash)s, %(p)s, %(c)s)
ON DUPLICATE KEY UPDATE
p = %(p)s,
c = %(c)s
;
使用这些参数,尽管我屏蔽了这些值:
[parameters: {'hash': -, 'p': -, 'c': -}]
MySQL给了我以下错误:
SELECT command denied to user 'our_user'@'10.1.1.2' for column 'p' in table 'a_table'"
为什么?
(手册似乎最接近于解释这一点的是
读取列值的其他语句也需要SELECT
权限。例如,UPDATE
语句中col_name=expr赋值右侧引用的列需要SELECT
但我们并没有在语句中引用赋值RHS上的那个列(p
),我们也没有试图在我能看到的任何地方读取该值。)
模式:
CREATE TABLE `a_table` (
`file_hash` binary(16) NOT NULL,
`p` tinyint(4) DEFAULT NULL,
`c` smallint(6) DEFAULT NULL,
PRIMARY KEY (`file_hash`),
KEY `idx_p` (`p`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
(编辑:我在我的实时环境之外复制它时也遇到了一些困难;这发生在AWS MySQL Aurora实例上。)它必须进行选择才能确定它是否是重复的键?它要求选择
p
,这不是任何键的一部分。(忽略模式中的KEY
行;MySQL错误地使用KEY
表示索引。)