SQL statement to hide all system databases in Server from a server login
From this post hide system databases sql server management studio.

I think it solves my problem.
However, for normal login and user, we can't hide master and tempdb database.

The following information are in this document.
hide system databases sql server management studio


  After this permission is denied, a login can see only metadata for
  master, tempdb, and databases that the login owns.