【问题标题】:MySQL Privileges, allowing/disallowingMySQL 权限,允许/禁止
【发布时间】:2013-04-15 17:06:52
【问题描述】:

我一直在使用 MySQL 数据库中的用户权限,但仍然无法获得想要的结果。

昨天,我授予权限,然后撤销,用户仍然拥有它。 (相同的浏览器,仅注销)。重新启动浏览器后,它确实按预期工作。

今天,我设置了权限

GRANT CREATE ON `testdb`.`testtbl` TO 'ttt'@'localhost' IDENTIFIED BY 'test'

我不仅看到了“testdb”,还看到了表“test”——我不应该看到的。当我去数据库“testdb”时,我无法创建表。它说

用户 'ttt'@'localhost' 拒绝表 'ttbl' 的 CREATE 命令

SQL 命令:

CREATE TABLE `ttbl` (
  `test1` int NOT NULL,
  `test2` int NOT NULL
) COMMENT='';

我想我错过了一些特权,但我仍然无法弄清楚哪里出了问题。

仅使用此命令会出现什么问题? (不是CREATE USER,不知道是不是强制)

谢谢

【问题讨论】:

    标签: mysql database privileges


    【解决方案1】:

    在 MySQL 中,更改权限后,总是运行以下命令:

    flush privileges;
    

    它强制 MySQL 运行时主动重新加载权限表,从而清除所有其他过时的权限。它不会自动执行此操作,因为它必须主动检测对授权表的更改。

    【讨论】:

    • 我尝试了刷新权限,但我不断收到错误消息。现在我发现另一个错误(我正在使用管理员),它说“用户'ttt'@'localhost'对数据库'testdb'的访问被拒绝”
    • 在不太了解您的结构的情况下,我认为您想在数据库上分配您的create 权限,而不是像您现在所做的那样。
    • 我只想为表分配create 权限,而不是数据库
    • 我真的很想念你当时想做的事情。 create 权限在桌子上意味着什么?创建已经存在的特定表的权限?正如dev.mysql.com/doc/refman/5.1/en/… 中所述,这不是表级别的允许特权...
    • 如前所述,这意味着您应该在用户将要在数据库上创建表的位置授予create 权限。您现在授予 testdb`.`testtbl,这已经是数据库中的一个表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2021-08-22
    • 2016-08-01
    • 1970-01-01
    • 2021-12-18
    • 2021-05-31
    相关资源
    最近更新 更多