Как создать удаленную базу данных

Чтобы создать базу данных перейдите в панели управления ISP в раздел “Базы данных” и нажмите “Создать”. Далее указываете название базы, имя пользователя баз данных и указываете его пароль. Сохраните эти данные, так как их после нужно использовать для входа в phpMyAdmin либо для установки сайта. Для возможности удаленного подключения к базе — нужно проставить соответствующую галочку:
Методы выполнения импорта БД MySQL. Импорт при помощи phpMyAdmin.
Этот способ больше подходит для дампов небольших размеров, дампы более 100 МБ лучше импортировать методами описанными ниже. 1. Войдите в панели управления в раздел “Доп.приложения” — “phpMyAdmin”.
2. Для авторизации укажите имя пользователя БД и его пароль, который Вы указывали при создании базы данных.
3. В меню слева сначала нажмите на вашу базу данных и затем в верхнем меню нажмите “Импорт”. Далее нажмите “Обзор” и укажите локальное расположение дампа на вашем ПК и нажмите “Ок” чтобы начать импорт. В случае каких либо ошибок при импорте phpMyAdmin укажет ошибку:

Импорт при помощи плагина “Импорт дампа MySql”.
Этот способ предназначен специально для импорта дампов больших размеров. По умолчанию данный плагин стоит на всех хостинг-серверах. Если Вы используете услугу виртуального сервера, то этот плагин можно установить на вашем сервере под root в разделе “Плагины” нажав “Установить” и выбрав его из списка:
1. Чтобы выполнить импорт сперва нужно загрузить дамп на Ваш сервер. Сделать это можно по FTP либо же в панели управления ISP в разделе “Менеджер файлов” нажав на кнопку “Закачать”:
2. Далее в панели управления выбираем “Импорт дампа MySQL”. Выбираете “Источник local” и указываете локальный путь к вашему дампу на сервере. Удобнее всего загружать дамп в корень сервера, тогда путем будет само название файла. Имя пользователя и пароль нужно указывать те, которые были назначены при создании базы данных.
Важно: файл дампа должен быть в формате .sql

3. Импорт считается успешным если размер базы данных не является нулевым.
Импорт дампа при помощи SSH
1. Для импорта сначала загружаете дамп на сервер любым удобным способом. Дамп должен быть в формате .sql 2. Далее подключаетесь на сервер по SSH и выполняете команду:
В случае неудачи всегда будет указанна ошибка из-за которой импорт не удался или прервался.
Удаленный доступ к базам данных
В целях безопасности вы можете указать определенные настройки удаленного доступа к базам данных. Эти настройки позволяют указать конкретные IP-адреса, с которых будут разрешены удаленные подключения. Например, если скрипт на удаленном сервере подключается к базе данных Plesk с помощью учетных данных определенного пользователя базы данных, то вы можете ограничить доступ этого пользователя к IP-адресу этого удаленного сервера.
В зависимости от типа сервера баз данных Plesk использует разные инструменты контроля доступа:
- Списки управления доступом. Для пользователей баз данных MySQL контроль доступа регулируется внутренним механизмом безопасности ― списками управления доступом MySQL (access control lists (ACL)). В ACL можно добавлять собственные правила. Если запущен брандмауэр Plesk, то он должен разрешать входящие подключения к MySQL. В противном случае настройки удаленных подключений в ACL работать не будут.
- Правила брандмауэра. Для остальных пользователей баз данных (PostgreSQL и SQL Server) удаленный доступ регулируется брандмауэром Plesk. Брандмауэр Plesk также позволяет добавлять собственные правила. Если у вас не установлен брандмауэр Plesk и отключено управление правилами брандмауэра, то в интерфейсе Plesk не отображаются соответствующие опции .
Примечание: Plesk добавляет новые правила в брандмауэр только после вашего одобрения. Каждый раз, когда подписчик создает новое правило управления доступом, Plesk сообщает вам об этом и предлагает принять или отклонить изменения.
Опции управления доступом можно настроить на экране Сайты и домены > Базы данных ― во время добавления или редактирования базы данных или пользователя базы данных. Более подробную информацию смотрите в разделе Добавление правил доступа .
При удалении клиента, подписки или пользователя базы данных удаляются и все соответствующие правила брандмауэра.
Как разрешить клиентам создавать собственные правила
Чтобы подписчики могли настраивать доступ к своим базам данных:
- Включите право Удаленный доступ для пользователей баз данных в настройках подписки (Подписки> нажмите имя подписки >Настроить).
- Установите брандмауэр Plesk и включите управление правилами на экране Инструменты и настройки >Безопасность >Брандмауэр (только для пользователей PostgreSQL и SQL Server).
- Убедитесь, что Microsoft SQL Server использует динамические порты для удаленных подключений (только для пользователей SQL Server).

