ื”ืคื™ื›ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœื–ืžื™ืŸ ืœื—ื™ื‘ื•ืจ ืžืจื—ื•ืง

ื ืชื—ื™ืœ ืžื–ื” ืฉื™ืฉ ืžืงืจื™ื ืฉื‘ื”ื ืฆืจื™ืš ืœืขืฉื•ืช ืืคืœื™ืงืฆื™ื” ืขื ื—ื™ื‘ื•ืจ ืœืžืกื“ ื ืชื•ื ื™ื. ื–ื” ื ืขืฉื” ืขืœ ืžื ืช ืœื ืœื”ืชืขืžืง ื™ื•ืชืจ ืžื“ื™ ื‘ืคื™ืชื•ื— ืื—ื•ืจื™ ื•ืœื”ืชืจื›ื– ื‘ื—ื–ื™ืช ื”ืงืฆื” ื‘ื’ืœืœ ื—ื•ืกืจ ื‘ื™ื“ื™ื™ื ื•ื›ื™ืฉื•ืจื™ื. ืื ื™ ืœื ื™ื›ื•ืœ ืœื”ื’ื™ื“ ืฉื”ืคืชืจื•ืŸ ืฉืœื™ ื™ื”ื™ื” ื‘ื˜ื•ื—, ืื‘ืœ ื–ื” ืขื•ื‘ื“.

ืžื›ื™ื•ื•ืŸ ืฉืื ื™ ืœื ืื•ื”ื‘ ืœืฉืœื ืขืœ ืื™ืจื•ื—, ื”ืฉืชืžืฉืชื™ ื‘ืจืฉืช ื‘ืขื‘ื•ื“ื” ืฉืœื™, ื™ืฉ ืฉื IP ืœื‘ืŸ. ื”ื ื” ื”ืžื‘ื ื” ืฉืœื•:

ื”ืคื™ื›ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœื–ืžื™ืŸ ืœื—ื™ื‘ื•ืจ ืžืจื—ื•ืง

ื™ืฉ ืœื™ ื’ื™ืฉื” ืœืžืกืคืจ ืžื—ืฉื‘ื™ื, ืœื™ืชืจ ื“ื™ื•ืง 192.168.1.2 (ื”ืžื›ื•ื ื” ื’ื 192.168.0.2) ืขื ืœื™ื ื•ืงืก ืžื•ืชืงื ืช ืฉื ื•-192.168.0.3 ืขื ื•ื•ื™ื ื“ื•ืก. ื‘ืื•ืคืŸ ื›ืœืœื™, ื‘ื—ืจืชื™ ื‘-mysql ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื” ืฉืœื™ ื•ื‘ื“ืงืชื™ ืžื” ื–ืžื™ืŸ ื‘ืœื™ื ื•ืงืก. ื–ื” ื›ื‘ืจ ื”ื™ื” ืžื•ืชืงืŸ ืฉื, ืื‘ืœ ืืฃ ืื—ื“ ืœื ื™ื•ื“ืข ืืช ื”ืกื™ืกืžื”, ื•ืžื™ ืฉื™ื“ืข ืฉื›ื— (ืืœื” ืฉืขื‘ื“ื• ืœืคื ื™). ืœืื—ืจ ืฉื ื•ื“ืข ืœื™ ืฉืืฃ ืื—ื“ ืœื ืฆืจื™ืš ืืช ื–ื”, ืžื—ืงืชื™ ืื•ืชื• ื•ื ื™ืกื™ืชื™ ืœื”ืชืงื™ืŸ ืื•ืชื• ืฉื•ื‘. ืœื ื”ื™ื” ืžืกืคื™ืง ื–ื™ื›ืจื•ืŸ, ื•ืžื›ื™ื•ื•ืŸ ืฉื›ื“ื™ ืœืชืงืŸ ืืช ื”ืฉื’ื™ืื” ื”ื–ื• ืืฆื˜ืจืš ืœื—ื‘ืจ ืืœื™ื• ืฆื’ ื•ืžืงืœื“ืช ืขื ืขื›ื‘ืจ, ื”ื—ืœื˜ืชื™ ืœื•ื•ืชืจ ื‘ืขื ื™ื™ืŸ ื”ื–ื”. ื™ืชืจ ืขืœ ื›ืŸ, ื”ืžื›ื•ื ื” ืขื 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;


