Це нормальний набір привілеїв MySQL?


9

Використовуючи phpmyadmin для локальних налаштувань тестового лампа, а також, як правило, заголовок, є 3 користувачі, позначені як користувач = ЩО, пароль = НІ, наприклад:

USER | HOST    | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any  | %       | No       | USAGE       | No
Any  | Local   | No       | USAGE       | No
Any  | Domain  | No       | USAGE       | No
-----+---------+----------+-------------+------

Жоден з трьох користувачів не має певних привілеїв для будь-яких таблиць, тому, здається, вони не можуть зробити багато. Це якийсь загальний захід безпеки, щоб чітко вказати, що "Будь-який" користувач, який не входить до жодної іншої групи користувачів, не має привілеїв?


Це насправді дуже гарне запитання, оскільки mysql поставляється з дозволами за замовчуванням, які не публікуються. +1 !!!
RolandoMySQLDBA

Відповіді:


6

Насправді ці три облікові записи користувачів насправді досить небезпечні. Вони становлять дуже велику загрозу для тестових баз даних.

На жаль, mysql має повний доступ до тестових баз даних. Як їх знайти?

Запустіть цей запит:

 SELECT user,host,db from mysql.db;

Після встановлення mysql ви побачите два рядки, які надають повний доступ до будь-якої бази даних з назвою "test" або перші 5 символів - "test_".

Чому це проблема ???

Спробуйте виконати цю команду:

$ mysql -u'' -Dtest

Ви підключите тестову базу даних без пароля.

Тепер створіть таблицю і завантажте її рядком:

CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);

Гаразд, велика справа. Чи можете ви подвоїти цю таблицю в розмірі 30 разів ???

INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;

Що ти отримуєш ?? Таблиця з 1 073 741 824 рядками. Легко, 4 ГБ +.

Уявіть, що створюєте будь-яку таблицю будь-якого розміру. Як щодо створення групи таблиць у тестовій базі даних та вільного доступу до них за бажанням?

Найкраще, що ви можете зробити за цих обставин - це запустити цей запит:

DELETE FROM mysql.db;

і перезапустити mysql. Тоді ці три рахунки будуть належним чином виведені з ладу.

Спробувати !!!

ОНОВЛЕННЯ 2011-09-12 10:00 EDT

Це видалення:

DELETE FROM mysql.db;
FLUSH PRIVILEGES;

це саме те, що потрібно для початкової установки. Однак якщо у вас вже є користувачі, ви можете запустити це:

DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;

Це видалить два конкретні дозволи DB.

Як я вже згадував у своїй відповіді, три дозволу дуже небезпечні для тестових баз даних. Запуск цього DELETE нейтралізує ці акаунти, що мають повні права на тестування баз даних.


Дякуємо за пояснення, але чи ВИДАЛИТИ З mysql.db видалити щось інше з цих 3 користувачів? Я не хочу видаляти будь-які дані / привілеї, окрім цих 3
Кріс,

@Chris - я оновив свою відповідь 3 години тому, щоб відповісти на ваш коментар.
RolandoMySQLDBA

-1

Небезпека зберігання цих анонімних облікових записів уже дуже добре пояснена.

Посібник містить вичерпний контрольний список кроків, які слід вжити, щоб " Захистити початкові облікові записи MySQL ".

Зокрема, у розділі "Призначення анонімних паролів облікових записів" рекомендується видалити ці облікові записи.

Також в розділі "Захист тестових баз даних" вказується:

За замовчуванням mysql.dbтаблиця містить рядки, які дозволяють доступу будь-якого користувача до testбази даних та інших баз даних з іменами, які починаються з test_. (...) Це означає, що такі бази даних можуть використовуватися навіть обліковими записами, які в іншому випадку не мають привілеїв. Якщо ви хочете видалити доступ будь-якого користувача до тестових баз даних, виконайте наступне:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) З попередньою зміною користуватися ним можуть лише користувачі, які мають привілеї та привілеї глобальної бази даних, явно надані для тестової бази даних.

Зокрема, у системах, які не є Windows, рекомендується запустити mysql_secure_installationсценарій. Я вважаю, що інсталятор Windows пропонує кілька профілів установки. Деякі з них автоматично відключать незахищені налаштування. Якщо ні, контрольний список потрібно буде запустити вручну.

Слід бути обережними з сторонніми установниками, такими як WAMP. Дозволу за замовчуванням, зазначені в офіційному посібнику по MySQL, не завжди можуть застосовуватися до цих спеціальних (як у "поза межами сфери посібника) установок. Звичайно, для виробничого сервера слід уникати встановлення WAMP і подібних будь-якою ціною. .


чому суперечка на цю відповідь?
користувач12345
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.