这似乎应该很容易...我从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)
答案 0 :(得分:1)
作为用户,当您连接到MySQL服务器时,您的身份是 由您连接的主机和用户名确定 指定。
因此,MySQL特权不是授予命名用户的权限,而是授予从特定主机连接的用户的权限。这样,命名用户可以根据其连接的位置而具有不同的特权。
在授予特权时,通常同时指定user
和host
部分,以便它们可以与正确的用户和主机组合匹配。如果省略了主机部分(如此处所示),则MySQL假定主机是通配符'%'(即从任何地方)。因此,您的命令被视为
GRANT SELECT,INSERT,UPDATE,DELETE ON mytable.* TO 'myclient'@'%';
,并且您引用的错误消息表示mysql.user表中没有记录,其中user
='myclient'和host
='%'。