ื™ืฉ ืœืžืงื ืืช ืงื•ื‘ืฅ ื”ื’ื™ื‘ื•ื™ ื‘ืžื—ืฉื‘ ื”ื—ื“ืฉ ื•ืื•ืœื™, ืื ืœื ื‘ืกืคืจื™ื™ื” ืขื ื›ืœื™ ื”ืฉื™ืจื•ืช, ืื– ืืช ื”ื ืชื™ื‘ ื”ืžืœื ืืœื™ื•. (ื”ืจื’ืข ื”ืขืœื™ืชื™ ืืช ื”ื’ื™ื‘ื•ื™ ืœ-GitHub ื•ืฉื‘ื˜ืชื™ ืื•ืชื• ืœืžื—ืฉื‘ ื—ื“ืฉ). ื”ื™ื™ืชื™ ืžื•ืกื™ืฃ ืื™ืš ื”ื˜ื‘ืœืื•ืช ืขืฆืžืŸ ื ื•ืฆืจื•ืช, ืื‘ืœ ืœื ืฉืžืจืชื™ ืืช ืฆื™ืœื•ืžื™ ื”ืžืกืš, ื•ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ืœื ืงืฉื” ืืคื™ืœื• ืœืกื˜ื•ื“ื ื˜ ื‘ืŸ ืฉื ืชื™ื™ื-ืฉืœื•ืฉ.

ื›ืืฉืจ ื›ืœ ื”ื˜ื‘ืœืื•ืช ืฉื•ื—ื–ืจื•, ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืคื•ืš ื’ื™ืฉื” ืžืจื—ื•ืง ืœืžืกื“ ื”ื ืชื•ื ื™ื ืœื–ืžื™ื ื”. ื‘ืื•ืคืŸ ื›ืœืœื™, ืคืงื•ื“ื•ืช ื›ืืœื” ืœื ื”ื•ื‘ื™ืœื• ืœื”ืฆืœื—ื” (ื”ื™ื ื ืชื ื” ืจืง ื”ืจืฉืืช ืงืจื™ืื” ืœื‘ื—ื™ืจื”)

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

ื–ื” ืœื ืขื‘ื“ ื‘ืฉื‘ื™ืœื™ ื•ืœื ื”ืฆืœื—ืชื™ ืœื”ืชื—ื‘ืจ ื“ืจืš ื”ื›ืชื•ื‘ืช ื”ื–ื• ื›ืฉื•ืจืฉ.

ืชื•ื›ื ื™ืช mysql workbench ืขื–ืจื”; ื‘ื”ื’ื“ืจื•ืช, ืฉื ื” ืืช localhost ืœ-% ื•ื–ื” ืขื•ื‘ื“, ืœืžืจื•ืช ืฉื”ืœืงื•ื— ืœื ืขื–ืจ. ื›ืขืช ื ื™ืชืŸ ืœื”ืชื—ื‘ืจ ืœืžืกื“ ื”ื ืชื•ื ื™ื ืžื”ืžืกื•ืฃ ืื• ืžืงื•ื“ ืžื›ืœ ื›ืชื•ื‘ืช.

ื”ืคื™ื›ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœื–ืžื™ืŸ ืœื—ื™ื‘ื•ืจ ืžืจื—ื•ืง

ืืชื” ื’ื ืฆืจื™ืš ืœื™ืฆื•ืจ ืจืฉืช ื‘ื™ืชื™ืช ืื• ืขืกืงื™ืช ื•ืœื›ื‘ื•ืช ืืช ื—ื•ืžืช ื”ืืฉ ืฉืœ 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. ื•ืœื‘ืกื•ืฃ, ืงื•ื“ C++ ืฉืœื™ ืฉืขื•ืฉื” ืืช ื–ื”:

//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;
};

ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ ืœืฉืœื•ื— ืืช ื”ืชื•ื›ื ื™ืช ื”ื–ื• ื‘ื‘ื˜ื—ื” ืœื›ืœ ืื—ื“, ื•ืืชื” ืœื ืฆืจื™ืš ืœืฉื›ืชื‘ ืื•ืชื” ื›ื“ื™ ืœื’ืจื•ื ืœื” ืœืขื‘ื•ื“ ื‘ืื•ืคืŸ ืžืงื•ืžื™.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”