mysql - 尝试向 mariadb 用户授予权限时无法在表错误中找到匹配的行

标签 mysql mariadb

看起来这应该很容易...我从 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)

最佳答案

来自documentation

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 权限并未授予指定用户,而是授予从特定主机连接的用户。这样,指定用户可以根据他们从哪里连接而拥有不同的权限。

授予权限时,通常会同时指定userhost 部分,以便它们可以匹配到正确的用户和主机组合。如果主机部分被省略,就像这里一样,那么 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/

相关文章:

mysql - mysql 查询中的错误 - 内部连接

mysql - Case 语句变量声明和在 MS SQL SERVER 中的使用

mysql - 是否可以在 cPanel 上从 MySQL 5.5 迁移到 MariaDB 10?

mysql - 禁止用户从 MySQL 中的其他 IP 进行连接

mysql - 如何确定 MySQL 排序规则是否区分大小写?

javascript - 单击行上的任意位置以选中复选框并突出显示它?

mysql - 当我尝试使用 2 个表进行删除时出现 SQL 错误

mysql - 在 MySQL 5.7.27 上寻找 REGEXP_REPLACE() 替代方案

mysql - mariadb 行级读锁定

MySQL 对多个 OR 使用索引,但对 IN 没有索引而且速度慢得多