Подтверждение пользовательских правил брандмауэра
Когда тот или иной пользователь создает собственное правило, на Домашней странице администратора Plesk появляется следующее уведомление: Правила удаленного доступа для пользователей баз данных были изменены и ждут вашего подтверждения. Пожалуйста, откройте Настройки брандмауэра и проверьте внесенные изменения.
После проверки правил вам нужно решить, подтверждаете ли вы добавление данных правил в системный брандмауэр. Для этого нажмите Применить изменения или Отменить изменения на экране Брандмауэр > Изменить правила брандмауэра Plesk.
Создание базы данных
База данных (БД) — единое хранилище текстовой информации сайта. База данных хранит информацию в виде связанных между собой таблиц. Для взаимодействия с информацией из таблиц используется язык запросов SQL. Информация, добавленная через CMS, записывается в БД, а затем отображается на сайте. Таким образом, администратор взаимодействует с базой данных, а не с исходными файлами сайта.
Чтобы создать БД:
- Перейдите в Базы Данных → кнопка Создать базу данных.
- Укажите Имя БД.
- Выберите Владельца, которому будет принадлежать БД.
- Выберите Сервер баз данных, который будет управлять БД.
- Выберите Кодировку данных в базе. Кодировка определяет набор символов для представления данных. Рекомендуем использовать «utf8», т. к. она универсальная.
- Выберите Пользователя, который будет работать с БД. Или выберите «Создать нового пользователя» и укажите для него Имя пользователя, Пароль и его Подтверждение.
- Чтобы пользователь имел доступ к БД с других серверов, включите опцию Удалённый доступ. Укажите Список IP-адресов, с которых доступ будет разрешён. Опция доступна, только если для выбранного сервера БД включена опция Удалённый доступ. Подробнее см. в статье Создание СУБД MySQL.
- Нажмите Ok.
Делаем доступной базу данных для удаленного подключения
Начнем с того что бывают случаи, когда нужно делать приложение с подключением к базе данных. Это делается для того чтобы особо не копаться в бэкэнд разработке и сконцентрироваться на фронтэнде из-за нехватки рук и навыков. Я не берусь говорить, что мое решение будет безопасным, но оно работает.
Поскольку я не люблю платить за хостинг, я воспользовался сетью на своей работе, там есть белый IP. Вот ее структура:

У меня имеется доступ к нескольким компьютерам точнее к 192.168.1.2 (он же 192.168.0.2) там стоит Linux и к 192.168.0.3 с Windows. В общем, для своего приложения я выбрал mysql и посмотрел что есть на Linux. Там уже был установлен он, но пароль никто не знает, а те кто знали забыли (те кто работал до меня). Узнав что он никому не нужен, я его удалил и попытался установить заново. Память не хватало и поскольку чтобы исправить эту ошибку пришлось бы подключать к нему монитор и клавиатуру с мышью, я решил бросить это дело. Тем более что машина с Windows куда мощней и плюс ко всему у меня у самого стоит она на ноутбуке домашнем. В принципе саму установку я описывать не буду, есть куча мануалов и видео про это. Установив mysql на Windows машину, я решил сделать бэкап таблиц с ноутбука на рабочую станцию.
Делается это так (в моем случае):
mysqldump -uroot -p your_base > dump_file.sql
Далее в новой базе данных создаем базу данных и восстанавливаем бэкап на «новой» машине.
mysql -h localhost -u root -p
create database your_base; use your_base;
mysql -uroot -p your_base < dump_file.sql
show tables;
Файл с бэкапом надо на новую машину положить и возможно если не в директории с утилитой то полный путь к ней. (Я просто залил бэкап на гитхаб и клонировал его на новую машину). Я бы добавил как создаются сами таблицы, но не сохранил скрины, да и думаю это не сложно даже студенту 2-3 курса.
Когда восстановил все таблицы, пришло время сделать доступным удаленный доступ к бд. В общем, такие команды к успеху не привели (выдал только право на чтение select)
create user 'client'@'%' IDENTIFIED by 'client'; grant select on your_base . * to 'client'@'%'; flush privileges;
Точнее я мог подключится к базе только командой,
mysql -h localhost -u client -pclient
а такой уже не мог
mysql -h 192.168.0.3 -u client -pclient
мне это не подходило также не мог подключится через этот адрес и от root.
Помогла программка mysql workbench там в настройках меняете localhost на % и работает, хотя client это не помогло. Теперь вы можете подключаться к бд из консоли или из кода с любого адреса.

