在你认为这是一个重复的问题之前,我相信我有一个独特的例子,即使它有点愚蠢.

几天前,我将我的Ubuntu 10.04服务器上的MySQL版本升级到了5.3.3(比Ubuntu 10.04的版本早).今天,我试图登录phpMyAdmin获取一些信息,发现了有点可怕的Connection for controluser as defined in your configuration failed错误.

在遵循了关于如何解决这个问题的几个SO问题的描述之后,我陷入了困境.

  • 我try 了reconfigure phpMyAdmin次,但没有成功.
  • 我试图删除它,但它无法从数据库中删除权限,因此失败.
  • 然后我try 从数据库中删除manually remove the privileges个用户(我可能会添加一些愚蠢的内容),然后删除数据库,然后删除用户(flush privileges个).
  • 我完全放弃了phpMyAdmin的整个安装(删除应用程序和/etc/phpMyAdmin目录)并重新安装(使用apt get),但它说phpMyAdmin用户的权限已经存在:

granting access to database phpmyadmin for phpmyadmin@localhost: already exists

这就是我剩下的.我有一项授权,我不能修改,也不能撤销:

mysql> show grants for 'phpmyadmin'@'localhost';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.26 sec)

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost' identified by 'trustno1';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

(别担心,我不再使用此密码,但它是以前使用的密码,而不是我为新的phpmyadmin安装 Select 的密码).

如何完全取消这些授权/特权?如果需要的话,我很乐意从头开始(phpmyadmin,而不是DB).

推荐答案

mysql中的使用权限仅仅意味着在全局级别*.*上定义的用户"phpadmin"@"localhost"没有权限.此外,同一用户拥有数据库phpmyadmin phpadmin.*的所有权限.

因此,如果您想删除所有特权并从头开始,请执行以下操作:

  • undo撤消数据库级别的所有权限:

    REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM 'phpmyadmin'@'localhost';

  • 删除用户"phpmyadmin"@"localhost"

    DROP USER 'phpmyadmin'@'localhost';

上述过程将从您的实例中完全删除该用户,这意味着您可以从头开始重新创建该用户.

让你了解一下上述内容的背景:一旦你创建了一个用户,mysql.user表就会被填充.如果查看其中的记录,您将看到用户和所有权限设置为'N'.如果你做一个show grants for 'phpmyadmin'@'localhost';,你会看到,allready Familiar,上面的输出.简单地翻译为"用户在全局级别没有特权".现在,您在数据库级别向该用户授予ALL,这将存储在表mysql.db中.如果你做一个SELECT * FROM mysql.db WHERE db = 'nameofdb';,你会在每个priv上看到一个'Y'.

上面描述的场景显示了您目前在数据库上的情况.因此,拥有一个只有USAGE个权限的用户意味着,这个用户可以连接,但除了SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;之外,他没有其他权限.

Mysql相关问答推荐

为什么IN子句中有GROUP BY会导致查询变得不可执行?

MySQL INSERT INSERT ON DIPLICATE KEY UPDATE WITH COMPAY PRIMARY KEY失败

使用JSON_CONTAINS搜索多个值的原理

MySQL::JSON列的添加使SELECT查询非性能(当需要临时表时)

MySQL 计数出现的百分比大于

使用 awk 重写 maxscale 过滤器

如何本地化 MySQL 表中的实体?

状态为已发货的订单返回产品总数量的SQL(不同的两张表)

Select 最高等级最多的部门名称

如何在 mysql 中获取 Day Wise 的平均值?

go&mysql&docker 拒绝连接

MySQL DISTINCT 日期仅返回特定表的 1 个值.相同的查询适用于其他表

总行大小不超过 65535,但我得到行大小太大.所用表类型的最大行大小,不包括 BLOB,是 65535错误

是否可以在一个查询中将字符串附加到许多匹配的行

phpmyadmin没有收到要导入的数据错误,如何解决?

MySQL Workbench 无法加载 mysql.proc

Doctrine2 迁移向下迁移并从浏览器而不是命令行迁移

WHERE 子句中的条件顺序会影响 MySQL 性能吗?

MySQL中的行值增加和减少1

比较 MySQL 中的日期忽略 DateTime 字段的时间部分