我的数据库mysql的语法有点混乱

hi3rlvi2  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(330)

我尝试用以下方法检查我的数据库:

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??
提前谢谢。

f45qwnt8

f45qwnt81#

db id是一个内部系统表,因此很难找到与之相关的官方文档。我找到了这个文件,上面写着:
db是一个系统表,其中包含有关数据库级权限的信息
此表用于存储用户的 GRANTS (这解释了为什么您多次看到同一个db)。显然,它不是查找可用数据库的好地方。
为此,最好使用 SHOW DATABASES 或者信息模式。

5gfr0r5j

5gfr0r5j2#

您可以通过三种方法查找数据库信息:
这个 mysql 数据库,它是mysql服务器本身用于自己记账的内部模式。
这个 SHOW 命令,这是向最终用户公开信息的最早机制。
这个 information_schema 数据库,它是一个“虚拟”数据库,具有动态生成的表,稍后作为对 SHOW 命令。
您应该使用除第一个之外的任何一个(主要是因为它不包含您认为它所包含的内容,但也因为普通用户永远不应该拥有对它的读取权限)。在实践中,我发现 SHOW 或者 information_schema 取决于服务器:它们有时具有非常不同的性能,而您并不总是拥有对模式的权限。

相关问题