Намерих прегледа, съдържащ се в тази статия дори по-полезно от действителната документация на MySQL за описание на голямата картина на това как се предоставят или отказват привилегии на MySQL.
Същността на обзорната статия е, че привилегиите се контролират от поредица от все по-фини таблици с разрешения в mysql
база данни:mysql.user
, mysql.db
, mysql.host
, mysql.tables_priv
, mysql.columns_priv
, mysql.procs_priv
. Общото правило е, че стойността "Y" за привилегия в таблица с по-дребни зърна има предимство пред стойност "N" в таблица с по-груби гранули. Така че препоръчителната стратегия е да започнете с отказ на повечето привилегии на user
таблица (която дава най-грубия контрол) и след това направете само конкретните замени, които искате в по-фините таблици.
По-специално, има привилегия, наречена SHOW_DATABASES
което се определя от Show_db_priv
колона в mysql.user
маса; ще искате да зададете това на „N“ за въпросния потребител (и както е описано по-горе, може да искате да зададете и повечето други разрешения в потребителската таблица на „N“) и след това да предоставите само привилегиите, които потребителят всъщност се нуждае от mysql.db
или mysql.tables_priv
маса или каквото и да е подходящо за вашия конкретен случай.