Еще нужно сделать сеть домашней или предприятия и выключить брандмауэр Windows иначе не сможете даже сделать пинг этой машины(не то чтобы подключится к бд).
Пол дела сделано, дальше нужно чтобы я мог из дома подключится к базе данных.
Как видно из схемы сети, то до интернета надо пройти путь от 192.168.0.3 до 192.168.1.1 (роутер) пойдем в обратную сторону. Настроим маршрут от 192.168.1.1 до 192.168.1.2 вот таким образом:

В общем, картинку не показывает — напишу руками:
route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2
Это можно сделать только в одной подсети то есть нельзя сразу пробросить на адрес 192.168.0.2 или 192.168.0.3
Это нужно чтобы роутер знал где находится подсеть 192.168.0.0/24 (учите основы сетей это полезно).
Теперь добавляем проброс порта 3306 (порт mysql по дефолту (если вы его при установки только не поменяли)) на адрес 192.168.1.2

Вот осталось сделать самое сложное это сделать форвардинг на линукс машине(на ней две сетевые карточки 192.168.1.2 (интерфейс enp3s1) и 192.168.0.2(интерфейс enp3s0) чтобы сетевухи знали что перебросить их с 192.168.1.2 на 192.168.0.2, а потом на нашу Windows машину с MySql.
sudo iptables -A FORWARD -i enp3s1 -o enp3s0 -p tcp --syn --dport 3306 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -i enp3s1 -o enp3s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A FORWARD -i enp3s0 -o enp3s1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A PREROUTING -i enp3s1 -p tcp --dport 3306 -j DNAT --to-destination 192.168.0.3 sudo iptables -t nat -A POSTROUTING -o enp3s0 -p tcp --dport 3306 -d 192.168.0.3 -j SNAT --to-source 192.168.1.2 и последняя строчка сохраняет введенные команды чтобы они при перезапуске оси не стерлись sudo service iptables-persistent save
Т.е. 1я строчка значит что мы принимаем первое соединение, 2-я и 3-я что можно в обе стороны пускать пакеты, 4-я и 5-я значит замену адреса назначения и источника. И вуаля можно коннектиться из дома через mysql. И напоследок мой код на с++ который это делает:
//DataBaseConnection.cpp #include "DataBaseConnection.h" DataBaseConnection::DataBaseConnection() < >void DataBaseConnection::Connect() < // Получаем дескриптор соединения conn = mysql_init(NULL); if (conn == NULL) < // Если дескриптор не получен – выводим сообщение об ошибке fprintf(stderr, "Error: can'tcreate MySQL-descriptor\n"); //exit(1); //Если используется оконное приложение >// Подключаемся к серверу if (!mysql_real_connect(conn, "192.168.0.3", "root", "password", "your_base", NULL, NULL, 0)) < // Если нет возможности установить соединение с сервером // базы данных выводим сообщение об ошибке fprintf(stderr, "Error: can't connect to database: %s\n", mysql_error(conn)); >else < // Если соединение успешно установлено выводим фразу - "Success!" fprintf(stdout, "Success!\n"); >> std::vector DataBaseConnection::Query() < vectordrum.clear(); std::string query = "SELECT * FROM drum where char * q = query.c_str(); qstate = mysql_query(conn, q); if (!qstate) < res = mysql_store_result(conn); while (row = mysql_fetch_row(res)) < //printf("ID: %s,Position: %s, Image: %s\n", row[0], row[1], row[2]); vectordrum.push_back(row[2]); >> else < std::cout return vectordrum; > void DataBaseConnection::Close() < // Закрываем соединение с сервером базы данных mysql_close(conn); >DataBaseConnection::~DataBaseConnection() < vectordrum.clear(); >//DataBaseConnection.h #pragma once #include #include #include #pragma comment(lib,"mysqlcppconn.lib") #pragma comment(lib,"libmysql.lib") class DataBaseConnection < public: DataBaseConnection(); void Connect(); std::vectorQuery(); void Close(); ~DataBaseConnection(); MYSQL *conn; MYSQL_ROW row; MYSQL_RES *res; int qstate; std::vector vectordrum; >;
Теперь можно смело скидывать эту программу кому угодно, и не надо переписывать чтобы она работала локально.