แแแแแฌแงแแ แแแแ, แ แแ แแ แแก แจแแแแฎแแแแแแ, แ แแแแกแแช แแญแแ แแแแแ แแแแแแแชแแแก แแแแแแแแ แแแแแชแแแแ แแแแแกแแแ แแแแจแแ แแ. แแก แแแแแแแ แแแแกแแแแก, แ แแ แแ แฉแแแฃแฆแ แแแแแแ แแแแแแขแแ แแแฅแแแแแก แแแแแแแแ แแแแก แแ แแแแชแแแขแ แแ แแแ แคแ แแแขแแ แฎแแแแแแก แแ แฃแแแ แแแแก แแแแแแแแแแก แแแแ. แแแ แแแขแงแแ, แ แแ แฉแแแ แแแแแกแแแแแ แฃแกแแคแ แแฎแ แแฅแแแแ, แแแแ แแ แแฃแจแแแแก.
แ แแแแแ แแ แแแงแแแ แก แฐแแกแขแแแแแก แแแแแฎแแ, แกแแแกแแฎแฃแ แจแ แแแแแแแงแแแ แฅแกแแแ, แแฅ แแ แแก แแแแ แ IP. แแฅ แแ แแก แแแกแ แกแขแ แฃแฅแขแฃแ แ:
แ แแแแแแแแ แแแแแแฃแขแแ แแ แแแฅแแก แฌแแแแแ, แฃแคแ แ แแฃแกแขแแ 192.168.1.2 (aka 192.168.0.2) แแแแฃแฅแกแแ แแแงแแแแแฃแแ แแ 192.168.0.3 แแแแแแฃแกแแ. แแแแแแแ, แแ แแแแ แฉแแ mysql แฉแแแ แแแแแแแชแแแกแแแแก แแ แแแแแแฎแแแ แ แ แแงแ แฎแแแแแกแแฌแแแแแ Linux-แแ. แแฅ แฃแแแ แแแแแกแขแแแแ แแแฃแแ แแงแ, แแแแ แแ แแแ แแแ แแ แแแแ แแชแแก แแ แแแแช แแชแแแ แแแแแแฌแงแแ (แแแ แแแแช แฉแแแแแแ แแฃแจแแแแแ). แ แแชแ แแแแแแ, แ แแ แแ แแแแก แกแญแแ แแแแแแ, แฌแแแจแแแ แแ แแกแแ แแชแแแ แแแงแแแแแ. แแ แแงแ แกแแแแแ แแกแ แแแฎแกแแแ แแแ แแ แ แแแแแ แแ แจแแชแแแแแก แแแแแกแแกแฌแแ แแแแแ แแแแแฌแแแแ แแแแแขแแ แแก แแ แแแแแแแขแฃแ แแก แแแแแแจแแ แแแ แแแกแแ แแแฃแกแแ, แแแแแแฌแงแแแขแ แฃแแ แ แแแแฅแแ แแ แกแแแแแฎแแ. แฃแคแ แ แแแขแแช, แแแแแแฃแกแแก แแแแ แแขแ แแแชแแแแแแ แแซแแแแ แแ แแ แแแฃแก, แแแแขแแแแ แแแฅแแก แกแแฎแแจแ. แแ แแแชแแแจแ, แแ แแ แแฆแแฌแแ แแแแแ แแแกแขแแแแชแแแก, แแแแก แจแแกแแฎแแ แฃแแแ แแแ แกแแฎแแแแซแฆแแแแแแ แแ แแแแแแ. Windows-แแก แแแแ แแขแแ mysql-แแก แแแแแกแขแแแแ แแแแก แจแแแแแ, แแแแแแฌแงแแแขแ แแแแแแแแแก แกแแ แแแแ แแ แแกแแ แฉแแแ แแแแขแแแแแแ แฉแแแก แกแแแฃแจแแ แกแแแแฃแ แแแแ.
แแก แแแแแแแ แแกแ (แฉแแแก แจแแแแฎแแแแแจแ):
mysqldump -uroot -p your_base > dump_file.sql
แจแแแแแแ, แฉแแแ แแฅแแแแ แแแแแชแแแแ แแแแแก แแฎแแ แแแแแชแแแแ แแแแแจแ แแ แแฆแแแแแแก แกแแ แแแแ แแ แแกแแก "แแฎแแ" แแแแฅแแแแแ.
mysql -h localhost -u root -p
create database your_base;
use your_base;
mysql -uroot -p your_base < dump_file.sql
show tables;
แกแแ แแแแ แแ แคแแแแ แฃแแแ แแแแแแแกแแแก แแฎแแ แแแแฅแแแแแ แแ, แจแแกแแซแแแ, แแฃ แแ แ แแ แแแ แแแแก แแแ แแฅแขแแ แแแจแ, แแแจแแ แแแกแแแ แแแแแแแแ แกแ แฃแแ แแแ. (แแ แแฎแแแฎแแ แแแขแแแ แแ แกแแ แแแแ แแ แแกแแ GitHub-แจแ แแ แแแแแฎแแแแ แแแกแ แแแแแแ แแแ แแฎแแ แแแฌแงแแแแแแแแแ). แแแแแแแขแแแแ แ แแแแ แแฅแแแแแ แแแแแ แชแฎแ แแแแแ, แแแแ แแ แกแแ แแแจแแขแแแ แแ แจแแแแแแฎแแแก แแ แแคแแฅแ แแ, 2-3 แฌแแแก แกแขแฃแแแแขแแกแแแแกแแช แแ แแ แแก แ แแฃแแ.
แ แแแแกแแช แงแแแแ แชแฎแ แแแ แแฆแแแแแ, แแ แแ แฎแแแแแกแแฌแแแแแ แแแฎแแแก แแแแแชแแแแ แแแแแแ แแแกแขแแแชแแฃแ แ แฌแแแแแ. แแแแแแแ, แแกแแแแ แแ แซแแแแแแแแ แฌแแ แแแขแแแแก แแแ แแแแฆแฌแแ (แแก แแ แฉแแแแก แแฎแแแแ แฌแแแแแฎแแแก แแแแแ แแแแก แแซแแแแแ)
create user 'client'@'%' IDENTIFIED by 'client';
grant select on your_base . * to 'client'@'%';
flush privileges;
แฃแคแ แ แแฃแกแขแแ, แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแ แจแแแแซแแ แแฎแแแแ แแ แซแแแแแแ,
mysql -h localhost -u client -pclient
แแแแ แแ แแแแก แฃแแแ แแฆแแ แจแแแซแแ
mysql -h 192.168.0.3 -u client -pclient
แแก แแ แแแแแแแแแแ แแ แแแ แแแแแแแแจแแ แ แแ แแแกแแแแ แแแ, แ แแแแ แช root.
แแแแแฎแแแ แ mysql workbench แแ แแแ แแแแ; แแแ แแแแขแ แแแจแ แจแแชแแแแแ localhost %-แแ แแ แแฃแจแแแแก, แแฃแแชแ แแแแแแขแ แแ แแแแฎแแแ แ. แแฎแแ แแฅแแแ แจแแแแซแแแแ แแแฃแแแแจแแ แแแ แแแแแชแแแแ แแแแแก แแแแกแแแแแแ แแ แแแแแแแ แแแแแกแแแแ แ แแแกแแแแ แแแแแ.
แแฅแแแ แแกแแแ แฃแแแ แแแแแแแแ แกแแฎแแแก แแ แแแแแแก แฅแกแแแ แแ แแแแแ แแแ Windows Firewall, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแฅแแแ แแแ แช แแ แจแแซแแแแ แแ แแแแ แแขแแก แแแแแก (แ แแ แแฆแแ แแคแแ แ แแแฅแแแ แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแ).
แกแแแฃแจแแแก แแแฎแแแแ แ แจแแกแ แฃแแแแฃแแแ, แแฎแแ แฃแแแ แจแแแซแแ แกแแฎแแแแแ แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแ.
แ แแแแ แช แฅแกแแแแก แกแฅแแแแแแ แฎแแแแแ, แแแขแแ แแแขแจแ แแแกแแฎแแแแ แแ แกแแญแแ แแ 192.168.0.3-แแแ 192.168.1.1-แแแ (แ แแฃแขแแ แ) แแแแแกแแแ, แแแแแ แฌแแแแแแ แกแแแแ แแกแแแ แ แแแแแ แแฃแแแแแ. แแแแแ แแแแแแแแคแแแฃแ แแ แแ แแแ แจแ แฃแขแ 192.168.1.1-แแแ 192.168.1.2-แแแ แแกแ:
แแแแแแแ, แกแฃแ แแแ แแ แฉแแแก, แแแแขแแ แฎแแแแ แแแแฌแแ :
route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2
แแก แจแแแซแแแแ แแแแแแแแก แแฎแแแแ แแ แ แฅแแแฅแกแแแจแ, แแแฃ แแฅแแแ แแ แจแแแแซแแแแ แแแฃแงแแแแแแแแ แแแแแแแแแแแแ แแแกแแแแ แแแ 192.168.0.2 แแ 192.168.0.3.
แแก แแฃแชแแแแแแแแ แแแแกแแแแแก, แ แแ แ แแฃแขแแ แแ แแชแแแแก แกแแ แแแแแแ แแแแก แฅแแแฅแกแแแ 192.168.0.0/24 (แฅแกแแแแแแก แกแแคแฃแซแแแแแแก แกแฌแแแแ แกแแกแแ แแแแแแ).
แแฎแแ แฉแแแ แแแแแขแแแ แแแ แขแแก แแแแแแแกแแแแ แแแแแก 3306 (แแแแฃแแแกแฎแแแแ mysql แแแ แขแ (แแฃ แแ แจแแแแชแแแแแ แแแกแขแแแแชแแแก แแ แแก)) แแแกแแแแ แแแ 192.168.1.2
แงแแแแแแ แ แแฃแแ แแแกแแแแแแแแแแ แแแแฃแฅแกแแก แแแแ แแขแแ แแแแแแแกแแแแ แแแแแก แแแแแแแแ (แแแก แแฅแแก แแ แ แฅแกแแแแก แแแ แแแ 192.168.1.2 (enp3s1 แแแขแแ แคแแแกแ) แแ 192.168.0.2 (enp3s0 แแแขแแ แคแแแกแ), แ แแแ แฅแกแแแแก แแแ แแแแแแ แแชแแแแแ, แ แ แแแแแแขแแแแ 192.168.1.2-แแแ. 192.168.0.2-แแ, แจแแแแแ แแ แฉแแแแก Windows แแแแแแฃแขแแ แแ 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
แแแแ. 1 แฎแแแ แแแจแแแแก, แ แแ แฉแแแ แแแฆแแแ แแแ แแแ แแแแจแแ แก, แแ-2 แแ แแ-3 แ แแ แจแแแแแซแแแ แแแแแแแแแแแ แแแแแขแแแ แแ แแแ แแแแแ แแฃแแแแแ, แแ-4 แแ แแ-5 แแแจแแแแก แแแแแจแแฃแแแแแก แแ แฌแงแแ แแก แแแกแแแแ แแแแแก แจแแชแแแแก. แแ voila, แจแแแแซแแแแ แกแแฎแแแแแ แแแแแแจแแ แแแ mysql-แแก แกแแจแฃแแแแแแ. แแ แแแแแก, แฉแแแ C++ แแแแ, แ แแแแแแช แแแแแแแก แแแแก:
//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;
};
แแฎแแ แแฅแแแ แจแแแแซแแแแ แฃแกแแคแ แแฎแแ แแแฃแแแแแแแ แแก แแ แแแ แแแ แแแแแกแแแแ แก แแ แแ แแญแแ แแแแแ แแแกแ แแแแแฌแแ แ, แ แแแ แแก แแแแแแแแ แแแแ แแแฃแจแแแก.
แฌแงแแ แ: www.habr.com