Mysql доступ по сети zhitsoboy.ru

Mysql доступ по сети

Предложение от 8host.com

Настройка удаленной базы данных MySQL для оптимизации производительности сайта в Ubuntu 16.04

По мере роста сайта или приложения трафик будет увеличиваться и, вероятно, исходных ресурсов станет не хватать. Если веб-сервер и база данных обслуживаются одним сервером, вы сможете увеличить производительность, переместив БД на отдельный сервер.

Данное руководство поможет настроить удаленную БД MySQL и подключить к ней ваше приложение. Для примера здесь используется WordPress, но эта технология подойдет и для других приложений с MySQL на бэкэнде.

Требования

  • Два сервера Ubuntu 16.04 (сервер 1 и сервер 2), настроенные согласно этому руководству.
  • Сервер 1 будет обслуживать веб-сервер. Установите на него стек LEMP (инструкции найдете здесь, раздел по установке MySQL можно пропустить).
  • Опционально: защитите стек LEMP SSL-сертификатом. Чтобы создать сертификат Let’s Encrypt, вам понадобится домен.

1: Установка MySQL на сервер базы данных

Переместив обработку БД на отдельный сервер, вы увеличите производительность сайта. Кроме того, так вы получите базовую структуру для настройки балансировки нагрузки.

Для начала нужно установить MySQL на сервер 2, который будет выступать в качестве сервера БД.

Чтобы сделать это, введите:

sudo apt-get update
sudo apt-get install mysql-server

Создайте и подтвердите уникальный root-пароль MySQL.

Чтобы убедиться, что установка MySQL прошла успешно и программа запустилась, используйте systemctl:

systemctl status mysqlmysql.service — MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2017-05-23 14:54:04 UTC; 12s ago
Main PID: 27179 (mysqld)
CGroup: /system.slice/mysql.service
└─27179 /usr/sbin/mysqld

Строка Active: active (running) сообщает, что установка и запуск MySQL прошли успешно.

Теперь нужно запустить сценарий безопасности MySQL.

Введите root-пароль MySQL и нажмите Enter.

Сценарий предложит включить плагин валидации паролей, который автоматически будет проверять сложность паролей пользователей MySQL. Если вы хотите повысить безопасность, включите этот плагин. Для этого введите y и Enter. Чтобы пропустить эту настройку, просто нажмите Enter.

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

Затем будет предложено изменить root-пароль MySQL. Поскольку пароль был создан только что, можно пропустить этот этап. Просто нажмите Enter.

На остальные запросы можно ответить yes. Вам будет предложено удалить анонимных пользователей MySQL, запретить удаленный вход для root, удалить тестовую базу данных и перезагрузить таблицы привилегий, чтобы предыдущие изменения вступили в силу. Чтобы принять все эти предложения, введите y и нажмите Enter.

Сценарий завершит работу после того, как получит ответы на все запросы. Теперь установка MySQL достаточно защищена. На следующем этапе нужно настроить удаленный доступ к MySQL.

2: Настройка MySQL для поддержки удаленных соединений

Откройте конфигурационный файл mysqld.

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

Этот файл состоит из разделов, заголовки которых берутся в квадратные скобки. Найдите раздел mysqld:

В нем найдите параметр bind-address, который определяет, какие сетевые адреса нужно прослушивать.

На данный момент MySQL прослушивает только локальные соединения. Это нужно изменить.

Если оба сервера находятся в центре обработки данных с поддержкой частной сети, используйте внутренний IP-адрес сервера 2. В противном случае вы можете использовать внешний IP-адрес:

[mysqld]
. . .
bind-address = db_server_ip

Чтобы подключаться к базе данных через Интернет, потребуются зашифрованные подключения, которые обеспечат безопасность данных. Если вы не зашифруете соединение с MySQL, любой пользователь в сети сможет перехватить конфиденциальные данные между веб-сервером и сервером базы данных. Добавьте следующую строку после bind-address:

Сохраните и закройте файл.

Для обеспечения SSL-соединений нужно создать ключ и сертификат. MySQL предлагает команду, которая автоматически установит все необходимое.

sudo mysql_ssl_rsa_setup —uid=mysql

Команда создаст необходимые файлы и сделает их доступными для чтения сервером MySQL (—uid = mysql).

Чтобы обновить конфигурацию MySQL, перезапустите базу данных:

sudo systemctl restart mysql

Чтобы убедиться, что сервер прослушивает удаленные соединения, используйте netstat:

