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.