E hoʻolako i ka waihona no ka pilina mamao

E hoʻomaka me ka ʻoiaʻiʻo aia nā hihia ke pono ʻoe e hana i kahi noi me kahi pilina i kahi waihona. Hana ʻia kēia i ʻole e komo nui i ka hoʻomohala ʻana i ka hope a me ka noʻonoʻo ʻana i ka mua ma muli o ka nele o nā lima a me nā mākaukau. ʻAʻole hiki iaʻu ke ʻōlelo e palekana kaʻu hopena, akā hana ia.

No ka mea ʻaʻole wau makemake e uku no ka hoʻokipa ʻana, ua hoʻohana wau i ka pūnaewele ma kaʻu hana, aia kahi IP keʻokeʻo ma laila. Eia kona hale.

E hoʻolako i ka waihona no ka pilina mamao

Loaʻa iaʻu nā kamepiula he nui, ʻoi aku ka pololei o 192.168.1.2 (aka 192.168.0.2) me Linux i hoʻokomo ʻia ma laila a me 192.168.0.3 me Windows. Ma keʻano laulā, ua koho au i ka mysql no kaʻu noi a nānā i nā mea i loaʻa ma Linux. Ua kau ʻia ma laila, akā ʻaʻohe mea i ʻike i ka ʻōlelo huna, a poina ka poʻe i ʻike (ka poʻe i hana ma mua oʻu). I koʻu aʻo ʻana ʻaʻohe mea e pono ai, holoi wau a hoʻāʻo e hoʻokomo hou. ʻAʻole lawa ka hoʻomanaʻo, a no ka hoʻoponopono ʻana i kēia hewa, pono wau e hoʻopili i kahi monitor a me kahi kīwī me kahi ʻiole iā ia, ua hoʻoholo wau e haʻalele i kēia mea. Eia kekahi, ʻoi aku ka ikaika o ka mīkini me Windows, aia iaʻu ma kaʻu kamepiula ma ka home. Ma ke kumu, ʻaʻole wau e wehewehe i ka hoʻonohonoho ponoʻī; nui nā manual a me nā wikiō e pili ana iā ia. Ma hope o ka hoʻokomo ʻana i ka mysql ma kahi mīkini Windows, ua hoʻoholo wau e hoʻihoʻi i nā papa mai kaʻu kamepiula i kaʻu wahi hana.

Ua hana ʻia e like me kēia (i koʻu hihia):

mysqldump -uroot -p your_base > dump_file.sql

A laila, hana mākou i kahi waihona ma ka waihona hou a hoʻihoʻi i ka waihona ma ka mīkini "hou".

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Pono e kau ʻia ka waihona waihona ma ka mīkini hou a, inā ʻaʻole i loko o ka papa kuhikuhi me ka pono, a laila ke ala piha i laila. (Ua hoʻouka wau i ka waihona i GitHub a hoʻopaʻa iā ia i kahi mīkini hou). E hoʻohui au i ka hana ʻana o nā papa ʻaina, akā ʻaʻole wau i mālama i nā screenshots, a manaʻo wau ʻaʻole paʻakikī ia no kahi haumāna 2-3 makahiki.

Ke hoʻihoʻi ʻia nā papa ʻaina a pau, ʻo ia ka manawa e hoʻokaʻawale mamao i ka waihona. Ma keʻano laulā, ʻaʻole i alakaʻi ia mau kauoha i ka kūleʻa (ua hāʻawi wale ʻia ka ʻae heluhelu e koho)

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

ʻOi aku ka pololei, hiki iaʻu ke hoʻohui i ka waihona wale nō me ke kauoha,

mysql -h localhost -u client -pclient

akā ʻaʻole hiki i kēia ke hana hou

mysql -h 192.168.0.3 -u client -pclient

ʻAʻole i hana kēia iaʻu a ʻaʻole hiki iaʻu ke hoʻopili ma o kēia helu wahi ma ke ʻano he kumu.

Ua kōkua ka papahana mysql workbench; i nā hoʻonohonoho, hoʻololi i ka localhost i % a hana ia, ʻoiai ʻaʻole i kōkua ka mea kūʻai aku. I kēia manawa hiki iā ʻoe ke hoʻohui i ka waihona mai ka console a mai ke code mai kekahi helu wahi.

E hoʻolako i ka waihona no ka pilina mamao

Pono ʻoe e hana i kahi ʻoihana home a i ʻole ʻoihana ʻoihana a hoʻopau i ka pā ahi Windows, i ʻole ʻaʻole hiki iā ʻoe ke ping i kēia mīkini (e waiho wale i ka hoʻopili ʻana i ka waihona).

Ua pau ka hapalua o ka hana, i kēia manawa pono wau e hoʻopili i ka waihona mai ka home.

E like me kāu e ʻike ai mai ke kiʻikuhi pūnaewele, no ka hele ʻana i ka Pūnaewele pono ʻoe e hele mai 192.168.0.3 a i 192.168.1.1 (router), e hele kāua ma ka ʻaoʻao ʻē aʻe. E hoʻonohonoho i ke ala mai 192.168.1.1 a i 192.168.1.2 e like me kēia:

E hoʻolako i ka waihona no ka pilina mamao

Ma keʻano laulā, ʻaʻole hōʻike ʻia ke kiʻi, no laila e kākau wau ma ka lima:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Hiki ke hana i kēia ma hoʻokahi subnet, ʻo ia hoʻi, ʻaʻole hiki iā ʻoe ke hoʻouna koke i ka helu helu 192.168.0.2 a i ʻole 192.168.0.3.

Pono kēia i ʻike ka mea alalai i kahi o ka subnet 192.168.0.0/24 (pono ke aʻo ʻana i nā kumu o nā pūnaewele).

I kēia manawa, hoʻohui mākou i ka port forwarding 3306 (ke awa mysql paʻamau (inā ʻaʻole ʻoe i hoʻololi iā ia i ka wā e hoʻokomo ai)) i ka helu 192.168.1.2.

E hoʻolako i ka waihona no ka pilina mamao

ʻO ka mea paʻakikī loa i koe e hana, ʻo ia ke hana i ka hoʻouna ʻana ma luna o ka mīkini Linux (ʻelua mau kāleka pūnaewele 192.168.1.2 (enp3s1 interface) a me 192.168.0.2 (enp3s0 interface) i ʻike nā kāleka pūnaewele i ka mea e hoʻoili iā lākou mai 192.168.1.2 i 192.168.0.2, a laila i kā mākou mīkini Windows me 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 kēlā mau mea. ʻO ka laina 1 ka manaʻo e ʻae mākou i ka pilina mua, ʻo ka 2 a me 3 hiki iā mākou ke hoʻouna i nā ʻeke ma nā ʻaoʻao ʻelua, ʻo ka 4 a me 5 ʻo ia ka hoʻololi ʻana i ka wahi e hele ai a me nā wahi kumu. A voila, hiki iā ʻoe ke hoʻohui mai ka home ma o mysql. A ʻo ka hope, ʻo kaʻu code C++ e hana i kēia:

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

I kēia manawa hiki iā ʻoe ke hoʻouna palekana i kēia polokalamu i kekahi, a ʻaʻole pono ʻoe e kākau hou iā ia e hana ia ma ka ʻāina.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka