An bunachar sonraí a chur ar fáil le haghaidh ciancheangail

Tosaímid leis an bhfíric go bhfuil cásanna ann nuair is gá duit iarratas a dhéanamh le ceangal le bunachar sonraí. Déantar é seo ionas nach ndéanfar an iomarca dul i ngleic le forbairt an innill agus díriú ar an aghaidh mar gheall ar easpa lámha agus scileanna. Ní féidir liom a rá go mbeidh mo réiteach sábháilte, ach oibríonn sé.

Ós rud é nach maith liom íoc as óstáil, d'úsáid mé an líonra ag mo chuid oibre, tá IP bán ann. Seo é a struchtúr:

An bunachar sonraí a chur ar fáil le haghaidh ciancheangail

Tá rochtain agam ar roinnt ríomhairí, níos cruinne 192.168.1.2 (aka 192.168.0.2) le Linux suiteáilte ann agus 192.168.0.3 le Windows. Go ginearálta, roghnaigh mé mysql do m'iarratas agus d'fhéach mé ar an méid a bhí ar fáil ar Linux. Bhí sé suiteáilte cheana féin ann, ach níl a fhios ag aon duine an focal faire, agus rinne na daoine a raibh a fhios acu dearmad (iad siúd a d'oibrigh romham). Tar éis dom a fháil amach nach raibh gá ag éinne leis, scrios mé é agus rinne mé iarracht é a shuiteáil arís. Ní raibh go leor cuimhne ann, agus ós rud é go mbeadh orm monatóireacht agus méarchlár a nascadh le luch a nascadh leis an earráid seo, chinn mé éirí as an ábhar seo. Thairis sin, tá an meaisín le Windows i bhfad níos cumhachtaí agus móide, tá sé agam ar mo ríomhaire glúine sa bhaile. I bprionsabal, ní dhéanfaidh mé cur síos ar an suiteáil féin; tá go leor lámhleabhar agus físeáin faoi. Tar éis mysql a shuiteáil ar mheaisín Windows, chinn mé cúltaca a dhéanamh de na táblaí ó mo ríomhaire glúine go dtí mo stáisiún oibre.

Déantar é mar seo (i mo chás):

mysqldump -uroot -p your_base > dump_file.sql

Ansin, cruthaímid bunachar sonraí sa bhunachar sonraí nua agus cuirimid ar ais an cúltaca ar an meaisín “nua”.

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Ní mór an comhad cúltaca a chur ar an meaisín nua agus, b'fhéidir, mura bhfuil sé san eolaire leis an bhfóntas, ansin an cosán iomlán chuige. (D'éirigh liom an cúltaca a uaslódáil chuig GitHub agus clónáil mé ar mheaisín nua é). Chuirfinn leis an gcaoi a gcruthaítear na táblaí féin, ach níor shábháil mé na screenshots, agus is dóigh liom nach bhfuil sé deacair fiú do dhalta 2-3 bliana.

Nuair a bheidh na táblaí go léir athchóirithe, tá sé in am cianrochtain a chur ar an mbunachar sonraí. Go ginearálta, níor éirigh le horduithe dá leithéid (ní thug sé ach cead léite a roghnú)

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

Níos cruinne, ní raibh mé in ann ceangal leis an mbunachar sonraí ach amháin leis an ordú,

mysql -h localhost -u client -pclient

ach ní fhéadfadh an ceann seo é a dhéanamh a thuilleadh

mysql -h 192.168.0.3 -u client -pclient

Níor oibrigh sé seo domsa agus ní raibh mé in ann nascadh tríd an seoladh seo mar fhréamh.

Chuidigh clár mysql workbench; sna socruithe, athraigh localhost go % agus oibríonn sé, cé nár chabhraigh an cliant. Anois is féidir leat ceangal leis an mbunachar sonraí ón gconsól nó ó chód ó aon seoladh.

An bunachar sonraí a chur ar fáil le haghaidh ciancheangail

Ní mór duit freisin líonra baile nó gnó a dhéanamh agus balla dóiteáin Windows a mhúchadh, nó ní bheidh tú in ann an meaisín seo a phing fiú (gan trácht ar nascadh leis an mbunachar sonraí).

Tá leath an jab déanta, anois is gá dom a bheith in ann ceangal leis an mbunachar sonraí ón mbaile.

Mar a fheiceann tú ón léaráid líonra, chun an Idirlíon a fháil ní mór duit dul ó 192.168.0.3 go 192.168.1.1 (ródaire), a ligean ar dul sa treo eile. Déanaimis an bealach a chumrú ó 192.168.1.1 go 192.168.1.2 mar seo:

An bunachar sonraí a chur ar fáil le haghaidh ciancheangail

Go ginearálta, ní thaispeánann an pictiúr, mar sin scríobhfaidh mé de láimh é:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Ní féidir é seo a dhéanamh ach in aon fho-líon amháin, is é sin, ní féidir leat a chur ar aghaidh láithreach chuig an seoladh 192.168.0.2 nó 192.168.0.3

Tá sé seo riachtanach ionas go mbeidh a fhios ag an ródaire cá bhfuil an subnet 192.168.0.0/24 suite (tá sé úsáideach bunghnéithe líonraí a fhoghlaim).

Anois cuirimid port ar aghaidh 3306 (an calafort mysql réamhshocraithe (murar athraigh tú é le linn na suiteála)) chuig an seoladh 192.168.1.2

An bunachar sonraí a chur ar fáil le haghaidh ciancheangail

Is é an rud is deacra atá fágtha le déanamh ná cur ar aghaidh a dhéanamh ar mheaisín Linux (tá dhá chárta líonra aige 192.168.1.2 (comhéadan enp3s1) agus 192.168.0.2 (comhéadan enp3s0) ionas go mbeidh a fhios ag na cártaí líonra cad atá le haistriú ó 192.168.1.2. go 192.168.0.2, agus ansin chuig ár meaisín Windows le 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

Iad siúd. Ciallaíonn an 1ú líne go nglacann muid leis an gcéad nasc, an 2ú agus an 3ú gur féidir linn paicéid a sheoladh sa dá threo, ciallaíonn an 4ú agus an 5ú ceann scríbe agus seoltaí foinse a athrú. Agus voila, is féidir leat ceangal ón mbaile trí mysql. Agus ar deireadh, mo chód C++ a dhéanann é seo:

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

Anois is féidir leat an clár seo a sheoladh go sábháilte chuig duine ar bith, agus ní gá duit é a athscríobh le go n-oibreoidh sé go háitiúil.

Foinse: will.com

Add a comment