Jag har hittat översikten i denna artikel ännu mer användbar än den faktiska MySQL-dokumentationen för att beskriva helheten av hur MySQL-privilegier beviljas eller nekas.
Kontentan av översiktsartikeln är att privilegier kontrolleras av en serie av allt finare behörighetstabeller i mysql
databas:mysql.user
, mysql.db
, mysql.host
, mysql.tables_priv
, mysql.columns_priv
, mysql.procs_priv
. Den allmänna regeln är att ett "Y"-värde för ett privilegium i en mer finkornig tabell åsidosätter ett "N"-värde i en mer grovkornig tabell. Så den rekommenderade strategin är att börja med att neka de flesta privilegier i user
tabell (som ger den grövsta kontrollen), och gör sedan bara de specifika åsidosättningar som du vill ha i de mer finkorniga tabellerna.
I synnerhet finns det ett privilegium som heter SHOW_DATABASES
som bestäms av Show_db_priv
kolumnen i mysql.user
tabell; du vill ställa in detta till "N" för användaren i fråga (och som beskrivits ovan kanske du vill ställa in de flesta andra behörigheter i användartabellen till "N" också) och sedan bevilja endast de privilegier som användaren faktiskt behöver i mysql.db
eller mysql.tables_priv
bord eller vad som är lämpligt för just ditt fall.