sudo netstat -plunt | grep mysqld
tcp 0 0 db_server_ip:3306 0.0.0.0:* LISTEN 27328/mysqld

Эта команда выведет сетевую статистику сервера. Как видите, процесс mysqld привязан к адресу db_server_ip по стандартному порту MySQL 3306.

Откройте этот порт в брандмауэре:

sudo ufw allow mysql

3: Настройка БД для WordPress и создание учетных данных

MySQL теперь прослушивает внешний IP-адрес, но в настоящее время в СУБД нет пользователей или базы данных с удаленной поддержкой. Создайте базу данных для WordPress и пользователя, который сможет получить к ней доступ.

Подключитесь к MySQL как root:

Введите root-пароль MySQL, после чего командная строка изменится:

Создайте БД для WordPress, например:

CREATE DATABASE wordpress;

Примечание: Все операторы SQL должны заканчиваться точкой с запятой (;). Если вы, нажав Enter в команде MySQL, видите только строку ->, вы, вероятно, забыли про точку с запятой. Просто введите символ в новой строке и снова нажмите Enter, чтобы продолжить.

Теперь, когда есть база данных, нужно создать пользователя. При создании пользователя нужно определить два разных профиля на основе того, откуда подключается этот пользователь. Создайте локального пользователя, а удаленный пользователь будет привязан к IP-адресу веб-сервера.

Чтобы создать локального пользователя БД, введите:

CREATE USER ‘wordpressuser’@’localhost’ IDENTIFIED BY ‘password’;

Передайте этому пользователю все права на БД.

GRANT ALL PRIVILEGES ON wordpress.* TO ‘wordpressuser’@’localhost’;

Этот пользователь теперь может выполнять любые операции в базе данных WordPress, но эту учетную запись нельзя использовать удаленно, поскольку она поддерживает только соединения с локальной машины.

Читать еще:  После установки Linux перестал загружаться Windows

Теперь создайте сопутствующую учетную запись, которая будет поддерживать удаленные соединения исключительно с веб-сервера (сервер 1). Для этого понадобится IP-адрес вашего веб-сервера. Чтобы настройка была последовательной и понятной, можно использовать то же имя пользователя, что и раньше, только указать другой хост.

Имейте в виду, что IP-адрес должен использовать ту же сеть, что указана в файле mysqld.cnf. Это означает, что если вы ранее указали внутренний IP-адрес, вам нужно создать правило для использования внутреннего IP-адреса веб-сервера. Если вы настроили сервер MySQL для использования внешнего IP-адреса, вы должны указать внешний IP-адрес веб-сервера.

CREATE USER ‘wordpressuser’@’web-server_ip’ IDENTIFIED BY ‘password’;

Теперь у вас есть пользователь для удаленного доступа к БД. Передайте ему права на БД:

GRANT ALL PRIVILEGES ON wordpress.* TO ‘wordpressuser’@’web_server_ip’;

Затем нужно сбросить привилегии, чтобы обновить настройки:

Закройте командную строку MySQL:

4: Тестирование удаленных и локальных подключений

Прежде чем продолжить, лучше убедиться, что вы можете подключиться к базе данных как с локальной машины, так и с удаленной.

Сначала проверьте локальное соединение с сервером 2:

mysql -u wordpressuser -p

Введите пароль пользователя. Если вы видите на экране командную строку MySQL, соединение было успешно создано. Закройте командную строку:

Теперь перейдите на сервер 1.

Для начала установите клиентские инструменты MySQL, чтобы получить доступ к удаленной БД. Обновите индекс пакетов и установите все необходимое:

sudo apt-get update
sudo apt-get install mysql-client

Подключитесь к серверу 2:

mysql -u wordpressuser -h db_server_ip -p

Примечание: Помните о том, что IP-адреса должны находиться в одной сети. Если вы используете внутренний адрес на сервере MySQL, используйте такой же адрес на сервере 1.

Будет запрошен пароль wordpressuser. Если соединение было успешно создано, вы увидите командную строку MySQL. Убедитесь, что соединение использует SSL:

status
—————
mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
Connection id: 52
Current database:
Current user: wordpressuser@203.0.113.111
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: »
Using delimiter: ;
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Protocol version: 10
Connection: 203.0.113.111 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 3 hours 43 min 40 sec
Threads: 1 Questions: 1858 Slow queries: 0 Opens: 276 Flush tables: 1 Open tables: 184 Queries per second avg: 0.138
—————

