sql >> Database >  >> RDS >> Mysql

MySQL:Hoe voorkom je dat een gebruiker zelfs maar ziet dat ik andere DB's heb en hoe je selecte toegang verleent tot één weergave op één DB?

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.



  1. Query om het laatste item in een geschiedenistabel op te halen in Laravel 5.2

  2. Kun je if-then-else-logica in SQL hebben?

  3. Grote BLOB's doorgeven aan opgeslagen procedure

  4. MySQL-functies gebruiken in door PHP PDO voorbereide statements