Всем привет! Сегодня в статье рассмотрим установку MySQL Server на CentOS 7. MySQL – популярная реляционная СУБД с открытым кодом, и, её популярность означает огромное количество информации в интернете и большое количество хорошо документированных библиотек. MySQL поддерживает множество стандартных функций, присущих СУБД – репликацию, триггеры и прочие.
В большинстве дистрибутивов по умолчанию присутствуют репозитории, в которых есть нужный нам пакет MySQL – однако, на примере CentOS 7 Minimal я хотел бы показать процесс добавления официального YUM репозитория от Oracle, в котором всегда доступна последняя версия.
Процесс установки
Предварительно нам необходимо установить wget чтобы скачивать файлы – для этого выполните команду yum install wget
.
Далее, для начала процесса установки необходимо зайти на сайт MySQL по следующему линку: http://dev.mysql.com/downloads/repo/yum/ , выбрать необходимый дистрибутив (в нашем случае - Red Hat Enterprise Linux 7 / Oracle Linux 7) и нажать Download. Ссылка для скачивания может быть получена без регистрации, для этого нужно найти слова «No thanks, just start my download»
Скопируем адрес ссылки и выполним команду wget
с этим адресом:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
Без каких-либо модификаторов команда wget скачает файл в каталог, в котором вы находитесь в данный момент, далее необходимо выполнить команду rpm –Uvh mysql57-community-release-el7-11.noarch.rpm
- для более простого ввода имени пакета воспользуйтесь табуляцией (нажать Tab).
Теперь подключен официальный репозиторий Oracle, настала очередь установки непосредственно самого MySQL сервера:
yum –y install mysql-community-server
Процесс скачивания и установки пакета займёт какое-то время.
Далее необходимо разрешить автозапуск демона MySQL при загрузке:
/usr/bin/systemctl enable mysqld
И запустить сам MySQL сервер:
/usr/bin/systemctl start mysqld
Настройка безопасности
После старта сервера, необходимо настроить политики безопасности – для этого служит скрипт mysql_secure_installation
- но предварительно нам понадобится случайно сгенерированный пароль для root – его можно выяснить с помощью команды grep 'temporary password' /var/log/mysqld.log
. Пример на скриншоте ниже:
Далее нужно ввести команду /usr/bin/mysql_secure_installation
и вам будет предложено ввести данный пароль на рут, поменять его на нечто вроде E+FW4tz8$?/7$dCm и ответить на несколько вопросов:
Set root password? [Y/n] Y
- установка пароля на root;Remove anonymous users? [Y/n] Y
- удаление анонимных пользователей;Disallow root login remotely? [Y/n] Y
- запрет удаленного логина;Remove test database and access to it? [Y/n] Y
- удаление тестовых баз данных и доступа к ним;Reload privilege tables now? [Y/n] Y
- перезагрузка привилегированных таблиц;
Очень советую пароль придумать максимально сложный – кроме того, по дефолту, у вас не получится поставить простой пароль.
Создание тестовой базы данных и манипуляции с пользователями
Когда вам понадобится дать доступ какому-нибудь приложению доступ к вашей БД, ни в коем случае нельзя этого делать от пользователя root – для каждого приложения должен быть создан свой пользователь. Для создания, сначала необходимо зайти в MySQL от имени администратора с помощью команды mysql -u root -p mysql
. Далее я приведу пример создания БД testdb и открытия полного доступа к этой БД для пользователя testuser (имя пользователя и пароль соответственно необходимо скорректировать относительно вашей непосредственной задачи):
create database testdb; grant all on appdb.* to 'testuser'@'localhost' identified by 'password'; quit
Для проверки доступа нужно использовать команду mysql -u testuser -p -h localhost testdb
, а для выводы всех имеющихся БД – команду SHOW DATABASES;
Рассмотрим пример создания пользователя для MySQL и просмотра списка всех пользователей. MySQL содержит информацию о пользователях в своей собственной базе данных под названием mysql, внутри которой информация о пользователях находится в виде таблицы под названием user. Если вы хотите вывести весь список пользователей, то необходимо выполнить следующую команду:
SELECT User, Host, Password FROM mysql.user;
Это стандартный MySQL синтаксис. Давайте разберемся с ним:
- SELECT - запрос информации;
- User, Host, Password - конкретизация полей, из которых информация должна быть извлечена. В данном случае мы ищем информацию о пользователе, хостнейме и зашифрованном пароле;
- FROM mysql.user - запрашиваем информацию мы из БД mysql и таблицы user;
- ; - точка с запятой означают конец команды, в MySQL все запросы должны кончаться точкой с запятой;