Строка SSL: говорит о том, что соединение использует шифрование SSL. Закройте командную строку.

Для дополнительной проверки вы можете попробовать сделать то же самое с третьего сервера, чтобы убедиться, что этому другому серверу не будет предоставлен доступ. Так вы сможете подтвердить, что удаленные соединения ограничены одним удаленным сервером.

Перейдите на сервер 3, у которого нет доступа к БД.

Примечание: Возможно, вам понадобится установить утилиты, как на сервер 1.

mysql -u wordpressuser -h db_server_ip -p

Команда должна выдать ошибку:

ERROR 1130 (HY000): Host ‘203.0.113.12’ is not allowed to connect to this MySQL server

5: Установка WordPress

Чтобы проверить возможности новой удаленной БД MySQL, установите на сервер 1 WordPress – популярную платформу для размещения сайтов и блогов. Для этого нужно загрузить ПО, настроить подключение и запустить установку WordPress в браузере.

Перейдите на сервер 1 и загрузите последний релиз WordPress в домашний каталог:

cd
curl -O https://wordpress.org/latest.tar.gz

Распакуйте архив, после чего в домашнем каталоге появится каталог wordpress:

tar xzvf latest.tar.gz

WordPress содержит пример файла конфигурации, который можно использовать в качестве шаблона. Создайте копию этого файла, удалив -sample из имени файла, после чего WordPress будет его читать:

Для начала нужно настроить секретные ключи для обеспечения безопасности установки. WordPress предоставляет генератор этих значений, так что вам не нужно пытаться создать сложные случайные значения самостоятельно. Они используются только внутренне, поэтому это не повлияет на удобство работы.

Чтобы WordPress сгенерировал случайные ключи, введите:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

В терминале появятся ключи, которые нужно скопировать и вставить в файл wp-config.php.

Внимание! Не копируйте приведенные ниже ключи! Используйте свои уникальные значения.

Скопируйте ключи и откройте конфигурационный файл:

Найдите раздел, который содержит фиктивные значения этих параметров:

. . .
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘NONCE_KEY’, ‘put your unique phrase here’);
define(‘AUTH_SALT’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);
define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);
define(‘NONCE_SALT’, ‘put your unique phrase here’);
. . .

Удалите эти строки и вставьте значения, скопированные из командной строки.

Затем нужно ввести информацию о соединении с удаленной базой данных. Эти строки находятся в верхней части файла, чуть выше, перед ключами.

. . .
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);
/** MySQL database username */
define(‘DB_USER’, ‘wordpressuser’);
/** MySQL database password */
define(‘DB_PASSWORD’, ‘password’);
/** MySQL hostname */
define(‘DB_HOST’, ‘db_server_ip’);
. . .

Следующая строка настроит WordPress для поддержки SSL при соединении с MySQL. Добавьте ее в любую точку файла.

Скопируйте файлы и каталоги из

/wordpress в корневой каталог Nginx. Флаг –а сохранит все права файлов.

Теперь все файлы на месте. Остается только изменитьправа собственности на них. Передайте права на корневой каталог пользователю веб-сервера, www-data:

Читать еще:  Мастер установки оборудования Windows 10

sudo chown -R www-data:www-data /var/www/html

6: Установка WordPress в браузере

Процедура настройки WordPress в браузере задаст несколько вопросов и установит необходимые таблицы. Запустите ее.

Откройте в браузере:

Сначала будет предложено выбрать язык установки. Выберите язык, после чего вы перейдете к главной странице:

Welcome!
Welcome to the famous five-minute WordPress installation process! …

Введите необходимую информацию. После этого нужно будет войти в интерфейс администратора WordPress с помощью только что созданной учетной записи. Затем вы попадете в панель инструментов, где сможете настроить свой сайт и управлять им.

Управление удалённым доступом к серверу MySQL

Нередко, удалённый доступ к серверу MySQL — это единственный способ управления своими базами данных (БД). Для хостинг-провайдеров подобная техническая возможность является обязательной для качественного предоставления услуг клиентам. Для веб-разработчиков (вообще для разработчиков) удалённый доступ позволяет использовать один общий ресурс для обслуживания БД. В любом случае, просто так по-умолчанию сервер MySQL удалённые подключения не допускает. Для включения удалённого доступа к MySQL необходимо конфигурирование определённых параметров как самого сервера, так и обслуживаемых БД и их пользователей. В данной статье будут рассмотрены основные принципы предоставления удалённого доступа к серверу MySQL.

