Ik heb het overzicht gevonden in dit artikel zelfs nuttiger dan de eigenlijke MySQL-documentatie voor het beschrijven van het grote geheel van hoe MySQL-privileges worden toegekend of geweigerd.
De essentie van het overzichtsartikel is dat privileges worden beheerd door een reeks steeds fijnmaziger permissietabellen in de mysql
database:mysql.user
, mysql.db
, mysql.host
, mysql.tables_priv
, mysql.columns_priv
, mysql.procs_priv
. De algemene regel is dat een "Y"-waarde voor een privilege in een meer gedetailleerde tabel een "N"-waarde overschrijft in een meer gedetailleerde tabel. Dus de aanbevolen strategie is om te beginnen met het weigeren van de meeste privileges in de user
tabel (die de meest grove controle geeft), en voer vervolgens alleen de specifieke overschrijvingen uit die u wilt in de meer fijnmazige tabellen.
In het bijzonder is er een privilege genaamd SHOW_DATABASES
die wordt bepaald door de Show_db_priv
kolom in de mysql.user
tafel; u wilt dit voor de betreffende gebruiker op "N" zetten (en zoals hierboven beschreven, wilt u misschien ook de meeste andere machtigingen in de gebruikerstabel op "N" zetten) en vervolgens alleen de rechten toekennen die de gebruiker heeft eigenlijk nodig heeft in de mysql.db
of mysql.tables_priv
tafel of wat dan ook geschikt is voor uw specifieke geval.