首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误1143 (42000):选择拒绝命令

错误1143 (42000):选择拒绝命令
EN

Stack Overflow用户
提问于 2015-09-14 06:28:00
回答 3查看 9.8K关注 0票数 0

我使用具有更新权限的用户来执行sql:

代码语言:javascript
运行
复制
update stu set age = 27 where name='zjw';

我发现了一个错误:

错误1143 (42000):选择表“stu”中“name”列的“update_ user”@‘localhost’拒绝的命令

像这样的桌子:

代码语言:javascript
运行
复制
CREATE TABLE `stu` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

update_user的特权是:

代码语言:javascript
运行
复制
grant update on *.* to 'update_user'@'%';

MySQL版本为5.1.73。

谢谢。

EN

Stack Overflow用户

发布于 2015-09-14 06:51:09

@罗宾,根据你最后的评论,试着理解你的更新声明-

代码语言:javascript
运行
复制
UPDATE `stu` SET age = 27 WHERE name = 'zjw';

上面的update语句首先尝试获取名称= 'zjw‘的记录,所以如果您的name列被索引了,那么选择use index,然后直接选择那些值为'zjw’的记录,否则它会扫描整个表并在表的任何位置选择‘zjw’。

这意味着在更新之前,mysql首先在内部使用select语句,因此您还需要具有任何其他特权的select特权,如update/delete等。

所以你的命令应该是-

代码语言:javascript
运行
复制
GRANT SELECT, UPDATE on db.* to 'myuser'@'localhost' identified by 'mypass';

您应该根据要求只授予特定的IP或本地主机权限,而不是按“%”全局授予权限,这是有风险的。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32558442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档