1

我正在以用户“ someuser”的身份连接到 mysql 服务器。当我从我的 localbox 连接到服务器时,我可以看到所有数据库。

但是,当我 SSH 进入服务器并使用“ someuser”登录并执行时,show databases;我只看到两个:information_schematest

当我通过 SSH 连接到数据库时,如何查看所有数据库?

show grants;显示以下

mysql> show grants;
| Grants for dev@localhost                                             |
 | GRANT USAGE ON *.* TO 'someuser'@'localhost' IDENTIFIED BY PASSWORD '*' |

编辑

当我 SSH 到服务器并使用 root 登录到 mysql 时,我可以看到所有数据库都很好。

4

1 回答 1

1

GRANT USAGE 不是你想要的。根据mysql文档:

USAGE   Synonym for “no privileges”

它在全局级别与 GRANT 一起用于修改帐户属性,例如资源限制或 SSL 特征,而不影响现有帐户权限。

http://dev.mysql.com/doc/refman/5.1/en/grant.html

您需要为“someuser”用户授予用户需要查看的数据库的实际权限。例如,如果您授予对 mysql.* 的选择权限:

GRANT SELECT ON mysql.* 
TO someuser@localhost IDENTIFIED BY "somepassword";
FLUSH PRIVILEGES;

现在,从 localhost 连接的一些用户将能够在执行时看到 mysql 数据库

SHOW DATABASES;

但是,您可能希望仅为 root 保留对 mysql 数据库的访问权限。

于 2013-07-24T18:35:41.947 回答