You can think of information_schema as a "master database" that holds details about all the other databases on the server such as the names and types of tables, columns and users.
What is information_schema?
From the reference documentation:
INFORMATION_SCHEMA provides access to
database metadata.
Metadata is data about the data, such
as the name of a database or table,
the data type of a column, or access
privileges. Other terms that sometimes
are used for this information are data
dictionary and system catalog.
INFORMATION_SCHEMA is the information
database, the place that stores
information about all the other
databases that the MySQL server
maintains. Inside INFORMATION_SCHEMA
there are several read-only tables.
They are actually views, not base
tables, so there are no files
associated with them.
What is stored in information_schema?
You can see the kinds of things stored in information_schema, and the way in which they are organised, by viewing this diagram (for MySQL 5.0) or this diagram (for MySQL 5.1).
What happens if I modify information_schema?
In reality, information_schema is a collection of read-only views. As such, it should be impossible to modify it and do any damage. However, the MySQL FAQ on this topic has this to say:
23.7.3: Can I add to or otherwise modify the tables found in the
INFORMATION_SCHEMA database?
No.
Since applications may rely on a
certain standard structure, this
should not be modified. For this
reason, we cannot support bugs or
other issues which result from
modifying INFORMATION_SCHEMA tables or
data.
This implies that if you do find yourself able to modify information_schema (which should be impossible, and is in MySQL, but other vendor implementations of SQL might allow it) you should at the very least choose not to. If you could damage/modify information_schema you'd be damaging the actual structure (e.g. table names, column types) of your other databases.
Does every user have their own copy of information_schema?
Each user can see information_schema that pertains to the tables and databases they have access to. Some users with heavily limited rights will still see information_schema but will see only NULL values for any information_schema queries. However, it is important to remember that information_schema is not an actual database, but simply a convenient way SQL provides so that you can select information about your database(s) and table(s).
From the reference documentation:
Each MySQL user has the right to
access these tables, but can see only
the rows in the tables that correspond
to objects for which the user has the
proper access privileges. In some
cases (for example, the
ROUTINE_DEFINITION column in the
INFORMATION_SCHEMA.ROUTINES table),
users who have insufficient privileges
will see NULL.
Where can I find more information?