Шаг 1 — Определяем версию системы управления базой данных
Найдите, в какой папке у вас расположен файл mysqld.exe. При установке по данной инструкции, этот файл расположен в папке C:\Server\bin\mysql-8.0\bin\.
Откройте командную строку. Нам понадобятся права администратора, поэтому делаем следующее: нажмите Win+x и там выберите Windows PowerShell (администратор):
Теперь перейдите в командной строке в директорию с файлом mysqld.exe, для этого используйте команду вида:
cd путь\до\папки
Например, у меня это папка C:\Server\bin\mysql-8.0\bin\, тогда команда такая:
cd C:\Server\bin\mysql-8.0\bin\
Нужно определить версию MySQL/MariaDB, для этого выполните команду:
.\mysql --version
Пример вывода:
C:\Server\bin\mysql-8.0\bin\mysqld.exe Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)
База данных MySQL: что это такое и в чем ее преимущества
MySQL – это реляционная система управления базами данных с открытым исходным кодом, написанная на языках программирования C и C++. Благодаря ей можно оптимизировать работу сайта или мобильного/десктопного приложения.
База данных – это место для структурированного хранения данных. Например, чтобы найти в смартфоне сохраненную картинку, мы используем для этого галерею. В данном случае картинки – это данные, а галерея – база данных.
Такой же подход используется и на многих сайтах, где подключены формы регистрации, системы оформления заказа и прочее. Когда вы регистрируетесь на сервисе, вся полученная от вас информация сохраняется в базе данных – благодаря этому вы можете повторно войти в свой аккаунт и получить доступ к внесенным ранее изменениям.
Если вести крупный ресурс без БД, то на это будет уходить очень много времени и средств. Базы данных группируют и упорядочивают информацию, упрощают получение доступа к ней. Чтобы администрировать такой большой поток данных, используются СУБД: MySQL, Microsoft SQL Server, PostgreSQL и другие.
MySQL хранит всю информацию в табличном виде. Извлечь данные из одной или нескольких таблиц можно с помощью запроса. Запросы в MySQL – это то, на чем все строится, с их помощью можно выполнять всевозможные операции с данным.
Столбцы таблицы всегда строго упорядочены, а расположение строк при необходимости может меняться в зависимости от информации в ячейках. Посмотрите на простую адресную книжку в виде таблицы:
Принцип работы с таблицами следующий: к серверу, на котором хранятся и обрабатываются структурированные данные, подключаются клиенты для получения необходимой информации, а для взаимодействия между пользователем и сервером используется специальное ПО. Заполнение подобных и более крупных таблиц происходит с помощью языка программирования SQL.
Исходя из пользовательского опыта, можно выделить следующие особенности MySQL:
- быстрая скорость доступа и обработки данных;
- надежная защита информации;
- простота использования;
- совместимость с Windows и Linux;
- бесплатность;
- возможность контролировать доступ к данным и учетным записям;
- шифрование паролей.
На этом с теоретической частью закончим.
Создание нового пользователя в MySQL
После установки MySQL в базе данных автоматически будет создан новый пользователь root. Работать под таким именем небезопасно, поэтому рекомендуется создавать нового пользователя и выполнять необходимые действия под ним. Давайте рассмотрим два способа создания нового пользователя в MySQL – через phpMyAdmin и через консоль.
Вариант 1: с помощью phpMyAdmin
Нам потребуется phpMyAdmin – приложение для работы с базой данных, которое обычно по умолчанию предустановлено на хостинге либо локальном сервере.
Чтобы добавить нового пользователя в phpMyAdmin, воспользуемся инструкцией:
- На главной странице через верхнее правое меню переходим во вкладку «Учетные записи пользователей». Затем выбираем «Добавить учетную запись пользователя».
- Следующим шагом вводим новое имя пользователя и хоста, прописываем пароль. В завершение жмем на кнопку «Генерировать».
- Теперь нам потребуется задать привилегии для нового пользователя. Если вы хотите установить доступ только для определенных баз данных, то можете пропустить этот пункт – просто нажмите на кнопку «Вперед», расположенную внизу страницы.
- Будет добавлен новый пользователь с указанным именем.
Подробнее о правах доступа мы поговорим чуть позже, а пока давайте рассмотрим альтернативный метод добавления пользователя в БД.
Вариант 2: через консоль
Если вы подключаетесь к серверу по SSH, то этот способ для вас. Нам потребуется выполнить несколько команд:
Первым дело активируем сервер базы данных:
mysql
Создадим нового пользователя:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pswrd';
В кавычках потребуется изменить следующие данные: user – имя пользователя, pswrd – пароль.
Пока что пользователь не имеет разрешений, а значит, не может получить доступ к MySQL. Для решения такой проблемы пропишем еще одну строчку кода:
GRANT ALL PRIVILEGES ON * . * TO 'user'@'localhost';
Мы выдали указанному пользователю все доступные права. Осталось сохранить внесенные изменения с помощью команды:
FLUSH PRIVILEGES;
Готово! Теперь вы знаете, как создать нового пользователя в MySQL с правами доступа root.
Запуск скрипта MySQL для создания объектов базы данных
Так как мы решили создать схему в целевой СУБД, скрипт SQL для переноса будет выполнен на целевом сервере MySQL. Вы можете просмотреть ход его выполнения, как показано на снимке экрана ниже.
-
После создания схем и их объектов нажмите кнопку Далее.
На странице Создание целевых результатов отображается список объектов, которые были созданы, и уведомления об ошибках, обнаруженных при их создании, как показано на снимке экрана ниже.
-
Проверьте сведения на этой странице, чтобы убедиться, что все выполнено правильно.
В рассматриваемом в этой статье примере ошибок нет. Если устранять ошибки по сообщениям нет необходимости, можно отредактировать скрипт миграции.
-
В поле Объект выберите объект, который нужно изменить.
-
В разделе Скрипт SQL CREATE для выбранного объекта отредактируйте скрипт SQL, а затем нажмите кнопку Применить, чтобы сохранить изменения.
-
Выберите Повторно создать объекты, чтобы запустить скрипт с изменениями.
В случае сбоя скрипт придется снова отредактировать. Вы можете вручную исправить ошибки в скрипте SQL и выполнить его еще раз. В примере из этой статьи мы ничего не меняем, поэтому оставляем скрипт как есть.
-
Выберите Далее.
phpmyadmin
При открытии в браузере phpmyadmin получаете сообщение:
ErrorMySQL said: #1045 — Access denied for user ‘root’@’localhost’ (using password: NO)
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки
$cfg’Servers’$i’user’ = ‘root’; // MySQL user$cfg’Servers’$i’password’ = »; // MySQL password (only needed
$cfg’Servers’$i’user’ = ‘ЛОГИН’; $cfg’Servers’$i’password’ = ‘ПАРОЛЬ’
Как поменять пароль root в MySQL
Если пароль root ИЗВЕСТЕН
Возьмем самую простую ситуацию, когда пароль от учетной записи root вам известен и все что нужно сделать, это просто его поменять. Чтобы задать новый пароль для учетной записи root, необходимо проделать следующие действия:
В том случае, если вы пользуетесь каким-либо веб-интерфейсом, например, phpMyAdmin, то тогда вы можете пропустить пункт 1 и сразу же выполнить запрос для нужной версии MySQL (пункт 2) прямо из интерфейса phpMyAdmin (вкладка SQL).
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…)
— это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
3) Перезагружаем привилегии, чтобы изменения вступили в силу:
4) Для выхода из консоли MySQL сервера выполняем команду выхода:
После этого, пароль должен поменяться.
Если пароль root НЕ ИЗВЕСТЕН
Если вы не знаете текущий пароль root (потеряли, забыли) в MySQL, то придется пойти чуть более сложным путем, чем описанные действия выше:
1) Останавливаем mysqld:
2) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
3) Создаем каталог для запуска mysqld в safe режиме из консоли
4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)
5) Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция —skip-grant-tables). А также отключаем доступ к серверу через и —skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost.
В случае успешного запуска, вывод в консоли должен быть примерно таким:
6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:
7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку «ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded», а нам это не нужно:
Вывод в результате выполнения данной команды должен быть примерно таким:
Перезагружаем привилегии:
9) Меняем пароль для нужного пользователя, в нашем случае это root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8…)
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3…)
— это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
9) После чего, вводим команду exit для отключения:
10) Выключаем запущенный в ручном режиме Mysqld сервер:
Если все пройдет успешно, то вывод должен быть примерно таким:
Если же команда не сработала и вы получаете вот такую (или любую другую) ошибку:
То можно принудительно завершить процесс с помощью следующей команды:
11) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
12) Запускаем Mysql-server в нормальном режиме:
И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Возможные ошибки
1. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
Причина: в новых версиях по умолчанию активированы политики на проверку сложности пароля. Их список можно посмотреть командой:
> SHOW VARIABLES LIKE ‘validate_password%’;
Вывод команды будет, примерно, следующим:
+—————————————+———+
| Variable_name | Value |
+—————————————+———+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+—————————————+———+
* где:
- validate_password_check_user_name — пароль не должен совпадать с именем пользователя.
- validate_password_dictionary_file — использовать специальный файл со словарем запрещенных паролей.
- validate_password_length — минимальная длина пароля.
- validate_password_mixed_case_count — сколько, как минимум, должно быть символов в малой и большой раскладках.
- validate_password_number_count — какое минимальное количество цифр использовать в пароле.
- validate_password_policy — позволяет задать определенный набор правил. Доступны значения LOW (или 0), MEDIUM (1), STRONG (2).
- validate_password_special_char_count — минимальное количество специальных символов (например, # или !).
Решение:
- Привести пароль в соответствие требованиям политик.
- Отключить политику, которая не позволяет использовать желаемый пароль. Например, чтобы отключить требование использовать цифры вводим:
> SET GLOBAL validate_password_number_count = 0;
2. ERROR 1728 (HY000): Cannot load from mysql.tables_priv. The table is probably corrupted
Причина: система считает, что таблица tables_priv в базе mysql неисправна.
Решение: чаще всего, ошибка возникает при переносе баз с одного сервера в другой. Если версии СУБД разные, таблица tables_priv может работать со сбоями. Для исправления необходимо выполнить команду mysql_upgrade — она проверяет все таблицы на совместимость с текущей версией MySQL/MariaDB и вносит исправления. Применение команды:
mysql_upgrade -u root -p
Запуск миграции
-
Чтобы запустить миграцию, войдите в MySQL Workbench и щелкните значок «Главная».
-
На панели навигации слева выберите значок мастера миграции, как показано на снимке экрана ниже.
Отобразится страница Обзор мастера миграции, как показано ниже.
-
Определите, установлен ли драйвер ODBC для сервера MySQL, выбрав элемент Открыть администратор ODBC.
В нашем случае на вкладке Драйверы можно заметить, что установлены два драйвера ODBC для сервера MySQL.
Если драйвер ODBC MySQL не установлен, используйте установщик MySQL, с помощью которого установили MySQL Workbench. Дополнительные сведения об установке драйвера ODBC MySQL см. в следующих документах:
- MySQL :: Руководство разработчика MySQL Connector/ODBC :: 4.1 «Установка соединителя/ODBC в Windows»
- Драйвер ODBC для MySQL: установка и настройка подключения (пошаговое руководство) — {coding}Sight (codingsight.com)
-
Закройте диалоговое окно Администратор источников данных ODBC и продолжайте процесс миграции.
Сброс пароля root
Определение версии MySQL
Стоит сразу определить установленную версию MySQL, поскольку на разных версиях программы, команды, в дальнейшем, могут отличаться.
Для определения версии MySQL в терминале достаточно ввести команду:
mysql --version
Должен появится похожий вывод:
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
Строку можно сохранить в текстовом документе, чтобы не забыть версию MySQL.
Остановка сервера
Для отключения привилегий нужно остановить сервер MySQL, введя в терминале команду:
sudo systemctl stop mysql
После выполнения команды процесс сервера MySQL будет приостановлен.
Отключение привилегий MySQL сервера
Отключение привилегий СУБД – исключение из процесса загрузки Grant-таблиц, которые хранят данные для авторизации пользователей (пароли и логины). Это позволит выполнить вход в MySQL без авторизации и восстановить пароль root по умолчанию.
Для начала создаётся конфигурационный файл, который изменяет параметры запуска MySQL. Для этого нужно ввести в терминале команду:
sudo systemctl edit mysql
В созданный текстовой файл нужно внести следующие строки, которые ограничат загрузку Grant-таблиц и запретят выход в сеть (для обеспечения безопасности):
ExecStart= ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking
Для сохранения изменений в файле нужно нажать «CTRL+X», потом «Y» и подтвердить изменения нажатием «Enter».
Для применения изменений в процессе загрузки MySQL, нужно обновить конфигурацию Systemd командой:
sudo systemctl daemon-reload
Остаётся запустить сервер MySQL с отключенными привилегиями. Для этого в терминале вводится команда:
sudo systemctl start mysql
Изменение пароля root пользователя MySQL
Таблицы привилегий отключены и ничего не мешает выполнить вход в консоль MySQL от имени root пользователя без авторизации.
Для выполнения входа в консоль MySQL нужно ввести команду:
sudo mysql -u root
Авторизация должна пройти без введения пароля.
Для того чтобы сменить пароль пользователя root, нужно загрузить Grant-таблицы, введя команду в терминал MySQL:
FLUSH PRIVILEGES;
Изменение пароля для MySQL 5.7.6 и новее
Смена пароля root пользователя в консоли MySQL выполняется последовательным введением следующих команд:
UPDATE mysql.user SET authentication_string = PASSWORD('MY_NEW_PASSWORD') WHERE User = 'root'; FLUSH PRIVILEGES;
Вместо «MY_NEW_PASSWORD» вводится собственный пароль. Не стоит забывать о безопасности и ставить лёгкие пароли, так как это сыграет на руку злоумышленникам.
Изменения пароля на MySQL 5.7.5 и позднее
Нужно последовательно ввести следующие команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD'); FLUSH PRIVILEGES;
В поле «MY_NEW_PASSWORD» вводится собственный пароль.
Завершение
В случае успеха, в обоих случаях, будет получен следующий вывод:
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
Восстановление привилегий и запуск сервера MySQL
После изменения пароля необходимо восстановить параметры загрузки сервера MySQL, удалив конфигурацию Systemd. Для этого в терминале последовательно вводятся команды:
sudo systemctl revert mysql sudo systemctl daemon-reload
Далее необходимо перезапустить сервер MySQL со стандартными параметрами. Перезагрузка выполняется следующей командой:
sudo systemctl restart mysql
mysql -u root -p
Что делать?
Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.
SELECT user,host,password FROM mysql.user;
+—————+——————+——————————————-+
| user | host | password |
+—————+——————+——————————————-+
| root | house-f26710394 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| aa | localhost | *196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7 |
| test | localhost | |
| new_user | % | |
| | % | *D7D6F58029EDE62070BA204436DE23AC54D8BD8A |
| new@localhost | % | *ADD102DFD6933E93BCAD95E311360EC45494AA6E |
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+—————+——————+——————————————-+
Если изначально была ошибка:
-
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
значит вы указывали при подключении неверный пароль, так как пользователь root@localhost существует. Сам пароль храниться в зашифрованном виде и его нельзя узнать, можно лишь задать новый
SET PASSWORD FOR root@localhost=PASSWORD(‘новый пароль’);
-
ERROR 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: YES)
в данном случае в таблице привилегий отсутствует пользователь ‘ODBC’@’localhost’. Его нужно создать, используя команды GRANT, CREATE USER и SET PASSWORD.
Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Оказалось, что было установлено два сервера MySQL, настроенных на один порт.
Разобрать старую версию
1. Остановите старую версию службы mysql в службе. 2. Найдите MySQL в настройках и удалите его. Я удалил его здесь, поэтому его больше нет 3. Затем удалите все следы MySQL. 1. MySQL в каталоге C: \ Program Files 2. MySQL в каталоге C: \ ProgramData 3. MySQL в каталоге C: \ Program Files (x86) 4. MySQL по пути, который вы изначально установили. Затем откройте реестр и удалите папку MySQL по следующему пути 5.HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL 6.HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL 7.HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL Я удалил эти 7 мест и заполнил их. Конечно, все могут быть разными. Если в этих 7 каталогах есть MySQL, удалите их и пропустите те, которых нет. На всякий случай нажмите на компьютер, а затем редактируйте-> найти. Введите MySQL. Если есть результаты поиска, удалите результаты. После вышеуказанных операций результатов нет. На этом работа по разборке завершена, закройте все интерфейсы, перезагрузите компьютер, MySQL больше не существует на вашем компьютере.
Как сбросить забытый пароль MySQL
Если вы вдруг забыли (или не знали) пароль от MySQL в Kali Linux, то эта инструкция поможет вам сбросить (заменить на новый), но не узнать пароль рута. Если вас это устраивает, то в первом терминале наберите:
sudo systemctl stop mysql sudo mysqld_safe --skip-grant-tables
В другом терминале
mysql -u root mysql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль'; FLUSH PRIVILEGES; quit
Обратите внимание, что строку НОВЫЙ ПАРОЛЬ нужно заменить на тот пароль, который вы хотите установить для рута MySQL.
В первом терминале CTRL+C или в любом терминале:
sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
А затем:
sudo systemctl start mysql
Всё, теперь у вашей MySQL новый пароль.
Кстати, этот метод прекрасно сработает на любом Linux, а не только на Kali Linux. Но нужно учитывать, что команды для запуска и остановки служб на разных Linux могут различаться. Приведённые здесь команды без изменения сработают для производных Debian (Mint, Ubuntu).
Проверка согласованности перенесенных схем и таблиц
-
Затем войдите в экземпляр целевой базы данных MySQL, чтобы убедиться, что перенесенные схемы и таблицы соответствуют исходной базе данных MySQL.
В нашем случае можно увидеть, что все схемы (sakila, moda, items, customer, clothes, world и world_x) из базы данных Amazon RDS для MySQL MyjolieDB успешно перенесены в экземпляр базы данных Azure MySQL azmysql.
-
Чтобы проверить количество таблиц и строк, выполните следующий запрос для обоих экземпляров:
На снимке экрана ниже можно увидеть, что число строк для Amazon RDS MySQL — 200, и это соответствует экземпляру Базы данных Azure MySQL.
Хотя приведенный выше запрос можно выполнить для каждой отдельной схемы и таблицы, это может потребовать значительных усилий, если вы работаете с сотнями тысяч или даже миллионами таблиц. Для сверки размеров схемы (базы данных) и таблиц можно использовать приведенные ниже запросы.
-
Чтобы проверить размер базы данных, выполните следующий запрос:
-
Чтобы проверить размер таблиц, выполните следующий запрос:
На снимках экрана ниже показан размер схемы (базы данных) из исходного экземпляра Amazon RDS MySQL, который совпадает с параметрами целевого экземпляра Базы данных Azure MySQL.
Поскольку размеры схемы (базы данных) одинаковы в обоих экземплярах, проверять размеры отдельных таблиц нет необходимости. В любом случае при необходимости всегда можно использовать приведенный выше запрос для проверки размеров таблицы.
Теперь вы убедились, что миграция выполнена успешно.
Создание пользователя и выдача прав
Рассмотрим два варианта создания учетных записей в СУБД MySQL/MariaDB.
1. С помощью команды GRANT.
Данный метод позволяет одной командой сразу и создать пользователя, и дать ему права. Но, начиная с MySQL 8, она возвращает ошибку — разработчики запретили ее использование и сначала требуется создать пользователя (с помощью ).
Синтаксис:
> GRANT <тип привилегий> ON <объект> TO <пользователь> <дополнительные опции>;
Например, эта команда предоставляет права доступа пользователю и, если его не существует, создает его:
> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
Описание команды:
ALL PRIVILEGES: предоставляет полные права на использование данных.*.* : права предоставляются на все базы и все таблицы.dbuser: имя учетной записи.localhost: доступ для учетной записи будет предоставлен только с локального компьютера.password: пароль, который будет задан пользователю.WITH GRANT OPTION: будут предоставлены дополнительные права на изменение структуры баз и таблиц.
2. С помощью команды CREATE USER.
Данный метод является универсальным. Он позволяет создать пользователя в системе без каких либо прав. После права назначаются командой GRANT.
Пример создания учетной записи:
> CREATE USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;
После можно задать права командой:
> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’localhost’;
2: Перезапуск сервера базы данных без проверки прав доступа
Режим MySQL и MariaDB без проверки привилегий позволяет получить доступ к командной строке БД с правами root, не предоставляя действительного пароля. Чтобы включить этот режим, необходимо запретить базе данных загружать таблицы привилегий, в которых хранится информация о доступе пользователей. Поскольку такой режим представляет некоторую угрозу безопасности, рекомендуем также отключить сеть, чтобы другие клиенты не смогли подключиться к временно уязвимому серверу.
Процедура запуска сервера без загрузки таблиц привилегий в MariaDB и MySQL различается.
Запуск MariaDB без таблиц привилегий
Чтобы запустить сервер MariaDB без таблиц привилегий, мы воспользуемся юнит-файлом systemd – в нем нужно установить дополнительные параметры для демона сервера MariaDB.
Выполните следующую команду, которая устанавливает переменную среды MYSQLD_OPTS, которую MariaDB использует при запуске. Параметры –skip-grant-tables и –skip-networking запустят MariaDB без загрузки таблиц привилегий или сетевых функций.
Затем запустите сервер MariaDB:
Эта команда не выведет на экран никаких результатов, но перезапустит сервер базы данных с учетом новых настроек.
Вы можете убедиться, что сервер запущен с помощью команды:
Теперь вы сможете подключиться к базе данных как root пользователь MariaDB без пароля:
На экране сразу появится командная оболочка базы данных.
Теперь, когда у вас есть доступ к серверу базы данных MariaDB, вы можете изменить пароль root – перейдите к разделу 3.
Запуск MySQL без таблиц привилегий
Чтобы запустить сервер MySQL без таблиц привилегий, нужно изменить конфигурацию systemd для MySQL: при запуске сервер должен передавать дополнительные параметры командной строки.
Для этого выполните следующую команду:
Эта команда откроет в редакторе nano новый файл, который вы будете использовать для редактирования переопределений сервиса MySQL. Они изменяют стандартные параметры MySQL.
Этот файл сейчас пуст. Добавьте в него следующие строки:
Первый оператор ExecStart сбрасывает значение по умолчанию, а второй предоставляет systemd новую команду для запуска сервиса – она содержит параметры, которые отключат загрузку таблиц привилегий и сетевые соединения.
Нажмите Ctrl-x, чтобы выйти из файла, затем y, чтобы сохранить внесенные изменения. Чтобы подтвердить имя файла, нажмите ввод.
Перезагрузите конфигурацию systemd, после чего эти изменения вступят в силу:
Теперь запустите сервер MySQL:
Команда не покажет на экране никаких данных, но сервер БД запустится. Таблицы привилегий и сетевые соединения буду отключены.
Подключитесь к базе данных как пользователь root:
Вы попадете в командную строку БД сразу, без ввода пароля.
Теперь все готово, вы можете изменить свой утерянный пароль.
Как установить пароль root для начала использования MySQL
Для только что установленной MySQL пароль пользователя root является пустым.
Вы можете выполнить вход в MySQL (MariaDB) с помощью следующей команды, даже не вводя пароль:
sudo mysql -u root
Чтобы установить пароль root запустите и следуйте инструкциям:
sudo mysql_secure_installation
Давайте внимательно разберёмся со всем, что говорит нам этот скрипт, поскольку вопросам безопасности вер-сервера следует уделять особое внимание.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Перевод:
Примечание: запуск всех элементов этого скрипта рекомендуется для всех серверов MariaDB в продакшене (реальном рабочем использовании).
In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here.
Перевод:
Для того, чтобы войти в MariaDB для настройки безопасности, нам нужен текущий пароль пользователя root. Если вы только что установили MariaDB и ещё не установили пароль рута, то пароль будет пустым, т.е. просто нажмите Enter.
Затем у нас спрашивают:
OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n
Перевод:
ОК, пароль успешно использован, идём дальше …
Установка пароля root или использование unix_socket гарантирует, что никто не сможет войти в систему под пользователем root MariaDB без надлежащей авторизации.
Ваша учётная запись root уже защищена, поэтому вы можете спокойно ответить «n».
Переключиться на аутентификацию unix_socket [Y/n] n
Я ответил n (нет).
Далее новый вопрос:
Change the root password? [Y/n]
Перевод:
Изменить пароль root?
Отвечаем Y (да) и дважды вводим новый пароль. Не используйте в пароле символ точка с запятой и вообще аккуратнее со специальными символами в пароле.
Далее:
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n]
Перевод:
По умолчанию, установленная MariaDB имеет анонимного пользователя, позволяющего любому войти в MariaDB даже если для него не было создано пользовательского аккаунта. Это сделано в целях тестирования и упрощения установки. Вам следует удалить их перед переходом в реальное рабочее окружение.
Удалить анонимного пользователя? [Да/нет]
Затем:
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n]
Перевод:
Обычно, root’у следует разрешать подключаться только с ‘localhost’. Это гарантирует, что кто-то из сети не сможет угадать пароль root’а.
Отключить удалённый вход рута? [Да/нет]
Затем:
By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n]
Перевод:
По умолчанию MariaDB поставляется с базой данных ‘test’, к которой может любой получить доступ. Это также сделано в целях тестирования и она должна быть удалена перед переходом в реальное рабочее окружение.
Удалить тестовую базу данных и доступ к ней? [Да/нет]
Далее:
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n]
Перевод:
Перезагрузка таблицы привилегий гарантирует, что все сделанные изменения немедленно будут иметь эффект.
Перезагрузить таблицу привилегий сейчас? [Y/n]
Наконец:
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Перевод:
Всё сделано! Если вы завершили все вышеописанные шаги, ваша установленная MariaDB должна быть безопасной.
Ещё раз о пароле MariaDB. Это должен быть надёжный и уникальный пароль. Думайте о нём как о пароле входа на ваш сервер. Он должен отличаться от пароля пользователя Linux.