GRANT SELECT ON source_starcraft.udb_ability TO `wade`@`localhost'
当我通过PHPMyAdmin使用wade
登录时,我看不到数据库source_starcraft
。我只执行了此查询并在此查询之前创建了用户。
答案 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@localhost
,current_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';
要解决这种情况,请REVOKE
或DELETE
+ FLUSH PRIVILEGES
引发问题(小心不要让自己陷入困境),或GRANT
以上您的用户被识别为的权限。
答案 3 :(得分:0)
昨天我有同样的问题。我将数据文件HD交换到另一台MySQL服务器上(所有版本均相同,全新副本安装与预防性维护相同的密码)。都具有root访问权限,但是我想它们是在MySQL启动时创建的密码的不同机器和哈希。当我列出文件时,两台服务器上的文件都完好无损,但是phpmyadmin看不到数据库(仅是information_schema),即使使用MySQL通过Shell也不可用,但是文件位于正确的位置。
在检查文件的所有权时,所有者是'nobody',因此,我使用chown root:root *
在MySQL默认数据位置获取了数据库文件的所有权。
因此,如果您认为仅通过交换HD来替换数据,并在两个地方都获得root用户身份,并且在两个地方都具有root用户访问权限,您将很高兴。但不是很快,您可能仍需要检查这些文件的权限和所有权,以便能够在PHPMYADMIN中列出它们
该步骤之后,重新启动后一切正常。