web-dev-qa-db-ja.com

information_schemaデータベースは何を表していますか?

Mysqlに1つのデータベースがあります。

しかし、phpMyAdminにログインすると、information_schemaという別のデータベースが表示されます。

そのデータベースは常に1つのデータベースで存在しますか?

つまり、mysqlに存在するすべてのデータベースにinformation_schemaのコピーがあるのでしょうか、それともmysqlサーバーごとにinforemation_schemaというデータベースが1つあるのでしょうか。

このinformation_schemaデータベースを変更すると、現在のデータベースにどのように影響しますか?

24
John

Information_schemaは、テーブル、列、ユーザーの名前や種類など、サーバー上の他のすべてのデータベースに関する詳細を保持する「マスターデータベース」と考えることができます。

Information_schemaとは何ですか?

から 参照ドキュメント:

INFORMATION_SCHEMAは、データベースメタデータへのアクセスを提供します。

メタデータは、データベースまたはテーブルの名前、列のデータ型、アクセス権限など、データに関するデータです。この情報に時々使用される他の用語は、データディクショナリとシステムカタログです。

INFORMATION_SCHEMAは情報データベースであり、MySQLサーバーが維持する他のすべてのデータベースに関する情報を格納する場所です。 INFORMATION_SCHEMA内には、いくつかの読み取り専用テーブルがあります。これらは実際にはビューであり、ベーステーブルではないため、それらに関連付けられたファイルはありません。

Information_schemaには何が格納されていますか?

この図 (MySQL 5.0の場合)または この図 (MySQL 5.1の場合)を表示すると、information_schemaに格納されているものの種類とその編成方法を確認できます。 )。

Information_schemaを変更するとどうなりますか?

実際には、information_schemaは読み取り専用ビューのコレクションです。そのため、それを変更して損傷を与えることは不可能であるはずです。ただし、 MySQL FAQ は次のように述べています。

23.7.3:INFORMATION_SCHEMAデータベースにあるテーブルを追加または変更できますか?

いいえ。アプリケーションは特定の標準構造に依存している可能性があるため、これを変更しないでください。このため、INFORMATION_SCHEMAテーブルまたはデータの変更に起因するバグやその他の問題はサポートできません。

これは、information_schemaを変更できる場合(これは不可能であり、MySQLにありますが、SQLの他のベンダー実装では許可される場合があります)、少なくとも変更しないことを選択する必要があることを意味します。 could information_schemaを損傷/変更すると、他のデータベースの実際の構造(テーブル名、列タイプなど)が損傷することになります。

すべてのユーザーがinformation_schemaの独自のコピーを持っていますか?

各ユーザーは、アクセスできるテーブルとデータベースに関連するinformation_schemaを表示できます。権限が大幅に制限されている一部のユーザーには、引き続きinformation_schemaが表示されますが、information_schemaクエリの値はNULL値のみが表示されます。ただし、information_schemaは実際のデータベースではなく、データベースとテーブルに関する情報を選択できるようにSQLが提供する便利な方法であることを覚えておくことが重要です。

から 参照ドキュメント:

各MySQLユーザーにはこれらのテーブルにアクセスする権利がありますが、ユーザーが適切なアクセス権限を持っているオブジェクトに対応するテーブル内の行のみを表示できます。場合によっては(たとえば、INFORMATION_SCHEMA.ROUTINESテーブルのROUTINE_DEFINITION列)、権限が不十分なユーザーにはNULLが表示されます。

詳細情報はどこにありますか?

28
Matt Mitchell