MySQL无法看到数据库

时间:2010-12-03 19:19:54

标签: mysql database

GRANT SELECT ON source_starcraft.udb_ability TO `wade`@`localhost'

当我通过PHPMyAdmin使用wade登录时,我看不到数据库source_starcraft。我只执行了此查询并在此查询之前创建了用户。

4 个答案:

答案 0 :(得分:10)

这里有很多帮助我的东西。实际上我正在使用MySQL Workbench。

http://bobfield.blogspot.it/2006/10/i-cant-see-my-databases.html

简单地说,如果MySQL有一个< anonymous>帐户,如果您未能及时登录,则最终以匿名用户身份登录,恕不另行通知。要了解这一点,你可以这样做:

SELECT user(), current_user();

原因如下:

  

需要注意的一件重要事情是,SELECT USER();会向您显示   当前用户名和主机。另一个命令SELECT CURRENT_USER();   显示您身份验证的内容。

事实上,就我而言,user()mylogin@localhostcurrent_user()@localhost(匿名用户)。

答案 1 :(得分:8)

如果您登录phpMyAdmin的用户确实拥有查看数据库的正确权限,但您仍然看不到它,则可能意味着phpMyAdmin本身已配置为不显示它。通过在phpMyAdmin中发出show databases; SQL查询,这是最容易验证的。如果您要查找的数据库显示,则至少允许用户查看它。

有几个配置指令可以控制phpMyAdmin列表中可见的数据库。如果您使用自动安装程序或脚本将phpMyAdmin添加到用户帐户,则它可能还设置了only_db或hide_db之一。这些也在官方phpMyAdmin文档中描述,该文档应该包含在您的安装中,并且在wiki上。

如果您的用户有权更改设置,您可以在“设置”和“功能”标签下的phpMyAdmin中为当前会话执行此操作。要永久更改这些设置,您需要修改config.inc.php。它的位置取决于系统上安装phpMyAdmin的位置。

答案 2 :(得分:1)

似乎对于授予权限的主机以及正在使用哪个主机可能存在一些冲突/混淆。

FLUSH PRIVILEGES删除这种可能性之后,我会在登录后看到我被识别的用户:

SELECT user();

请注意,MySQL始终将登录与最具体的主机相关联。见doc。然后将其与特权数据库中的内容进行比较。

SELECT * FROM mysql.user WHERE user='wade';

SELECT * FROM mysql.db WHERE user='wade';

要解决这种情况,请REVOKEDELETE + FLUSH PRIVILEGES引发问题(小心不要让自己陷入困境),或GRANT以上您的用户被识别为的权限。

答案 3 :(得分:0)

昨天我有同样的问题。我将数据文件HD交换到另一台MySQL服务器上(所有版本均相同,全新副本安装与预防性维护相同的密码)。都具有root访问权限,但是我想它们是在MySQL启动时创建的密码的不同机器和哈希。当我列出文件时,两台服务器上的文件都完好无损,但是phpmyadmin看不到数据库(仅是information_schema),即使使用MySQL通过Shell也不可用,但是文件位于正确的位置。

在检查文件的所有权时,所有者是'nobody',因此,我使用chown root:root *在MySQL默认数据位置获取了数据库文件的所有权。

因此,如果您认为仅通过交换HD来替换数据,并在两个地方都获得root用户身份,并且在两个地方都具有root用户访问权限,您将很高兴。但不是很快,您可能仍需要检查这些文件的权限和所有权,以便能够在PHPMYADMIN中列出它们

该步骤之后,重新启动后一切正常。