我尝试用以下方法检查我的数据库:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| db1 |
| db2 |
| sys |
+--------------------+
6 rows in set (0,09 sec)
我还尝试检查我的数据库:
mysql> SELECT Db FROM mysql.db;
+--------------------+
| Db |
+--------------------+
| performance_schema |
| sys |
| db1 |
| db2 |
| db1 |
| db2 |
+--------------------+
6 rows in set (0,00 sec)
为什么结果不同 SHOW DATABASES;
以及 SELECT Db FROM mysql.db;
?
我可以更新我的数据库吗 mysql.db
table??
提前谢谢。
2条答案
按热度按时间57hvy0tb1#
您可以通过三种方法查找数据库信息:
这个
mysql
数据库,它是mysql服务器本身用于自己记账的内部模式。这个
SHOW
命令,这是向最终用户公开信息的最早机制。这个
information_schema
数据库,它是一个“虚拟”数据库,具有动态生成的表,稍后作为对SHOW
命令。您应该使用除第一个之外的任何一个(主要是因为它不包含您认为它所包含的内容,但也因为普通用户永远不应该拥有对它的读取权限)。在实践中,我发现
SHOW
或者information_schema
取决于服务器:它们有时具有非常不同的性能,而您并不总是拥有对模式的权限。cwtwac6a2#
db id是一个内部系统表,因此很难找到与之相关的官方文档。我找到了这个文件,上面写着:
db是一个系统表,其中包含有关数据库级权限的信息
此表用于存储用户的
GRANTS
(这解释了为什么您多次看到同一个db)。显然,它不是查找可用数据库的好地方。为此,最好使用
SHOW DATABASES
或者信息模式。