Что для этого нужно?

Сервер MySQL по-умолчанию в целях безопасности сконфигурирован таким образом, что может принимать только локальные соединения, поступающие через локальный сокет с той же самой машины, на которой работает и сам сервер. Эта настройка обслуживается опцией «bind-address» в конфигурационном файле MySQL-сервера

/etc/mysql/mysql.conf.d/mysqld.cnf . Изменив значение указанной опции и перезапустив сервер MySQL можно предоставить доступ для удалённых клиентов.
Кроме самой возможности удалённого подключения к серверу MySQL необходимо также и позаботиться о предоставлении соответствующих привилегий удалённым пользователям. Это также очень важно как для комфортной работы, так и для безопасности. Привилегии пользователей MySQL предоставляются как для подключений, так и для работы

непосредственно с БД. В первом случае для пользователя могут быть заданы привилегии, ограничивающие его действия для конкретного типа подключения. Например, удалённо пользователь не может удалять БД. При этом неважно, что сервер корректно настроен для удалённого доступа. Во втором случае у пользователя могут быть заданы ограничения на уровне самих БД, таблиц и процедур, действующие только при удалённом подключении и отсутствующие при локальном. Например, так бывает, когда системный администратор MySQL не хочет, чтобы БД, таблицы, данные можно было удалить работая с сервером через удалённое подключение, а только локально.

Таким образом, существует возможность задания привилегий, т. е. управления доступом не только для самих пользователей и групп. Но и для характера их подключения к серверу — удалённого или локального. Это необходимо учитывать при организации и управлении удалённым доступом к MySQL-серверу.

Настройка сервера MySQL

По-умолчанию для опции «bind-address» в файле /etc/mysql/mysql.conf.d/mysqld.cnf задано значение 127.0.0.1. И подключиться к серверу можно только локально:

Для того, чтобы иметь доступ к MySQL-серверу с любого IP-адреса, т. е. с любого компьютера в сети, нужно значение 127.0.0.1 изменить на 0.0.0.0:

Сделав изменения в и сохранив файл нужно перезапустить сам сервер MySQL:

Далее можно проверить, что удалённое подключение возможно, выполнив его с другого компьютера в сети:

Здесь «db_host» – это адрес (IP или имя хоста) компьютера, на котором работает сервер MySQL. При удачном подключении пользователь будет переведён в интерфейс командной консоли MySQL.

Настройка привилегий БД

На сервере MySQL может быть несколько пользователей с одинаковым именем, но разным режимом доступа. Например, пользователь с именем john, которому доступно только локальные подключения. На самом деле распознается сервером MySQL как пользователь с именем «john@localhost». Для того, чтобы пользователь john мог подключаться ещё и удалённо с любого IP. На сервере должна быть создана ещё одна учётная запись с именем «john@%». Вот как выглядит создание такой учётной записи в веб-интерфейсе phpMyAdmin:

Как можно видеть, в системе управления доступом MySQL для учётной записи пользователя существует отдельный атрибут «имя хоста», регламентирующий режим подключения. Это сделано как для повышения самой безопасности, так и для более гибкого управления и администрирования. Тот случай, когда одно другому не только не мешает. Но в совокупности поднимает эффективность и безопасность всего сервиса.

Поскольку учётные записи john@localhost и john@% являются разными (хотя и принадлежат одному пользователю), то для них можно отдельно настраивать привилегии. Например, для учётной записи john@% в phpMyAdmin это выглядит следующим образом:

Как можно видеть, администратор запретил пользователю john удалять БД через удалённое подключение. Таким же образом можно устанавливать (или убирать) ограничения на уровне БД. Т. е. при работе с таблицами, а также на уровне таблиц — при работе непосредственно с данными.

Заключение

В заключение стоит ещё раз отметить, что предоставление удалённого доступа к БД путём изменения параметра bind-address в значение 0.0.0.0 должно проводиться с учётом принятых мер по обеспечению дополнительной безопасности сервера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Создаем возможность удаленного доступа к MySQL

Дата публикации: 2018-12-05

От автора: как только вы создали базу данных и размещаете в ней содержимое будущего сайта, необходимо обеспечить удаленный доступ к MySQL. Это нужно для управления проектом со своего рабочего девайса. Вы ведь не всегда находитесь возле сервера, верно? О том, как обустроить доступ наилучшим образом, мы расскажем в сегодняшней статье.

СУБД и подключение к ней

