Why are some tables in PostgreSQL available from all databases in my server? I found out that in my PostgreSQL server, there are 3 tables that I can call from any database. When I use \d command in psql I see those tables no matter to which database I'm connected.
I didn't even know it is possible for tables to be accessible from all databases.

What is this feature in PostgreSQL and how should I hide them from other databases?
This quote from the manual should help to lift the fog. From "Managing Databases" - "Overview":


  A database is a named collection of SQL objects (“database objects”).
  Generally, every database object (tables, functions, etc.) belongs to
  one and only one database. (However there are a few system catalogs,
  for example pg_database, that belong to a whole cluster and are
  accessible from each database within the cluster.) More accurately, a
  database is a collection of schemas and the schemas contain the
  tables, functions, etc. So the full hierarchy is: server, database,
  schema, table (or some other kind of object, such as a function).


Bold emphasis mine.

So there are some tables that are visible in every database of the same cluster. But only a few system catalogs like pg_database. Most other system catalogs, also present in each database, are separate instances, sharing the same name.

Nothing keeps you from creating tables of the same name in distinct databases or distinct schemas within the same database. If you have created tables (or other objects) in the template1 database of your cluster, one copy is added to every new database automatically. All of these are distinct tables regardless.

Finally, "server" is a fuzzy term. Might refer to a single DB cluster or to a system with several PostgreSQL DB clusters (listening to distinct ports) ... Use accurate terminology to avoid confusion.