MySQL Database Permission Question - PullRequest
       8

MySQL Database Permission Question

1 голос
/ 26 октября 2009

Я стал привыкать к разрешениям пользователей mysql в духе

GRANT ALL PRIVILEGES ON db_base.phonebook TO db_user @'%' IDENTIFIED BY 'db_passwd';

и другие вещи, которые влияют на то, как определенный пользователь взаимодействует с mysql. У меня есть база данных, которая была создана программой, которую я запускал, и у нее есть собственные разрешения. Я не могу понять, как редактировать разрешения этой базы данных. Да, это плохо сформулировано, поэтому я покажу вам следующее:

(root@localhost) [mysql]> SELECT host,db,user,select_priv,insert_priv FROM mysql.db;
+------+--------------------+------+-------------+-------------+
| host | db                 | user | select_priv | insert_priv |
+------+--------------------+------+-------------+-------------+
| %    | test               |      | Y           | Y           |
| %    | test\_%            |      | Y           | Y           |
| %    | lux_watertank_pmts | lux  | Y           | N           |
+------+--------------------+------+-------------+-------------+
3 rows in set (0.00 sec)

База данных test, к которой я хочу ограничить доступ. Как я могу изменить конфиденциальность базы данных, а не пользователя? Спасибо за помощь и понимание.

Ответы [ 2 ]

1 голос
/ 02 декабря 2010

Я столкнулся с той же проблемой (т.е. хочу ограничить доступ к «тестовой» базе данных, которая по умолчанию открыта для всех). Лучшее, что я могу придумать - это удалить следующие две строки из mysql.db и перезапустить mysql.

| %    | test               |      | Y           | Y           |
| %    | test\_%            |      | Y           | Y           |

Я еще не пробовал, но уверен, что это сработает. Есть ли другой способ?

1 голос
/ 28 октября 2009

MySQL использует многоуровневую модель управления доступом, т.е. е. Вы можете указать привилегии на глобальном уровне, уровне базы данных, таблицы и даже на уровне столбца.

Я не думаю, что вы можете делать именно то, что вы хотите - привилегии MySQL вращаются вокруг учетной записи пользователя. Установка разрешений по базе данных будет означать, что таблицы привилегий должны запрашиваться в обратном порядке, а это не так. Я попытался использовать% для пользователя, но это тоже не сработало.

Так что я думаю, что вы застряли без решения вашей конкретной проблемы.

Что касается разрешений в целом:

Хотя вы можете изменить их вручную, используя операторы GRANT, лично я считаю это утомительным. Вместо этого я рекомендую вам использовать MySQL Administrator Tool из MySQL GUI Tools .

Если вы изменяете таблицы привилегий напрямую - что возможно, но не обязательно рекомендуется - помните, что вы должны ввести команду FLUSH PRIVILEGES, чтобы эти изменения вступили в силу.

Это позволит вам визуально настроить разрешения. Я не могу вспомнить, можете ли вы заранее увидеть операторы GRANT, но вы, конечно, всегда можете взглянуть на них позже с оператором SHOW GRANTS FOR user@'host'.

Одно предостережение, если вы никогда не использовали инструмент раньше: вам придется перейти в меню Инструменты / Опции и включить " Показать глобальные привилегии ", " Показать Привилегии объекта схемы"и" Показать хосты в списке пользователей", чтобы включить полный доступ к более точной конфигурации разрешений - в противном случае будут показаны только глобальные привилегии.

...