Если вы перешли по ссылке на эту статью, значит, скорее всего, с понятием базы данных MySQL вы знакомы. Говоря простым языком, это программное обеспечение для хранения данных, а также, их обработки и выдачи, в случае запроса от клиента. Самая известная и востребованная из них — MySQL (отучайтесь от эс-кью-эль и говорите сиквел — так правильно), получила свое название из-за языка запросов, которым пользуются для обращения к базе.

Читать еще:  0xc00000e9 при установке Windows 10

Востребованность MySQL обусловлена тем, что система максимально адаптирована для веб-разработки. СУБД, на самом деле, существует немало. Есть даже решение от компании Microsoft, которое носит название MSSQL. Оно широко используется в локальных сетях для создания различных каталогов, в то время, как детище Oracle ориентировано именно на размещение на хостинге.

Широкое влияние MySQL обеспечено дружелюбностью интерфейса и простотой настройки. Если вы не владеете отменными навыками программирования и не желаете углубляться в математическую природу реляционных баз, то трудно найти что-то лучше, чем My.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

При стандартных настройках системы управления базами данных, удаленный доступ закрыт. Это сделано в целях безопасности базы и взаимодействия только на том уровне, где действия не смогут нарушить целостность проекта. Среди параметров:

командная строка, доступ к которой осуществляется через shell;

взаимодействие с базами данных при помощи пользовательских скриптов на языках PHP, Perl, Python и прочих;

через интерфейс, который представлен приложением phpMyAdmin. Учетные данные для доступа выдаются, как только вы зарегистрируетесь в сети.

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

Но, это не всегда удобно. Намного лучше взаимодействовать с базой данных при помощи MySQL-клиента, который может стоять хоть на портативном компьютере. Также, актуально рассматривать вариант доступа через сторонние сервера, на которых размещен хостинг для сайта. Не всегда база данных и само приложение размещены на одном железе.

Вашим первым действием должен стать вход в панель управления VPS, который находится в разделе Базы MySQL. Далее, входим в раздел настройки удаленного доступа, где правила устанавливаются для конкретного IP, либо подсети:

когда работаете непосредственно с IP-адресом, нужно указывать его: по IP осуществляется взаимодействие с сервером, но на котором размещена база данных. Все должно выглядеть примерно так: 128.1.1.0. Не забывайте, что это рандомный пример. Вы указываете тот, который у вас;

когда работаем с подсетью, то указываем подсеть с IPшниками, которые будут работать с сервером MySQL. Примерно все выглядит так: 128.1.1.%.

Чтобы создать новое правило, нужно кликнуть по кнопке «Создать доступ», прописать требуемое вам правило и снова кликнуть, но уже по кнопке «Создать». Примечание: каждая база данных может получить не более тридцати правил.

Когда речь идет о настройке, то учетные данные, вроде логина и пароля, будут аналогичны тем, которые вы использовали при подключении по локальной сети. Также, имя сервера, который будет использоваться для доступа с удаленного устройства, прописывается в панели управления. А порт для подключения всегда будет иметь одинаковое значение — 3306.

Тем не менее, насколько хорошо прописанной не была бы «удаленка», она является угрозой для безопасности базы данных. Неплохой мерой станет установка сложного пароля. Не стоит недооценивать человеческий фактор: сообщайте пасс только ограниченному кругу лиц.

Передача файлов

Как правило, осуществляется через протокол FTP. File Transfer Protocol — это основополагающий протокол для трансфера файлов между устройствами в сети. Благодаря этой технологии мы можем проводить операции с ftp-серверами. Хостинги, которые поддерживают протокол, являются наиболее востребованными, ведь таким образом можно проводить операции с файлами, которые хранятся на разном железе.

На самом деле, у технологии немало изъянов. К примеру, она считается одной из наиболее незащищенных. Даже если вы установите самый сложный в мире пароль, злоумышленник сможет его перехватить. Пасс передается по сети, причем, незашифрованный. Более совершенными являются протоколы, которые построены на базе ftp. Сюда можно отнести FTPS, SFTP и другие.

Существует и специальное программное обеспечение, которое упрощает работы с технологией. Наиболее универсальное из них — FileZilla. Кроме того, что он стает на большинство используемых операционных систем, он функционален и поддерживает массу протоколов. А графический интерфейс делает работу проще. К примеру, файлы можно просто перетаскивать из одного каталога в другой. А благодаря тому, что ПО переведено на множество языков, его используют по всему миру.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Ссылка на основную публикацию
Adblock
detector