Znalazłem przegląd zawarty w ten artykuł jeszcze bardziej przydatne niż rzeczywista dokumentacja MySQL za opisanie pełnego obrazu tego, w jaki sposób uprawnienia MySQL są przyznawane lub odmawiane.
Istotą artykułu przeglądowego jest to, że uprawnienia są kontrolowane przez szereg coraz bardziej precyzyjnych tabel uprawnień w mysql baza danych:mysql.user , mysql.db , mysql.host , mysql.tables_priv , mysql.columns_priv , mysql.procs_priv . Ogólna zasada jest taka, że wartość „Y” dla przywileju w bardziej szczegółowej tabeli ma pierwszeństwo przed wartością „N” w bardziej gruboziarnistej tabeli. Tak więc zalecaną strategią jest rozpoczęcie od odmowy większości uprawnień w user tabeli (co daje najszerszą kontrolę), a następnie w bardziej precyzyjnych tabelach dokonaj tylko określonych nadpisań, które chcesz.
W szczególności istnieje uprawnienie o nazwie SHOW_DATABASES
który jest określony przez Show_db_priv kolumna w mysql.user stół; będziesz chciał ustawić to na „N” dla danego użytkownika (i jak opisano powyżej, możesz również ustawić większość innych uprawnień w tabeli użytkowników na „N”), a następnie przyznać tylko uprawnienia, które użytkownik faktycznie potrzebuje w mysql.db lub mysql.tables_priv stół lub cokolwiek, co byłoby odpowiednie dla twojego konkretnego przypadku.