Ho etsa hore database e fumanehe bakeng sa khokahano e hole

A re qaleng ka taba ea hore ho na le linyeoe ha u hloka ho etsa kopo ka ho hokahanya le database. Sena se etsoa e le hore ho se ke ha e-ba le maikutlo a mangata ho nts'etsopele ea morao-rao le ho tsepamisa maikutlo ho tse ka pele ka lebaka la khaello ea matsoho le litsebo. Ha ke khone ho re tharollo ea ka e tla sireletseha, empa e ea sebetsa.

Kaha ha ke rate ho lefa bakeng sa ho amohela baeti, ke sebelisitse marang-rang mosebetsing oa ka, ho na le IP e tšoeu moo. Sebopeho sa eona ke sena:

Ho etsa hore database e fumanehe bakeng sa khokahano e hole

Ke fihlella lik'homphieutha tse 'maloa, ka ho toba 192.168.1.2 (aka 192.168.0.2) le Linux e kentsoeng moo le 192.168.0.3 le Windows. Ka kakaretso, ke khethile mysql bakeng sa kopo ea ka mme ka sheba se neng se fumaneha Linux. E ne e se e kentsoe moo, empa ha ho motho ea tsebang phasewete, mme ba neng ba tseba ba lebetse (ba neng ba sebetsa pele ho nna). Kaha ke ithutile hore ha ho motho ea e hlokang, ke ile ka e hlakola ’me ka leka ho e kenya hape. Ho ne ho se na mohopolo o lekaneng, 'me kaha ho lokisa phoso ena ke ne ke tla tlameha ho hokahanya mochine le keyboard ka mouse ho eona, ke ile ka etsa qeto ea ho tlohela taba ena. Ho feta moo, mochini o nang le Windows o matla haholo mme hape, ke na le ona ho laptop ea ka lapeng. Ha e le hantle, nke ke ka hlalosa ho kenya ka boeona; ho na le libuka le livideo tse ngata ka eona. Ha ke se ke kentse mysql mochine oa Windows, ke ile ka etsa qeto ea ho boloka litafole ho tloha ho laptop ea ka ho ea mosebetsing oa ka.

E entsoe ka tsela ena (boemong ba ka):

mysqldump -uroot -p your_base > dump_file.sql

Ka mor'a moo, re theha database sebakeng se secha sa polokelo mme re tsosolosa "backup" mochine "o mocha".

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Faele ea "backup" e tlameha ho beoa mochining o mocha mme, mohlomong, haeba e se bukeng e nang le ts'ebeliso, joale tsela e felletseng ea ho ea ho eona. (Ke sa tsoa kenya bekapo ho GitHub ebe ke e kopanya mochining o mocha). Ke ne ke tla eketsa kamoo litafole ka botsona li bōpiloeng kateng, empa ha kea boloka li-screenshots, 'me ke nahana hore ha ho thata esita le ho seithuti sa lilemo tse 2-3.

Ha litafole tsohle li se li tsosolositsoe, ke nako ea ho etsa hore sebaka sa marang-rang se fumanehe ho database. Ka kakaretso, litaelo tse joalo ha lia ka tsa lebisa katlehong (e fane feela ka tumello ea ho bala ho khetha)

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

Hantle-ntle, ke ne ke khona ho hokahanya le database feela ka taelo,

mysql -h localhost -u client -pclient

empa ena ha a ka a hlola a e etsa

mysql -h 192.168.0.3 -u client -pclient

Sena ha sea ka sa sebetsa ho 'na' me ha ke khone ho hokahanya ka aterese ena e le motso.

Lenaneo la mysql workbench le thusitse; litlhophisong, fetola localhost ho % mme e ea sebetsa, leha moreki a sa ka a thusa. Hona joale o ka hokela ho database ho tsoa ho console kapa ho tsoa ho khoutu ho tsoa atereseng efe kapa efe.

Ho etsa hore database e fumanehe bakeng sa khokahano e hole

U boetse u hloka ho etsa marang-rang a lehae kapa khoebo le ho tima Windows firewall, ho seng joalo u ke ke ua khona ho penya mochini ona (ho sa bue letho ka ho hokela database).

Halofo ea mosebetsi e phethiloe, joale ke hloka ho khona ho hokela database ho tloha hae.

Joalokaha u ka bona ho tloha setšoantšong sa marang-rang, ho fihla Inthaneteng u hloka ho tloha 192.168.0.3 ho 192.168.1.1 (router), a re ee ka lehlakoreng le leng. Ha re lokise tsela ho tloha 192.168.1.1 ho ea 192.168.1.2 ka tsela ena:

Ho etsa hore database e fumanehe bakeng sa khokahano e hole

Ka kakaretso, setšoantšo ha se bontše, kahoo ke tla se ngola ka letsoho:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Sena se ka etsoa feela ka subnet e le 'ngoe, ke hore, u ke ke ua fetisetsa hang-hang atereseng 192.168.0.2 kapa 192.168.0.3

Sena sea hlokahala e le hore router e tsebe moo subnet 192.168.0.0/24 e leng teng (ho ithuta lintho tsa motheo tsa marang-rang ho molemo).

Hona joale re eketsa ho fetisa koung 3306 (sebaka sa kamehla sa mysql (haeba u sa ka ua se fetola nakong ea ho kenya)) atereseng ea 192.168.1.2

Ho etsa hore database e fumanehe bakeng sa khokahano e hole

Ntho e thata ka ho fetisisa e setseng ho e etsa ke ho etsa ho fetisa mochine oa Linux (o na le likarete tse peli tsa marang-rang 192.168.1.2 (enp3s1 interface) le 192.168.0.2 (enp3s0 interface) e le hore likarete tsa marang-rang li tsebe hore na li ka li fetisetsa ho 192.168.1.2 ho 192.168.0.2, 'me joale ho mochine oa rona oa Windows o nang 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

Tseo. Mohala oa 1 o bolela hore re amohela khokahanyo ea pele, 2nd le 3rd hore re ka romela lipakete ka mahlakoreng ka bobeli, 4th le 5th e bolela ho fetola sebaka le liaterese tsa mohloli. Mme voila, o ka hokela ho tloha hae ka mysql. Qetellong, khoutu ea ka ea C ++ e etsang sena:

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

Hona joale o ka romela lenaneo lena ka mokhoa o sireletsehileng ho mang kapa mang, 'me ha ho hlokahale hore u le ngole hape ho etsa hore le sebetse sebakeng sa heno.

Source: www.habr.com

Eketsa ka tlhaloso