ZANIN блог
Контакты
Крути вниз
Фильтр по:
Категории
//Post title

Настройка MySQL на Ubuntu 18.04 и Nginx

17 Сен 2020Категория : Nginx

Настройка MySQL на Ubuntu 18.04 и Nginx

Сборка LEMP была сделана в предыдущей статье, сейчас подробнее разберем настройку базы данных MySQL.

При базовой настройке я не настраивал безопасность, поэтому выполним команду

sudo mysql_secure_installation

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

После этого необходимо подтвердить установку плагина Validate Password Plugin, который будет проверять безопасность паролей к базе данных. Нажимаем Y

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее необходимо выбрать уровень валидации паролей и ввести 0, 1 или 2.

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

После выбора уровня валидации необходимо придумать пароль, затем будет предложено удалить ананомного пользователя

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее будет вопрос - запретить пользователю root удаленный доступ?

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее будет вопрос - удалить тестовуб базу данных?

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Вводим команду

mysqld -initialize

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее входим в mysql под пользователем root с помощью команды

mysql -u root -p

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Следующим запросом можно посмотреть данные по существующим пользователям

SELECT user,authentication_string,plugin,host FROM mysql.user;

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

 

Работа с MySQL в терминале

 

Из основных и необходимых манипуляций с базой данных MySQL через терминал часто применяются команды: создать базу данных, создать пользователя и пароль, дать привилегии пользователю, разрешить удаленное соединение с базой данных, узнать доступные базы данных на сервере, узнать существующих пользователей и их права, сделать дамп и развернуть дамп базы данных. Приведу примеры этих команд.

Чтобы создать базу данных, сначала необходимо авторизоваться как пользователь в mysql

mysql -u root -p

Вместо root может быть любой другой пользователь, который у вас создан, но стандартно есть пользователь root, который работает без пароля. Да, у вас после введения команды запросит пароль, но изначально для root пароль не требуется и можете нажать Enter, просто удаленный доступ для root запрещен по умолчанию

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть пользователей необходимо выполнить следующее. Сначала выбираем базу данных а потом выбираем пользователей из нее. Можно это сделать, как в примере выше, но можно и таким способом.

use mysql;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

select user from user;

Или можно так, чтобы посмотреть, какой пользователь может соединяться с базой только через localhost, а какой с определенного IP, или же в случае "%" - с любого адреса.

select user, host from user;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Создаем базу данных:

CREATE DATABASE namedatabase;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть список баз данных:

SHOW DATABASES;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы создать пользователя:

CREATE USER 'nameuser'@'localhost' IDENTIFIED BY 'Pass_Word123';

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Теперь дадим созданному пользователю привилегии на работу с нашей базой данных:

GRANT ALL PRIVILEGES ON namedatabase.* TO nameuser@localhost;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

После этого необходимо обновить таблицу прав пользователей, чтобы изменения вступили в силу:

FLUSH PRIVILEGES;

Чтобы посмотреть привилегии пользователей, можно использовать следующие команды. Эта команда выведет привилегии пользователя, под которым вы залогинились в базу данных.

SHOW GRANTS;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть все привилегии всех пользователей:

SELECT * FROM information_schema.user_privileges;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть привилегии определенного пользователя:

SHOW GRANTS FOR 'nameuser'@'localhost';

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

После того, как дали привилегии, может понадобиться разрешить удаленное соединение к базе данных. Удаленное соединение к базе, это соединение с использованием сторонних программ, например, в PyCharm можно просматривать базу данных не только через терминал, а с использованием инструментов IDE

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы дать удаленное соединение к базе MySQL, необходимо открыть файл mysqld.cnf, например в редакторе vim

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

В открытом файле найти строку, которая начинается с bind-address. Чтобы найти строку в редакторе vim, необходимо в командном режиме (до нажатия клавиши i) поставить слэш и начать писать искомое слово, после того, как строка найдена, нажать Enter и перейти в режим редактирования (нажать клавишу i).

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

У меня установлено значение "0.0.0.0", что означает возможность подключения с любого IP, но вы можете поставить только свой IP. После изменения значения, необходимо сохранить и выйти из редактора vim. Чтобы это сделать, нажмите Esc - вы перейдете в командный режим, потом введите :wq - что означает "записать и выйти". Далее введите команду, чтобы перезапустить сервис mysql.

sudo systemctl restart mysql

Далее часто необходимо, это создание дампа, настройка бэкапа по cron, развертывание бэкапа из дампа.

Перед тем, как создать бэкап, создадим папку для бэкапов командой

mkdir /var/backups-mysql

После этого введем команду

mysqldump -u skdesigndb -p skdesign_ru > /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

В команде вводится пользователь skdesigndb и название базы данных skdesign_ru, а пароль уже запрашивается после. Ждем какое-то время, все зависит от размера вашей базы данных, дальше можем проверить, что же получилось.

Можем посмотреть данные о бэкапе с помощью команды

head -n 5 /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Можем воспользоваться и другой командой, чтобы узнать время создания и модификации файла

ls -la --full-time /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы развернуть дамп MySQL

mysql -u user -p dbname < /var/backups-mysql/test-dump.sql

После потребуется ввести пароль. Но если вы хотите, например, поставить разворачивание бэкапа по cron, или удаленное создание бэкапа по cron с другого сервера, вам придется настроить специальную заготовку для ввода логина и пароля. Без этого, вы будете получать ошибку "(Warning: Using a password on the command line interface can be insecure.)"

mysql_config_editor set --login-path="nameconfig" --host="localhost_OR_IP" --user="USER" --password

Можно посмотреть готовые конфиги, если они уже были созданы

mysql_config_editor print --all

После этого можно такой конфиг использовать таким образом

mysql --login-path=nameconfig dbname < name-dump.sql

Чтобы добавить скрипт создания дампа MySQL в cron, сделаем так. В редакторе vim создаем файл с таким содержимым.

sudo vi /etc/cron.daily/mysql-backup

# !/bin/bash /usr/bin/mysqldump --login-path=nameconfig имя_базы > /backups/mysql-dump.sql

Также вводим такую команду

crontab -e

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

30 2 * * * /usr/bin/mysqldump --login-path=nameconfig имя_базы > /backups/mysql-dump.sql

Если вам вдруг необходимо скачать дамп с одного сервера на другой сервер, то заходим на тот сервер, на который хотите скачать и с помощью утилиты scp выполняем такую операцию:

scp соединение с сервером:/путь до дампа/name-dump.sql /var/папка куда сохраняем/

scp root@188.225.255.255:/var/backups-mysql/name-dump.sql /var/backups-mysql/

  • 687

Готовы заказать проект?

© ZANIN 2019 / All rights reserved.
Контакты
Close