Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Comment éviter qu'un utilisateur ne voie même que j'ai d'autres bases de données et accorder un accès sélectif à une vue sur une base de données ?

J'ai trouvé l'aperçu contenu dans cet article encore plus utile que la documentation MySQL pour décrire la vue d'ensemble de la manière dont les privilèges MySQL sont accordés ou refusés.

L'essentiel de l'article de présentation est que les privilèges sont contrôlés par une série de tables d'autorisations de plus en plus fines dans mysql base de données :mysql.user , mysql.db , mysql.host , mysql.tables_priv , mysql.columns_priv , mysql.procs_priv . La règle générale est qu'une valeur "Y" pour un privilège dans une table à granularité plus fine prévaut sur une valeur "N" dans une table à granularité plus grossière. La stratégie recommandée consiste donc à commencer par refuser la plupart des privilèges à l'user table (qui donne le contrôle le plus grossier), puis effectuez uniquement les remplacements spécifiques que vous souhaitez dans les tables plus fines.

En particulier, il existe un privilège appelé SHOW_DATABASES qui est déterminé par le Show_db_priv colonne dans mysql.user table; vous souhaiterez le définir sur "N" pour l'utilisateur en question (et comme décrit ci-dessus, vous souhaiterez peut-être également définir la plupart des autres autorisations de la table des utilisateurs sur "N"), puis n'accorder que les privilèges que l'utilisateur a réellement besoin dans le mysql.db ou mysql.tables_priv tableau ou tout ce qui serait approprié pour votre cas particulier.