phpMyAdmin报告“没有权限”

11

简而言之,我在EasyPHP的PHPMyAdmin中删除了root用户。经过一些调查,我使用skip-grant-tables重新获得了数据库访问权限。然而,现在我无法做任何事情,因为root用户已经被剥夺了没有权限

尽管如此,在以'root'身份登录时,我确实可以通过SQL创建数据库。

我尝试了以下操作和类似操作:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

但是,我仍然无法做任何事情。此外,我收到了以下消息:

用于处理链接表的其他功能已被停用。要了解原因,请单击此处。

单击后显示:

$cfg['Servers'][$i]['pmadb'] ...    OK
$cfg['Servers'][$i]['relation'] ... not OK [ Documentation ]
General relation features: Disabled

$cfg['Servers'][$i]['table_info'] ...   not OK [ Documentation ]
Display Features: Disabled

$cfg['Servers'][$i]['table_coords'] ... not OK [ Documentation ]
$cfg['Servers'][$i]['pdf_pages'] ...    not OK [ Documentation ]
Creation of PDFs: Disabled

$cfg['Servers'][$i]['column_info'] ...  not OK [ Documentation ]
Displaying Column Comments: Disabled
Browser transformation: Disabled

$cfg['Servers'][$i]['bookmarktable'] ...    not OK [ Documentation ]
Bookmarked SQL query: Disabled

$cfg['Servers'][$i]['history'] ...  not OK [ Documentation ]
SQL history: Disabled

$cfg['Servers'][$i]['designer_coords'] ...  not OK [ Documentation ]
Designer: Disabled

$cfg['Servers'][$i]['tracking'] ... not OK [ Documentation ]
Tracking: Disabled

重新安装EasyPHP无法解决问题,而且在VirtualStore中也没有任何文件存在(正如一个论坛帖子建议的那样)。我应该寻找特定的MySQL文件吗?

有什么想法吗?这真的阻止了我的应用程序开发。

谢谢。


看起来你只需要正确地设置授权表。如果你能帮我执行SELECT * FROM mysql.user WHERE user = 'root'(当然要使用--skip-grant-tables),并将其结果粘贴过来,这可能会有所帮助。 - cHao
你连接时是连接到本地主机吗?(MySQL有时可能会很难处理;如果你连接到自己的IP地址,它更喜欢看到你来自于你的IP而不是本地主机。) - cHao
是的。127.0.0.1也有所有的Y。我正在通过EasyPHP运行所有这些。 - Peter
有趣... PHPMyAdmin 报告没有权限,但输入 'CREATE DATABASE test' 实际上创建了一个数据库。 - Peter
是的,在 mysql.db 中通常有一行授予任何人创建以“test”开头(或为其)的数据库的权限。 顺便说一下,检查该表是否有任何对 root% 或空用户的引用,这些用户在前五个权限(select、insert、update、create)中的任何一个或全部都为 'N'。 - cHao
显示剩余2条评论
6个回答

21

这真的非常烦人。

看起来这是 phpMyAdmin 的一个 bug。

清除你的浏览器 cookies,因为 phpMyAdmin 已经“缓存”了你没有(或可能曾经没有)创建数据库访问权限的信息。

除了在浏览器窗口中删除 phpMyAdmin 的 cookies(以获取新的“会话 ID”),或者删除 phpMyAdmin 网络服务器上的会话文件之外,没有其他方法可以重置它。


3
这对我很有用。我只需在Chrome开发者控制台中打开资源选项卡(Ctrl+Shift+I),然后手动删除本地主机上的所有Cookie即可。 - Mustafa Alammar

4
如果您的计算机启用了IPv6,则“localhost”将解析为::1,而不是127.0.0.1。这可能会导致问题。
尝试连接到“127.0.0.1”而不是“localhost”。这应该会强制mysql通过IPv4地址进行身份验证,因此请确保在其中包含127.0.0.1。
或者,如果您拥有管理员访问权限,可以在c:\Windows\System32\Drivers\etc\hosts中将localhost映射回127.0.0.1。

当我连接时,根据EasyPHP配置,我使用127.0.0.1。 - Peter
用户表里有一行是 root@127.0.0.1 - cHao
是的,但最后发现是浏览器问题。非常感谢您的帮助! - Peter

2

cHao和Andrew的答案为我解决了问题。我在MySQL数据库中重置了用户表中的所有权限,然后所有数据库都出现在了phpMyAdmin中,但我在那里没有'create db'特权。清除了phpMyAdmin cookie,甚至升级了phpMyAdmin也无济于事。然后我进入tmp/php目录并删除了一个会话文件(命名为sess +随机ascii),成功了!


1

结果发现这是一种特定于Google Chrome的问题,因为它在IE中可以正常工作。我将尝试运行CCleaner。

谢谢大家。


2
奇怪。我在Chrome中也遇到了相同的根权限问题。阅读了这个答案后,我用Firefox登录,一切都正常了。这是在OSX上,所以我不认为它与你的Windows电脑有任何关系。 - ray
我也遇到了同样的问题,有人知道为什么或如何解决吗? - Nathan C.
1
这不是特定于浏览器的问题,也不能是。尝试清除缓存和 cookie。 - jnhghy - Alexandru Jantea

0

我刚刚遇到了同样的问题(无法访问本地数据库)。该问题似乎与运行 Gecko 或类似引擎(如 KHTML...我使用 Opera)的浏览器有关。按照建议,删除了 phpMyAdmin cookie 后,我仍然无权访问。因此,我去了 localhost/xampp,然后点击了 Security。在那个页面上有一个链接(h-t-t-p://localhost/security/xamppsecurity.php),它带我进入了一个名为“Security console MySQL & XAMPP directory protection”的页面。

我将 current password 字段留空,并输入了一个新密码;我认为我选择了 cookie 作为 PhpMyAdmin 的身份验证方法(它实际上写着 PhpMyAdmin authentification,但是……)。一旦我提交了密码更改并尝试再次访问 phpMyAdmin,我就恢复了所有数据库,并能够再次创建更多;No Privileges 消息已经消失了!

底部仍然有一条消息:

phpMyAdmin 配置存储没有完全配置,一些扩展功能已被禁用。要找出原因,请单击此处。

但这是另一个时间的事情了。


0

在过去的几年中,我遇到了这个问题几次... 我发现最简单的方法是在设置 RPi 时找到的。

从终端运行:$sudo mysql_secure_installation 并根据您的实现进行适当的设置。

然后,使用以下命令设置用户访问权限:$sudo mysql_setpermission 这将允许您设置超级/根用户。

只需按照提示操作即可。


刚刚检查了一下,在我所有安装了mysql的Linux机器上仍然可以运行。你使用的是什么设置? - Cory C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接