看起来这应该很容易...我从 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)
最佳答案
As a user, when you connect to a MySQL server, your identity is determined by the host from which you connect and the user name you specify.
因此,MySQL 权限并未授予指定用户,而是授予从特定主机连接的用户。这样,指定用户可以根据他们从哪里连接而拥有不同的权限。
授予权限时,通常会同时指定user
和host
部分,以便它们可以匹配到正确的用户和主机组合。如果主机部分被省略,就像这里一样,那么 MySQL 假定主机是通配符“%”(即来自任何地方)。因此,您的命令被视为
GRANT SELECT,INSERT,UPDATE,DELETE ON mytable.* TO 'myclient'@'%';
而你引用的错误信息意味着mysql.user表中没有user
= 'myclient' and host
= '%'的记录。
关于mysql - 尝试向 mariadb 用户授予权限时无法在表错误中找到匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914015/