Facere database available pro remotis iunctio

Incipiamus ab eo quod casus sunt cum opus est applicationi ad datorum connexionem facere. Hoc fit, ne nimis in progressionem in tergum inducatur et in frontem intendat propter defectum manuum et artes. Non possum dicere solutionem meam salvam fore, sed facit.

Quia non placet reddere hospitii, retis ad opus meum usus sum, ibi IP alba est. Hic est eius structura;

Facere database available pro remotis iunctio

Accessus ad plures computatores, pressius 192.168.1.2 (alias 192.168.0.2) cum Linux ibi constitutus et 192.168.0.3 cum Fenestra. In universum elegi mysql ad applicationem meum et vidi quid in Linux praesto esset. Ibi iam inauguratus erat, sed tesseram nemo novit, et qui obliti sciebant (qui ante me laboraverunt). Cognito neminem egere, delevi et iterum instituere conatus sum. Memoria satis non erat, et cum ad hunc errorem figendum monitorem et claviaturam cum mure coniungere vellem, hac de re tradere decrevi. Apparatus autem cum Fenestra multo potentior et plus, in meo laptop domi habeo. In principio, institutionem ipsam non describemus, multa sunt de eo manualia et videos. Cum mysql in machina Fenestra constituto, tabulas a laptop meo ad officinam revocare decrevi.

Hoc factum est (in meo casu);

mysqldump -uroot -p your_base > dump_file.sql

Deinde, database in novis datorum creamus et tergum in machinam "novam" restituimus.

mysql -h localhost -u root -p

create database your_base;
use your_base;

mysql -uroot -p your_base < dump_file.sql

show tables;


Tergum fasciculus in nova machina collocari debet et fortasse, nisi in indicem cum utilitate, plenam viam ad eam. (Modo tergum GitHub imposuisti et in novam machinam ligavi). Adderem quomodo tabulae ipsae creentur, sed screenshots non servavi, nec difficile puto etiam per 2-3 annum studentem esse.

Cum omnes tabulae restitutae sunt, tempus est remotum aditum ad datorum copiam facere. In genere, talia mandata ad effectum deduci non (solum legere licentiam eligendi dedit)

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

Accuratius coniungi potui cum imperio datorum;

mysql -h localhost -u client -pclient

sed hoc amplius facere non potuit

mysql -h 192.168.0.3 -u client -pclient

Hoc mihi non laboravit et per hanc inscriptionem ut radicem coniungere non potui.

Programma opificinae mysql adiuvit, in uncinis, localem exercitum ad % mutat et operatur, quamvis client non adiuvat. Nunc ad database e console vel ex codice e quacumque inscriptione coniungere potes.

Facere database available pro remotis iunctio

Etiam opus est ut domum vel rem retis facere et in Fenestra firewall averte, aliter etiam hanc machinam pingere non poteris (neque tantum cum database coniungere).

Dimidium facti officium est, nunc opus est ut cum domo datorum coniungere possim.

Ut videre potes ex icone retis, ut ad Interreti ire debes ab 192.168.0.3 ad 192.168.1.1 (iter), eamus in contrariam partem. Iter configuremus ab 192.168.1.1 ad 192.168.1.2 sic:

Facere database available pro remotis iunctio

In universum pictura non ostendit, manu igitur eam scribam:

route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2

Hoc solum in uno subnet fieri potest, id est, statim in inscriptione non potes 192.168.0.2 vel 192.168.0.3

Hoc necessarium est ut iter sciat ubi subnet 192.168.0.0/24 sita est (retis utilis est cognita).

Nunc portum promovendo 3306 addimus (defaltam mysql porte (si per institutionem non mutasti)) inscriptioni 192.168.1.2

Facere database available pro remotis iunctio

Difficillimum restat facere in machina Linux procuret (habet duas chartas retis 192.168.1.2 (enp3s1 interface) et 192.168.0.2 (enp3s0 interface) ut schedae retis sciant quid eas ab 192.168.1.2 transferat. ad 192.168.0.2, et deinde ad machinam Fenestram nostram cum 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

Illae. Linea 1 significat nos accipimus primam connexionem, 2 et 3 quod in utraque parte fasciculos mittere possumus, 4 et 5th significat mutationem destinationis et fons inscriptionum. Et voila, potes a domo per mysql coniungere. Postremo, C++ meus, qui hoc facit;

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

Nunc hoc propositum alicui mittere tuto potes, et illud rescribere non debes ut localiter laboret.

Source: www.habr.com

Add a comment