【问题标题】:MySQL GRANT to User@'host' not behaving as expectedMySQL GRANT to User@'host' 未按预期运行
【发布时间】:2011-09-21 14:59:17
【问题描述】:

编辑:我重新安装了 MySQL 并自行修复。不知道是什么问题。


我从命令行在 MySQL 中运行了以下命令:

1. REVOKE ALL PRIVILEGES ON MyDB.* FROM user@'%';
2. DROP USER user@'%";
3. GRANT INSERT,SELECT,DELETE,UPDATE ON MyDB.* TO user@'%' IDENTIFIED BY 'somepassword';
4. FLUSH PRIVILEGES;

用户的授权是:

GRANT USAGE ON . to 'user'@'%' IDENTIFIED BY PASSWORD GRANT SELECT,INSERT,UPDATE,DELETE ON 'MyDB'.* TO 'user'@'%'

但是当我尝试进行更新时收到以下错误消息。

UPDATE command denied to user 'user'@'somehost' for table 'sometable'

相关信息:

SELECT、INSERT 和 DELETE 都可以正常工作。

我正在使用带有连接器/NET 的 C#

“somehost”与服务器位于同一网络(不同的计算机)。

'sometable' 在 MyDB 中。

如果我在主机上使用“用户”登录服务器,更新查询就可以正常工作。

编辑:

如果我将 UPDATE、SELECT、INSERT、DELETE 授予 user@'somehost.net',则 UPDATE 查询将毫无问题地工作。

有什么想法吗?

【问题讨论】:

  • 您是否为'user'@'somehost' 定义了用户对象?如果存在,MySQL 将看到它与 'user'@'%' 不同。
  • 你这个坏bad GRANT,你为什么不表现自己? :)

标签: c# mysql mysql-error-1045 connector-net


【解决方案1】:

在取消所有的授权后,首先你应该给用户使用权限。

GRANT USAGE on MyDB.* to 'user'@'localhost'

使用权限告诉服务器这个用户被允许使用 MySQL

【讨论】:

  • 如果是这样,为什么 SELECT 和 INSERT 会正常工作?我想我忘了明确提到这一点。
  • 如果您不打算授予任何特权,那么您只需要将 MyDB.* 上的 GRANT USAGE 授予 'user'@'localhost',这意味着您可以连接到指定 MyDB 的服务器。
  • @Ignacio,我怀疑你有一个 'user'@'somehost'。 SHOW GRANTS FOR 'user'@'somehost' 回报是什么?
  • 我知道我没有 'user'@'somehost'。我有'用户'@'%'。我不明白为什么“用户”可以毫无问题地插入、选择和删除(来自“某主机”),但 UPDATE 被拒绝。所有 4 个权限都在完全相同的 GRANT 语句中给出,这是我什至创建的唯一用户(除了 root 用户)。 “SHOW GRANTS FOR 'user'@'%' 的返回包含在原始问题中。
【解决方案2】:

重新安装解决了这个问题。不知道是什么问题。

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2014-11-12
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多