sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Hur undviker man att en användare ens ser att jag har andra DB:er och ger utvald åtkomst till en vy på en DB?

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.



  1. hur man använder sql join i mysql

  2. Oracle Fast Recovery Area

  3. Autoinkrementera ett fält tills ett visst villkor är uppfyllt mysql

  4. Infoga i MySQL från PHP (jQuery/AJAX)