在表中找不到匹配的行尝试向mariadb用户授予权限时出错

pdsfdshx  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(309)

看起来这应该很容易…我从mysql手册中提取了这个命令,稍微更改了授予的特权和用户权限。我只是想给用户添加权限,但命令行中出现了一个错误。这是我要传达的命令:

GRANT SELECT,INSERT,UPDATE,DELETE ON mytable.* TO 'myclient';

我得到的错误是:

ERROR 1133 (28000): Can't find any matching row in the user table

表和用户已经存在。以下是我参考的mysql手册的一部分:
https://dev.mysql.com/doc/refman/8.0/en/adding-users.html
我做错什么了?
(ubuntu服务器18.04上的mariadb版本10.1.34)

cigdeys3

cigdeys31#

从文档中
作为用户,当您连接到mysql服务器时,您的身份由您连接的主机和您指定的用户名决定。
因此,mysql特权不是授予命名用户的,而是授予从特定主机连接的用户的。这样,命名用户可以根据其连接位置拥有不同的权限。
授予特权时,通常会指定 user 以及 host 使它们能够与正确的用户和主机组合相匹配。如果省略了主机部分,如这里所示,那么mysql假设主机是通配符“%”(即来自任何地方)。因此,你的命令被视为

GRANT SELECT,INSERT,UPDATE,DELETE ON mytable.* TO 'myclient'@'%';

您引用的错误消息意味着mysql.user表中没有记录 user ='我的客户'和 host = '%'.

相关问题