2010-12-03 77 views
4
GRANT SELECT ON source_starcraft.udb_ability TO `wade`@`localhost' 

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

+4

@Webnet - 确保你已经运行了`flush privileges` – ajreal 2010-12-03 19:22:07

+0

良好的调用 - 尽管我做到了这一点,并作为wade登录我仍然无法看到其他数据库比`information_schema` – Webnet 2010-12-03 19:38:08

+0

好吧,你的数据库在哪里?和phpmyadmin一样吗?本地主机可能是可能的原因 – ajreal 2010-12-03 19:41:28

回答

7

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

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

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

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更多的特权用户被识别为一个。

10

这里给了我很多帮助。其实我正在使用MySQL Workbench。

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

简单地说,它说,如果MySQL有一个<匿名>帐户,你不能用你的用户登录,你最终登录为匿名用户,恕不另行通知。要了解这一点,你可以这样做:

SELECT user(), current_user(); 

这里的原因:注意

一个重要的事情是SELECT USER();显示您 当前用户名和主机。另一个命令SELECT CURRENT_USER(); 显示了你正在认证的 as。

事实上,在我的情况,user()[email protected]current_user()@localhost(匿名的用户)。