A’ dèanamh an stòr-dàta ri fhaighinn airson ceangal aig astar

Feuch an tòisich sinn leis an fhìrinn gu bheil cùisean ann nuair a dh’ fheumas tu tagradh a dhèanamh le ceangal ri stòr-dàta. Tha seo air a dhèanamh gus nach tèid thu a-steach cus a-steach do leasachadh backend agus fòcas a chuir air an aghaidh air sgàth dìth làmhan is sgilean. Chan urrainn dhomh a ràdh gum bi am fuasgladh agam sàbhailte, ach tha e ag obair.

Leis nach toil leam pàigheadh ​​​​airson aoigheachd, chleachd mi an lìonra aig an obair agam, tha IP geal an sin. Seo an structar aige:

A’ dèanamh an stòr-dàta ri fhaighinn airson ceangal aig astar

Tha cothrom agam air grunn choimpiutairean, nas mionaidiche 192.168.1.2 (aka 192.168.0.2) le Linux air a chuir a-steach an sin agus 192.168.0.3 le Windows. San fharsaingeachd, thagh mi mysql airson an tagradh agam agus choimhead mi air na bha ri fhaighinn air Linux. Chaidh a chuir a-steach an sin mar-thà, ach chan eil fios aig duine am facal-faire, agus dhìochuimhnich an fheadhainn a bha eòlach (an fheadhainn a bha ag obair romham). An dèidh ionnsachadh nach robh feum aig duine air, chuir mi às e agus dh'fheuch mi ri a stàladh a-rithist. Cha robh cuimhne gu leòr ann, agus oir airson a’ mhearachd seo a chàradh dh’fheumainn monitor agus meur-chlàr a cheangal le luchag ris, chuir mi romham a’ chùis seo a leigeil seachad. A bharrachd air an sin, tha an inneal le Windows tòrr nas cumhachdaiche agus a bharrachd, tha e agam air an laptop agam aig an taigh. Ann am prionnsapal, cha toir mi cunntas air an stàladh fhèin; tha tòrr leabhraichean-làimhe agus bhideothan mu dheidhinn. An dèidh mysql a chuir a-steach air inneal Windows, chuir mi romham cùl-taic a dhèanamh de na bùird bhon laptop agam chun ionad-obrach agam.

Tha e air a dhèanamh mar seo (na mo chùis):

mysqldump -uroot -p your_base > dump_file.sql

An uairsin, cruthaichidh sinn stòr-dàta anns an stòr-dàta ùr agus bheir sinn air ais an cùl-taic air an inneal “ùr”.

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Feumar am faidhle cùl-taic a chuir air an inneal ùr agus, is dòcha, mura h-eil e san eòlaire leis a’ ghoireas, an uairsin an t-slighe slàn thuige. (Tha mi dìreach air an cùl-taic a luchdachadh suas gu GitHub agus air a chlò-bhualadh air inneal ùr). Chuirinn ris mar a tha na bùird iad fhèin air an cruthachadh, ach cha do shàbhail mi na dealbhan-sgrìn, agus tha mi a’ smaoineachadh nach eil e duilich eadhon dha oileanach 2-3 bliadhna.

Nuair a bhios na clàran air fad air an ath-nuadhachadh, tha an t-àm ann ruigsinneachd iomallach a thoirt don stòr-dàta. San fharsaingeachd, cha do lean òrdughan mar sin gu soirbheachas (cha tug e ach cead leughaidh airson taghadh)

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

Nas mionaidiche, b 'urrainn dhomh ceangal ris an stòr-dàta a-mhàin leis an àithne,

mysql -h localhost -u client -pclient

ach cha b’ urrainn am fear seo a dhèanamh tuilleadh

mysql -h 192.168.0.3 -u client -pclient

Cha do dh’obraich seo dhòmhsa agus cha b’ urrainn dhomh ceangal tron ​​t-seòladh seo mar fhreumh.

Chuidich am prògram mysql workbench; anns na roghainnean, atharraich localhost gu % agus bidh e ag obair, ged nach do chuidich an neach-dèiligidh. A-nis faodaidh tu ceangal ris an stòr-dàta bhon consol no bho chòd bho sheòladh sam bith.

A’ dèanamh an stòr-dàta ri fhaighinn airson ceangal aig astar

Feumaidh tu cuideachd lìonra dachaigh no gnìomhachais a dhèanamh agus balla-teine ​​​​Windows a chuir dheth, air neo cha bhith e comasach dhut eadhon an inneal seo a phingadh (gun luaidh air ceangal ris an stòr-dàta).

Tha leth den obair air a dhèanamh, a-nis feumaidh mi a bhith comasach air ceangal ris an stòr-dàta bhon dachaigh.

Mar a chì thu bhon diagram lìonra, gus faighinn chun eadar-lìn feumaidh tu a dhol bho 192.168.0.3 gu 192.168.1.1 (router), rachamaid an taobh eile. Feuch an rèiteachadh sinn an t-slighe bho 192.168.1.1 gu 192.168.1.2 mar seo:

A’ dèanamh an stòr-dàta ri fhaighinn airson ceangal aig astar

San fharsaingeachd, chan eil an dealbh a’ sealltainn, mar sin sgrìobhaidh mi e le làimh:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Chan urrainnear seo a dhèanamh ach ann an aon subnet, is e sin, chan urrainn dhut a chuir air adhart sa bhad chun t-seòladh 192.168.0.2 no 192.168.0.3

Tha seo riatanach gus am bi fios aig an router far a bheil an subnet 192.168.0.0 / 24 suidhichte (tha e feumail ionnsachadh bunaitean lìonraidhean).

A-nis cuiridh sinn port air adhart 3306 (am port mysql bunaiteach (mura h-atharraich thu e rè an stàlaidh)) chun t-seòladh 192.168.1.2

A’ dèanamh an stòr-dàta ri fhaighinn airson ceangal aig astar

Is e an rud as duilghe a tha air fhàgail ri dhèanamh gluasad air adhart air inneal Linux (tha dà chairt lìonra aige 192.168.1.2 (eadar-aghaidh enp3s1) agus 192.168.0.2 (eadar-aghaidh enp3s0) gus am bi fios aig na cairtean lìonra dè a ghluaiseas iad bho 192.168.1.2 gu 192.168.0.2, agus an uairsin chun inneal Windows againn 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

An fheadhainn sin. Tha an loidhne 1st a 'ciallachadh gu bheil sinn a' gabhail ris a 'chiad cheangal, an 2na agus an 3mh as urrainn dhuinn pacaidean a chuir air gach taobh, tha an 4mh agus an 5mh a' ciallachadh atharrachadh ceann-uidhe agus seòlaidhean stòr. Agus voila, faodaidh tu ceangal bhon dachaigh tro mysql. Agus mu dheireadh, mo chòd C ++ a nì 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;
};

A-nis faodaidh tu am prògram seo a chuir gu neach sam bith gu sàbhailte, agus cha leig thu a leas ath-sgrìobhadh gus toirt air obrachadh gu h-ionadail.

Source: www.habr.com

Cuir beachd ann