От автора: дорогая, ты кота и ребенка накормила? А базу данных забыла как всегда «накормить»! Потом опять будешь мучать меня вопросом, как установить пароль MySQL. Почему? Да потому что она снова останется незаполненной, наглотается всякой «гадости» из Сети и заблокируется. Потом опять придется менять пароль!
MySQL – настройки по умолчанию
Если честно, я не знаю, чем питаются базы данных. Но с ними, как и с ребенком, и с котом нужно уметь обращаться. Применять правильный подход, то есть правильно задавать пароли, вовремя создавать резервные копии, соблюдать правила синтаксиса SQL.
Из всех перечисленных правил обращения с «одомашненными» базами мы рассмотрим сегодня только одно – как задать пароль в MySQL. Но сначала поговорим о настройках по умолчанию, с которыми поставляется сервер СУБД.
Сразу после установки MySQL, если зайти в системную таблицу user, можно «с ужасом» обнаружить, что ни для одной из учетных записей не задан пароль. С точки зрения здравого смысла и элементарных правил безопасности так не должно быть. Вдобавок к этому для усиления уровня защищенности сервера неплохо бы поставить пароли на более мелкие структурные элементы, такие как БД и таблицы.
На самом деле разработчики СУБД поставляют серверы с пустыми значениями для всех учеток только потому, чтобы администратор баз данных как можно быстрее задал для пользователей свои пароли, не теряя времени на отмену установленных заранее.
В MySQL пароли по умолчанию пустые. Отсутствие значения в запросах указывается двумя одинарными кавычками ().
На практике
На протяжении нескольких материалов мы рассматривали основы администрирования пользовательских записей на уровне доступа к серверу. Но MySQL позволяет для каждой учетки настраивать доступ конкретно к определенной базе данных, таблице. И даже имеет целую систему привилегий, благодаря которым вы (как владелец учетной записи администратора или root) можете разрешать или запрещать пользователям различные операции на уровне таблиц и баз данных, задавать для них MySQL пароль.
Данные привилегии можно настраивать как с помощью запросов, написанных на SQL, так и через интерфейс программных оболочек для администрирования СУБД. Рассмотрим, как реализована система пользовательских привилегий в программном интерфейсе.
Запустите phpMyAdmin. Затем с главной страницы приложения перейдите в раздел «Пользователи», который находится в основном меню сверху. В таблице «Обзор учетных записей» выберите любую (поставив вначале галочку). После чего нажмите на ссылку «Редактирование привилегий».
В первом пункте появившегося всплывающего окна можно настроить глобальные привилегии (какие операции с данными и структурой разрешено выполнять конкретной учетной записи). В следующем разделе уже можно установить ограничения и разрешения на уровне баз и даже таблиц.
Но в рамках этого материала мы не буде углубляться в изучение системы привилегий. Оставим эти «вкусности» на следующий раз. Давайте рассмотрим, как установить в MySQL пароль пользователя БД.
Немного конкретики
В MySQL у вас не получится задать доступ к определенной БД через пароль для нескольких пользователей. Хорошо это или плохо – судить не нам. В разных ситуациях данная «аксиома» может стать как достоинством, так и недостатком. Тем не менее, самой уязвимой остается пользовательская запись администратора СУБД, для которой нет ограничений на редактирование всех баз сервера и изменения их структуры (в том числе и системной БД mysql).
Но мы отвлеклись ,вернемся к нашему «шалашу». Давайте с помощью phpMyAdmin создадим пользователя и наделим его всеми привилегиями на БД «world».
В списке слева выбираем нужную базу. Затем переходим в раздел «Привилегии». Ниже таблицы с учетками БД жмем на ссылку «Добавить пользователя».
К сожалению после последнего «эксперимента» Вован мигрировал на другой сервер БД :). Поэтому, как поставить пароль на MySQL, будем выяснять на еще одном «другане» — Серже. Он еще тот «хлыщ», и непонятно, как надолго его хватит. Так что приступим, пока и этот не сбежал.
В окне «Добавить пользователя» заполняем все поля, как показано на следующем скриншоте. Указываем имя пользователя, пароль, локальный хост. Ниже наделяем Сержа полным «пакетом» привилегий на БД.
Теперь проверим, как эти привилегии действуют. Зайдем на сервер СУБД с «черного хода», то есть через командную строку:
Запустите утилиту. Запустите исполняемый файл сервера БД под учеткой и паролем Сержа (не забудьте в MySQL установить пароль этому пользователю). Код запроса:
1 |
Z:\usr\local\mysql-5.5\bin\mysql.exe -u serj –pserj |
Выберите БД «world» и сделайте из нее выборку первых 10 строк таблицы city. Код запросов:
1 2 |
use world; SELECT * FROM city LIMIT 0,10; |
В результате выполнения запросов мы получили, что ожидали. Это говорит о том, что привилегии Сержа действуют.
Но как далеко простираются «возможности» Сержа. Зная скверный характер этого «щегла» лучше перестраховаться и проверить. Может, придется установить пароль в MySQL не только на все БД и таблицы, но и на все строки. А то «Сержик» все их быстренько «свистнет» 🙂
Попробуем под его учетной записью сделать выборку из другой БД. Например, из db1. Но далеко Сержу продвинуться не удалось: сервер выдал системное сообщение о том, что данный пользователь не имеет никаких привилегий на эту базу (в данном случае права осуществлять из нее выборку данных).
Сегодня мы более углубленно изучили систему привилегий и ролей, реализованных СУБД. Из всего сказанного можно сделать вывод, что нужно в MySQL устанавливать пароль для root настолько надежный, насколько возможно. Хотя с другой стороны использование схемы аутентификации БД на основе отдельных пользовательских записей имеет свои плюсы. Но рассмотрение данной темы оставим для следующих статей. И не забудьте правильно кормить свою базу данных, а то опять «съест» что-то не то!