Mysql ubuntu внешнее подключение
По мере роста сайта или приложения трафик будет увеличиваться и, вероятно, исходных ресурсов станет не хватать. Если веб-сервер и база данных обслуживаются одним сервером, вы сможете увеличить производительность, переместив БД на отдельный сервер.
Данное руководство поможет настроить удаленную БД MySQL и подключить к ней ваше приложение. Для примера здесь используется WordPress, но эта технология подойдет и для других приложений с MySQL на бэкэнде.
Требования
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, перезапустите базу данных:
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, но эту учетную запись нельзя использовать удаленно, поскольку она поддерживает только соединения с локальной машины.
Теперь создайте сопутствующую учетную запись, которая будет поддерживать удаленные соединения исключительно с веб-сервера (сервер 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:
Строка 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 в домашний каталог:
Распакуйте архив, после чего в домашнем каталоге появится каталог wordpress:
tar xzvf latest.tar.gz
WordPress содержит пример файла конфигурации, который можно использовать в качестве шаблона. Создайте копию этого файла, удалив -sample из имени файла, после чего WordPress будет его читать:
Для начала нужно настроить секретные ключи для обеспечения безопасности установки. WordPress предоставляет генератор этих значений, так что вам не нужно пытаться создать сложные случайные значения самостоятельно. Они используются только внутренне, поэтому это не повлияет на удобство работы.
Чтобы WordPress сгенерировал случайные ключи, введите:
В терминале появятся ключи, которые нужно скопировать и вставить в файл 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:
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 (настройка производится на операционной системе Ubuntu Linux и может отличаться для других ОС) необходимо отредактировать файл с настройками (конфигурационный файл). Обычно он располагается по пути /etc/mysql и называется my.cnf, хотя бывают и другие настройки.
Чтобы отредактировать файл с настройками MySql необходимо выполнить следующую команду:
Если файл с настройками находится по пути /etc/mysql/mysql.conf.d/ и называется mysqld.cnf, тогда так:
Далее необходимо найти такую строку в открытом файле:
В данной строке указывается, с каких адресов разрешено подключение к MySql, в данном случае только с адреса 127.0.0.1, то есть с локальной машины (127.0.0.1 = localhost). Для того, чтобы открыть доступ к нужному IP, его нужно прописать вместо 127.0.0.1. Если необходим доступ с любого адреса, то написать как показано ниже.
После замены настроет bind-address MySql, его необходимо перезапустить:
Теперь нужной подключиться к MySql с паролем суперпользователя:
После подключения к MySql нужно создать пользователя и дать привилегию, например:
В данном случае дается полный доступ к базе данных userdatabase пользователю с логином user и паролем password, подключающемуся с IP 192.168.0.10.
Если необходимо разрешить доступ ко всем базам, то вместо имени базы данных пишется знак *, если необходимо разрешить доступ с любого IP, то вместо IP адреса пишется знак %. Ниже представлен пример, разрешающий пользователю user полный доступ ко всем базам данных с любого IP.
Данная инсрукция справедлива и для других linux дистрибутивах, основанных на debian.
Установка webmin для операционной системы Armbian (Orange Pi / Raspberry Pi). Install webmin for armbian.
В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.
Подключаться к базам данных можно разными способами. Подключение, устанавливаемое с сервера, называется локальным. С помощью такого типа подключения можно работать с домашнего компьютера, при этом используя любые удобные приложения по управлению базами данных.
Я расскажу, как подключиться к удаленной базе данных MySQL, какие существуют способы, а также опишу некоторые типичные ошибки.
Подключение через панель управления TimeWeb
Чтобы подключиться удаленно к MySQL, необходимо для начала открыть сайт хостинга и авторизоваться в личном кабинете. В панели управления следует выбрать раздел «Базы данных MySQL», через него и будем проводить операции. В новом открывшемся окне находим ссылку «Добавить доступ» напротив того сервера, к которому планируется подключиться. Для разрешения доступа к подсети /24 меняем последний актет IP-адреса на знак %.
При установлении соединения используем имя сервера или его IP-адрес. Данная информация доступна на главной странице в разделе «Информация о сервере». Порт указываем 3306, имя пользователя будет тем же, что и название базы данных. Вводим пароль и устанавливаем соединение.
phpMyAdmin
phpMyAdmin – программное средство, предоставляющее веб-интерфейс для работы с сервером MySQL. Подключиться к базе можно, открыв раздел «Базы данных MySQL» в панели управления хостингом. Находим на странице ссылку «phpMyAdmin» и жмем по ней для подключения. Если она недоступна, значит, пользователем был превышен лимит доступных БД. Увеличить его можно сменой тарифа.
Соединение через SSH туннель
Данный тип подключения считается более безопасным, потому что все данные по SSH-туннелю передаются в зашифрованном виде, исключая возможность перехвата.
Подключение в Windows
В данной ОС соединение по SSH протоколу можно осуществить с помощью специальных программ для управления базами данных. Например, PuTTY (бесплатная программа) или SecureCRT (платное ПО, но с пробной версией на 30 дней).
Мы для работы выбрали PuTTY. Скачиваем установщик с официального сайта и устанавливаем приложение . Запускаем программу, затем переходим в раздел «Session». В поле «Host Name» вводим свой домен или указываем его IP-адрес.
Далее переходим в категорию «Connection», открываем вкладку «SSH», затем «Tunnels». В поле «Source Port» указываем значение 3306, в «Destination» вбиваем localhost:3306, потом жмем на кнопку «Add» для добавления порта в список. И только потом жмем кнопку «Open» для установления соединения с хостом.
Логин и пароль те же самые, которые используются для входа в панель управления. При подключении используем имя пользователя и пароль, выданные при создании базы данных. Адрес сервера - 127.0.0.1, порт для подключения 3306.
Предупреждаем, что если вы уже устанавливали сервер баз данных MySQL на своем компьютере, то соединение через порт 3306 будет недоступно. Надо будет указать другое значение, например 3307.
Подключение в Linux
В ОС Linux никакого дополнительного ПО устанавливать не придется, можно все провести через командную строку «Терминал». Перед тем как подключиться к MySQL удаленно, нужно создать SSH-туннель. Вводим вот такую команду:
Потом в конфигурационном файле MySQL потребуется изменить параметр, отвечающий за удаленное подключение. Открываем в «Терминале» файл, дав вот такую команду:
Далее комментируем нужную нам строку. В итоге она должна выглядеть вот таким образом:
Сохраняем изменения, потом перезапускаем MySQL вот такой командой:
Далее будет запрошен пароль для входа в панель управления хостингом, вводим его. Для подключения к удаленному серверу MySQL необходимо создать пользователя, и делается это вот такой командой:
Так мы создадим пользователя с неограниченным доступом ко всем базам на указанном сервере. Потом проверяем подключение утилитой telnet. Если сервер запрос не отклонил, значит, пора приступать к подключению. Для этого можно задать команды вот таких типов:
Как проверить соединение с базой данных MySQL
Для проверки подключения к базе данных MySQL во всех ОС используем утилиту telnet. Нужно просто открыть командную строку и набрать в ней вот такую команду:
Если соединение установится, то настройка туннеля прошла успешно, можно приступать к подключению. Если нет, рекомендуем тщательно проверить все настройки.
Распространенные проблемы и ошибки при подключении к MySQL
Как подключиться к MySQL удаленно, если возникают какие-то ошибки? Трудности обычно возникают при наличии запрещающих правил. Проверить, существуют ли такие, можно вот таким запросом:
Если таковые обнаружатся, добавим разрешающее правило. Для этого надо ввести соответствующую команду, она должна выглядеть примерно вот так:
Есть еще возможность открыть доступ для определенного IP-адреса, и это куда более безопасный способ. Для этого потребуется ввести такой запрос:
Если же появляется ошибка типа «Client does not support autentification protocol request by server; consider upgrading MySQL client» , это значит, что установленный клиент не поддерживает требуемый сервером протокол.
Ошибка «1045 невозможно подключиться к серверу MySQL» возникает при попытке подключиться удаленно к базам данных через phpMyAdmin. Причиной тому может быть неправильно введенный логин или же отсутствие пароля у пользователя или его неправильная смена.
Заключение
MySQL – один из самых популярных серверов баз данных с открытым исходным кодом. Подключиться к нему можно разными способами, причем как локально, так и удаленно. Если в процессе соединения возникают нетипичные ошибки, рекомендуем связаться со службой технической поддержки.
Главное меню » Базы данных » База данных MySQL » Как разрешить удаленные подключения к серверу базы данных MySQL
(1 оценок, среднее: 5,00 из 5)Однако в некоторых ситуациях необходимо разрешить удаленные подключения. Например, когда вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или когда вы используете многосерверное развертывание, когда приложение работает на компьютере, отличном от сервера базы данных.
В этой статье мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. То же самое относится и к MariaDB.
Настройка MySQL Server
Если сервер MySQL и клиенты могут взаимодействовать друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только по частному IP. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на компьютере.
Для этого вам нужно отредактировать файл конфигурации MySQL и добавить или изменить значение опции bind-address. Вы можете установить один IP-адрес и IP-диапазоны. Если адрес есть 0.0.0.0, сервер MySQL принимает соединения на всех интерфейсах IPv4 хоста. Если в вашей системе настроен IPv6 0.0.0.0, используйте вместо .
Расположение файла конфигурации MySQL зависит от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf, в то время как в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf.
Откройте файл в текстовом редакторе :
Найдите строку, которая начинается с bind-address и установите в качестве значения IP-адрес, который должен прослушивать сервер MySQL.
По умолчанию установлено значение 127.0.0.1 (прослушивается только на локальном хосте).
В этом примере мы настроим сервер MySQL на прослушивание всех интерфейсов IPv4, изменив значение на 0.0.0.0
mysqld.cnf
В MySQL 8.0 и выше директива bind-address может отсутствовать. В этом случае добавьте ее в разделе [mysqld].
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать сервисы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом является предоставление доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL от имени пользователя root, введя:
Если вы используете старый плагин аутентификации MySQL для входа в систему от имени пользователя root, введите команду ниже и введите пароль при появлении запроса:
Внутри оболочки MySQL используйте GRANTоператор для предоставления доступа удаленному пользователю.
Например, чтобы предоставить доступ к базе данных dbname пользователю с именем andreyex с паролем my_passwd с клиентского компьютера с IP 10.8.0.5, вы должны выполнить:
Настройка брандмауэра
Iptables
Если вы используете iptables в качестве брандмауэра, команда ниже разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
Разрешить доступ с определенного IP-адреса:
Разрешить доступ с определенного IP-адреса:
FirewallD
FirewallD является инструментом управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
Чтобы разрешить доступ с определенного IP-адреса на конкретном порту, вы можете создать новую зону FirewallD или использовать расширенное правило. Хорошо создайте новую зону с именем mysqlzone:
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
Где user_name имя пользователя, которому вы предоставили доступ и mysql_server_ip, IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Приведенная ниже ошибка указывает на то, что пользователь, которому вы пытаетесь войти, не имеет прав доступа к удаленному серверу MySQL.
Заключение
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на локальном хосте.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
- Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
- Предоставьте доступ удаленному пользователю.
- Откройте порт MySQL в вашем брандмауэре.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: