Fa'aavanoaina le fa'amaumauga mo feso'ota'iga mamao

Sei o tatou amata i le mea moni o loʻo i ai mataupu pe a manaʻomia le faia o se talosaga ma se fesoʻotaʻiga i se database. E faia lea mea ina ia aua ne'i fa'aloloto tele i le atina'e pito i tua ma fa'atotonu i luma ona o le le lava o lima ma tomai. E le mafai ona ou fai atu o le a saogalemu laʻu fofo, ae e aoga.

Talu ai ou te le fiafia e totogi le talimalo, na ou faʻaogaina le fesoʻotaʻiga i laʻu galuega, o loʻo i ai se IP paʻepaʻe iina. O lona fausaga lenei:

Fa'aavanoaina le fa'amaumauga mo feso'ota'iga mamao

Ou te maua le tele o komepiuta, sili atu le 192.168.1.2 (aka 192.168.0.2) faʻatasi ai ma Linux faʻapipiʻi iina ma 192.168.0.3 ma Windows. I se tulaga lautele, na ou filifilia mysql mo laʻu talosaga ma vaʻavaʻai i mea na maua ile Linux. Ua uma ona faʻapipiʻiina iina, ae leai se tasi na te iloa le faʻaupuga, ma i latou na iloa na galo (i latou na galulue muamua ia te aʻu). Ina ua ou iloa e leai se tasi e manaʻomia, na ou tapeina ma taumafai e toe faʻapipiʻi. E le lava le manatua, ma talu ai ina ia mafai ona foia lenei mea sese e tatau ona ou faʻafesoʻotaʻi se mataʻitu ma le piano ma se kiore i ai, na ou filifili ai e fiu i lenei mataupu. E le gata i lea, o le masini ma Windows e sili atu le mamana ma faʻaopoopo, o loʻo i luga o laʻu komepiuta i le fale. I le mataupu faavae, o le a ou le faʻamatalaina le faʻapipiʻiina lava ia; e tele tusi lesona ma vitio e uiga i ai. I le faʻapipiʻiina o mysql i luga o se masini Windows, na ou filifili e faʻasaʻo laulau mai laʻu komepiuta i laʻu fale faigaluega.

Ua faia e pei o lenei (i loʻu tulaga):

mysqldump -uroot -p your_base > dump_file.sql

Le isi, matou te fatuina se faʻamaumauga i totonu o le database fou ma toe faʻafoʻi le faʻamaumauga i luga o le masini "fou".

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


O le faila faila e tatau ona tuʻu i luga o le masini fou ma, masalo, pe a le i totonu o le lisi ma le aoga, ona oʻo lea i le auala atoa. (Na ou lafoina le faʻamaumauga i GitHub ma faʻapipiʻi i luga o se masini fou). Ou te faʻaopoopoina pe faʻapefea ona faia ia laulau, ae ou te leʻi faʻasaoina le screenshots, ma ou te manatu e le faigata e oʻo lava i se tamaititi 2-3 tausaga.

A toe fa'afo'i uma laulau, ua o'o i le taimi e fa'aavanoaina ai le avanoa mamao i le fa'amaumauga. I se tulaga lautele, o ia poloaiga e leʻi taʻitaʻia ai le manuia (naʻo le faʻatagaina faitau e filifili ai)

create user 'client'@'%' IDENTIFIED by 'client';
grant select on your_base . * to 'client'@'%';
flush privileges;

E sili atu le saʻo, e mafai ona ou faʻafesoʻotaʻi i le database naʻo le faʻatonuga,

mysql -h localhost -u client -pclient

ae ua le mafai e lenei tasi ona toe faia

mysql -h 192.168.0.3 -u client -pclient

E leʻi aoga lenei mea mo aʻu ma e le mafai ona ou faʻafesoʻotaʻi e ala i lenei tuatusi o le aʻa.

Na fesoasoani le polokalame mysql workbench; i tulaga, sui localhost i % ma e aoga, e ui lava e leʻi fesoasoani le kalani. O lea e mafai ona e faʻafesoʻotaʻi i le database mai le faʻamafanafanaga poʻo mai le code mai soʻo se tuatusi.

Fa'aavanoaina le fa'amaumauga mo feso'ota'iga mamao

E te manaʻomia foʻi le faia o se fale poʻo se pisinisi faʻafesoʻotaʻi ma tape le Windows firewall, a leai o le a le mafai ona e pingina lenei masini (ae naʻo le faʻafesoʻotaʻi i le database).

O le afa o le galuega ua maeʻa, o lea ua tatau ona mafai ona ou faʻafesoʻotaʻi i le database mai le fale.

E pei ona mafai ona e vaʻai i le ata o fesoʻotaʻiga, e te alu i le Initaneti e te manaʻomia le alu mai le 192.168.0.3 i le 192.168.1.1 (router), tatou o i le isi itu. Sei o tatou fetuunai le auala mai le 192.168.1.1 i le 192.168.1.2 pei o lenei:

Fa'aavanoaina le fa'amaumauga mo feso'ota'iga mamao

I se tulaga lautele, e le faʻaalia le ata, o lea o le a ou tusia i le lima:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

E na'o le tasi le subnet e mafai ona fai ai, o lona uiga, e le mafai ona e tu'u vave i le tuatusi 192.168.0.2 po'o le 192.168.0.3.

E manaʻomia lenei mea ina ia iloa e le router le mea o loʻo i ai le subnet 192.168.0.0/24 (aʻoaʻoina faʻavae o fesoʻotaʻiga e aoga).

O lenei matou te faʻaopoopo le port forwarding 3306 (le faaletonu mysql port (pe afai e te leʻi suia i le taimi o faʻapipiʻi)) i le tuatusi 192.168.1.2

Fa'aavanoaina le fa'amaumauga mo feso'ota'iga mamao

O le mea sili ona faigata o loʻo totoe o le faia lea o le faʻauluina i luga o se masini Linux (e lua kata fesoʻotaʻiga 192.168.1.2 (enp3s1 interface) ma le 192.168.0.2 (enp3s0 interface) ina ia iloa e kata fesoʻotaʻiga le mea e faʻafeiloaʻi mai le 192.168.1.2. i le 192.168.0.2, ona sosoo ai lea ma le matou masini Windows ma 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

O na. O le laina 1 o lona uiga tatou te talia le fesoʻotaʻiga muamua, o le 2 ma le 3 e mafai ona tatou lafoina afifi i itu uma e lua, o le 4 ma le 5 o lona uiga o le suia o le taunuuga ma tuatusi faʻapogai. Ma voila, e mafai ona e faʻafesoʻotaʻi mai le fale e ala ile mysql. Ma le mea mulimuli, o laʻu C++ code e faia lenei mea:

//DataBaseConnection.cpp
#include "DataBaseConnection.h"

DataBaseConnection::DataBaseConnection()
{
}
void DataBaseConnection::Connect()
{
	// Получаем дескриптор соединения
	conn = mysql_init(NULL);
	if (conn == NULL)
	{
		// Если дескриптор не получен – выводим сообщение об ошибке
		fprintf(stderr, "Error: can'tcreate MySQL-descriptorn");
		//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: %sn", mysql_error(conn));
	}
	else
	{
		// Если соединение успешно установлено выводим фразу - "Success!"
		fprintf(stdout, "Success!n");
	}
}
std::vector<std::string> DataBaseConnection::Query()
{
	vectordrum.clear();
	std::string query = "SELECT * FROM drum where id=0";
	const 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: %sn", row[0], row[1], row[2]);
			vectordrum.push_back(row[2]);
		}
	}
	else
	{
		std::cout << "Query failed:" << mysql_error(conn) << std::endl;
	}
	return vectordrum;
}
void DataBaseConnection::Close()
{
	// Закрываем соединение с сервером базы данных
	mysql_close(conn);
}
DataBaseConnection::~DataBaseConnection()
{
	vectordrum.clear();
}
//DataBaseConnection.h
#pragma once
#include <iostream>
#include <mysql.h>
#include <vector>
#pragma comment(lib,"mysqlcppconn.lib")
#pragma comment(lib,"libmysql.lib")
class DataBaseConnection
{
public:
	DataBaseConnection();
	void Connect();
	std::vector<std::string> Query();
	void Close();
	~DataBaseConnection();
	MYSQL *conn;
	MYSQL_ROW row;
	MYSQL_RES *res;
	int qstate;
	std::vector<std::string> vectordrum;
};

Ole taimi nei e mafai ona e lafoina ma le saogalemu lenei polokalame i soʻo se tasi, ma e te le tau toe tusia ina ia faʻaogaina i le lotoifale.

puna: www.habr.com

Faaopoopo i ai se faamatalaga