Ṣiṣe awọn database wa fun isakoṣo latọna jijin

Jẹ ki a bẹrẹ pẹlu otitọ pe awọn ọran wa nigbati o nilo lati ṣe ohun elo kan pẹlu asopọ si data data kan. Eyi ni a ṣe ni ibere ki o ma ṣe jinna pupọ si idagbasoke ẹhin ati dojukọ lori iwaju iwaju nitori aini ọwọ ati awọn ọgbọn. Emi ko le sọ pe ojutu mi yoo jẹ ailewu, ṣugbọn o ṣiṣẹ.

Niwọn igba ti Emi ko fẹran isanwo fun alejo gbigba, Mo lo nẹtiwọọki ni iṣẹ mi, IP funfun kan wa nibẹ. Eyi ni ilana rẹ:

Ṣiṣe awọn database wa fun isakoṣo latọna jijin

Mo ni iwọle si awọn kọmputa pupọ, diẹ sii ni deede 192.168.1.2 (aka 192.168.0.2) pẹlu Lainos fi sori ẹrọ nibẹ ati 192.168.0.3 pẹlu Windows. Ni gbogbogbo, Mo yan mysql fun ohun elo mi ati wo ohun ti o wa lori Lainos. O ti fi sii tẹlẹ nibẹ, ṣugbọn ko si ẹniti o mọ ọrọ igbaniwọle, ati awọn ti o mọ gbagbe (awọn ti o ṣiṣẹ ṣaaju mi). Lehin ti o kẹkọọ pe ko si ẹnikan ti o nilo rẹ, Mo paarẹ ati gbiyanju lati fi sii lẹẹkansi. Ko si iranti ti o to, ati pe lati le ṣatunṣe aṣiṣe yii Emi yoo ni lati so atẹle kan ati keyboard pẹlu Asin kan, Mo pinnu lati fi silẹ lori ọran yii. Pẹlupẹlu, ẹrọ pẹlu Windows jẹ alagbara diẹ sii ati pẹlu, Mo ni lori kọǹpútà alágbèéká mi ni ile. Ni opo, Emi kii yoo ṣe apejuwe fifi sori ẹrọ funrararẹ; ọpọlọpọ awọn itọnisọna ati awọn fidio wa nipa rẹ. Lehin ti o ti fi mysql sori ẹrọ Windows kan, Mo pinnu lati ṣe afẹyinti awọn tabili lati kọǹpútà alágbèéká mi si ibi iṣẹ mi.

O ṣe bii eyi (ninu ọran mi):

mysqldump -uroot -p your_base > dump_file.sql

Nigbamii ti, a ṣẹda aaye data kan ninu aaye data titun ati mu afẹyinti pada lori ẹrọ "titun".

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Faili afẹyinti gbọdọ wa ni gbe sori ẹrọ tuntun ati, boya, ti ko ba si ninu itọsọna pẹlu ohun elo, lẹhinna ọna kikun si rẹ. (Mo kan ṣe igbasilẹ afẹyinti si GitHub ati ṣe oniye sinu ẹrọ tuntun kan). Emi yoo ṣafikun bi a ṣe ṣẹda awọn tabili funrararẹ, ṣugbọn Emi ko fipamọ awọn sikirinisoti, ati pe Mo ro pe ko nira paapaa fun ọmọ ile-iwe ọdun 2-3.

Nigbati gbogbo awọn tabili ba ti tun pada, o to akoko lati jẹ ki iraye si latọna jijin si aaye data wa. Ni gbogbogbo, iru awọn aṣẹ bẹ ko yorisi aṣeyọri (o funni ni igbanilaaye kika nikan lati yan)

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

Ni deede diẹ sii, Mo le sopọ si ibi ipamọ data nikan pẹlu aṣẹ,

mysql -h localhost -u client -pclient

ṣugbọn eyi ko le ṣe e mọ

mysql -h 192.168.0.3 -u client -pclient

Eyi ko ṣiṣẹ fun mi ati pe Emi ko le sopọ nipasẹ adirẹsi yii bi gbongbo.

Eto iṣẹ bench mysql ṣe iranlọwọ; ninu awọn eto, yi localhost pada si% ati pe o ṣiṣẹ, botilẹjẹpe alabara ko ṣe iranlọwọ. Bayi o le sopọ si database lati console tabi lati koodu lati eyikeyi adirẹsi.

Ṣiṣe awọn database wa fun isakoṣo latọna jijin

O tun nilo lati ṣe ile tabi nẹtiwọọki iṣowo ati pa ogiriina Windows, bibẹẹkọ iwọ kii yoo paapaa ni anfani lati ping ẹrọ yii (jẹ ki nikan sopọ si ibi ipamọ data).

Idaji iṣẹ naa ti ṣe, ni bayi Mo nilo lati ni anfani lati sopọ si ibi ipamọ data lati ile.

Bi o ti le ri lati awọn nẹtiwọki aworan atọka, lati gba lati ayelujara o nilo lati lọ lati 192.168.0.3 to 192.168.1.1 (olulana), jẹ ki a lọ ni idakeji. Jẹ ki a tunto ọna lati 192.168.1.1 si 192.168.1.2 bii eyi:

Ṣiṣe awọn database wa fun isakoṣo latọna jijin

Ni gbogbogbo, aworan naa ko han, nitorinaa Emi yoo kọ pẹlu ọwọ:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Eyi le ṣee ṣe nikan ni subnet kan, iyẹn ni, o ko le firanṣẹ lẹsẹkẹsẹ si adirẹsi 192.168.0.2 tabi 192.168.0.3

Eyi jẹ pataki ki olulana mọ ibiti subnet 192.168.0.0/24 wa (kikọ awọn ipilẹ ti awọn nẹtiwọọki jẹ iwulo).

Bayi a ṣafikun gbigbe 3306 ibudo (ibudo mysql aiyipada (ti o ko ba yipada lakoko fifi sori)) si adirẹsi 192.168.1.2

Ṣiṣe awọn database wa fun isakoṣo latọna jijin

Ohun ti o nira julọ ti o kù lati ṣe ni lati ṣe siwaju lori ẹrọ Linux kan (o ni awọn kaadi nẹtiwọọki meji 192.168.1.2 (enp3s1 ni wiwo) ati 192.168.0.2 (enp3s0 ni wiwo) ki awọn kaadi nẹtiwọki mọ kini lati gbe wọn lati 192.168.1.2 si 192.168.0.2, ati lẹhinna si ẹrọ Windows wa pẹlu 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

Awon. Laini 1st tumọ si pe a gba asopọ akọkọ, 2nd ati 3rd ti a le fi awọn apo-iwe ranṣẹ ni awọn itọnisọna mejeeji, 4th ati 5th tumọ si iyipada opin irin ajo ati awọn adirẹsi orisun. Ati voila, o le sopọ lati ile nipasẹ mysql. Ati nikẹhin, koodu C ++ mi ti o ṣe eyi:

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

Bayi o le fi eto yii ranṣẹ lailewu si ẹnikẹni, ati pe o ko ni lati tun kọ lati jẹ ki o ṣiṣẹ ni agbegbe.

orisun: www.habr.com

Fi ọrọìwòye kun