После установки MySQL изначальные привилегии доступа задаются при помощи `scripts/mysql_install_db'. See section 2.3.1 Обзор быстрой установки. Скрипт mysql_install_db запускает сервер mysqld , а затем инициализирует таблицы предоставления привилегий со следующим набором привилегий:
- В качестве суперпользователя создается MySQL root который может делать все, что угодно. Соединения должны устанавливаться с локального компьютера. Примечание: Изначально пароль root пуст, поэтому кто угодно может подсоединиться в качестве root без пароля и получить все привилегии.
- Создается анонимный пользователь, который может выполнять любые операции над базами данных с именами test или начинающимися с test_ . Соединения должны устанавливаться с локального компьютера. Это означает, что любой локальный пользователь может подключиться без пароля и будет воспринят сервером как анонимный пользователь.
- Остальные привилегии запрещены. Например, обычный пользователь не может использовать команды mysqladmin shutdown или mysqladmin processlist .
Примечание: В Windows принятые по умолчанию привилегии отличаются от указанных. See section 2.6.2.3 Работа MySQL в среде Windows.
Поскольку сразу после установки программа совершенно не защищена, первым делом необходимо задать пароль для пользователя MySQL root . Это можно сделать следующим образом (обратите внимание, что пароль указывается при помощи функции PASSWORD() ):
Опытные пользователи могут работать непосредственно с таблицами назначения привилегий:
Еще один способ задать пароль — воспользоваться командой mysqladmin :
Изменять пароли других пользователей могут только пользователи с правом записи/обновления базы данных mysql . Все обычные пользователи (не анонимные) могут модифицировать только свой собственный пароль при помощи указанных выше команд или команды SET PASSWORD=PASSWORD(‘new_password’) .
Обратите внимание на то, что если пароль в таблице user обновляется напрямую при помощи первого метода, требуется указать серверу на необходимость перезагрузки таблиц привилегий (при помощи команды FLUSH PRIVILEGES ), иначе изменения не будут учтены.
После того, как был задан пароль root , этот пароль необходимо будет вводить, подсоединяясь к серверу как root .
Можно оставить пароль root пустым, тогда не придется его указывать во время проведения дополнительных установок и тестирования. Тем не менее, обязательно укажите его, прежде чем использовать сервер для любой реальной работы.
Ознакомьтесь со скриптом `scripts/mysql_install_db', чтобы увидеть, как задавать привилегии по умолчанию. Данный скрипт можно использовать как основу для добавления других пользователей.
Если необходимо, чтобы изначальные привилегии отличались от указанных выше, можно изменить базу mysql_install_db еще до ее запуска.
Чтобы полностью заново создать таблицы предоставления привилегий, удалите все файлы с расширениями `.frm', `.MYI' и `.MYD' в каталоге, где находится база данных mysql (это каталог с именем mysql в каталоге базы данных, который выводится на экран при запуске команды mysqld —help ). Затем запустите скрипт mysql_install_db (возможно, после добавления в него необходимых привилегий).
Примечание: в более старых, чем 3.22.10, версиях MySQL файлы с расширением `.frm' удалять не следует. Если же случайно они были удалены, их следует восстановить, скопировав из дистрибутива MySQL до запуска mysql_install_db .
Довольно часто происходит такая ситуация, что пароль для учетной записи root в MySQL необходимо восстановить, поменять или сбросить. Хорошо, если он известен, но бывают случаи, когда пароль был утерян или неизвестен с самого начала. В данной статье пойдет речь о том, как этот пароль восстановить, имея доступ к серверу, на котором запущен mysql-server для обоих случаев, когда пароль о учетной записи root ИЗВЕСТЕН и НЕ ИЗВЕСТЕН.
Как поменять пароль root в MySQL
Если пароль root ИЗВЕСТЕН
Возьмем самую простую ситуацию, когда пароль от учетной записи root вам известен и все что нужно сделать, это просто его поменять. Чтобы задать новый пароль для учетной записи root, необходимо проделать следующие действия:
1) Подключаемся в консоль MySQL сервера с правами root (не забываем ввести пароль, после появления соответствующего запроса):
2) Меняем пароль для пользователя root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
3) Перезагружаем привилегии, чтобы изменения вступили в силу:
4) Для выхода из консоли MySQL сервера выполняем команду выхода:
После этого, пароль должен поменяться.
Если пароль root НЕ ИЗВЕСТЕН
Если вы не знаете текущий пароль root (потеряли, забыли) в MySQL, то придется пойти чуть более сложным путем, чем описанные действия выше:
1) Останавливаем mysqld:
2) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
3) Создаем каталог /var/run/mysqld для запуска mysqld в safe режиме из консоли
4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)
5) Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция —skip-grant-tables). А также отключаем доступ к серверу через TCP/IP (с помощью опци и —skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost.
В случае успешного запуска, вывод в консоли должен быть примерно таким:
6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:
7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку "ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded", а нам это не нужно:
Вывод в результате выполнения данной команды должен быть примерно таким:
8) Перезагружаем привилегии:
9) Меняем пароль для нужного пользователя, в нашем случае это root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
9) После чего, вводим команду exit для отключения:
10) Выключаем запущенный в ручном режиме Mysqld сервер:
Если все пройдет успешно, то вывод должен быть примерно таким:
То можно принудительно завершить процесс с помощью следующей команды:
11) Проверяем, что нет запущенных процессов mysqld:
12) Запускаем Mysql-server в нормальном режиме:
И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Дата публикации: 2018-11-28
От автора: базы данных MySQL известны своей безопасностью. Для того, чтобы получить права суперпользователя, необходимо ввести пароль, который был создан при установке. Но очень часто серверы с базами данных перепродаются, достаются в наследство или передаются любым другим способом. Одним их самых распространённых действий в MySQL, сброс пароля root, как раз и является. Сегодня мы расскажем о том, что такое рут-пасс, как поменять и что делать, если этот реквизит аутентификации вам неизвестен.
Что такое Рут-пароль
Если вы работали с Unix-подобными операционными системами, то термин «рут-права» вам знаком. Он значит, что пользователь получает полное управление над системой, может ее видоизменять с помощью программного кода, доустанавливать, обновлять пакеты и даже провести полную санацию ОС. В Windows тоже есть подобный режим работы, его принято называть administrator.
В Linux существует и альтернативный способ администрирования системы: чтобы не переходить к режиму superuser, можно воспользоваться командой sudo. Именно так устанавливается программное обеспечение и настраивается конфигурация операционки. К сожалению, подобного «промежуточного» режима нет в MySQL и, чтобы сменить password в базах данных, нам придется рутироваться. Это не то же самое, что рут-права в оси: все настройки происходят благодаря root в MySQL.
При установке программного обеспечения для базы данных новички часто допускают ошибки. Одной из тех, которая касается темы нашей статьи, является сеттинг слишком сложного кодового слова, либо небрежность при создании. После, разработчик сталкивается с тем, что абсолютно не помнит рут-пасса и не может произвести базовых конфигурационных действий.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Стандартные привилегии
Это одни из первых шагов при установке СУБД: приоритеты доступа обозначаются еще после запуска команды mysql_install_db. Инициализируются таблицы безопасности, которые обозначают стандартный порядок доступа к режиму суперпользователя. Одной из составляющих является наличие root и пароля к нему.
Как только установка MySQL завершена, получить права суперпользователя может каждый, кто подойдет к терминалу: достаточно лишь ввести нужную команду. Дело в том, что изначально в таблицах безопасности нет пасса для root, если только пользователь не задал его в процессе установки.
Тем не менее, задать пароль пользователя необходимо. Ваши базы данных – это вся информация, которая обеспечивает работу программного обеспечения, веб-приложения или другого продукта, который вы создаете. Это можно сделать через графический интерфейс MySQL Workbench либо через командную строку, что предпочтительней. Наиболее опытные предпочитают даже не строку, а непосредственно таблицы безопасности. Это немного сложнее и не стоит того, если ваша работа не связана с ними в дальнейшем. Результат не изменится в зависимости от способа.
Заменить рут-пасс
Если вам известен пароль, то смена не создаст трудностей. Напротив, это можно сделать в несколько команд из строки.
Для начала, через безопасную оболочку Shell нужно подключится к серверу, который значится, как виртуальный. Далее, необходимо получить root права для работы с правами суперпользователя. Выглядит это так: