Jeg har fundet oversigten indeholdt i denne artikel endnu mere nyttig end den faktiske MySQL-dokumentation for at beskrive det store billede af, hvordan MySQL-privilegier tildeles eller nægtes.
Kernen i oversigtsartiklen er, at privilegier styres af en række mere og mere detaljerede tilladelsestabeller i mysql
database:mysql.user
, mysql.db
, mysql.host
, mysql.tables_priv
, mysql.columns_priv
, mysql.procs_priv
. Den generelle regel er, at en "Y"-værdi for et privilegium i en mere finkornet tabel tilsidesætter en "N"-værdi i en mere grovkornet tabel. Så den anbefalede strategi er at starte med at nægte de fleste privilegier i user
tabel (som giver den groveste kontrol), og lav så kun de specifikke tilsidesættelser, som du ønsker i de mere finkornede tabeller.
Især er der et privilegium kaldet SHOW_DATABASES
som bestemmes af Show_db_priv
kolonnen i mysql.user
bord; du ønsker at sætte dette til "N" for den pågældende bruger (og som beskrevet ovenfor, vil du måske også indstille de fleste andre tilladelser i brugertabellen til "N") og derefter kun give de privilegier, som brugeren faktisk behov i mysql.db
eller mysql.tables_priv
tabel eller hvad der nu ville være passende for dit særlige tilfælde.