เชฐเซ€เชฎเซ‹เชŸ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเชตเซเช‚

เชšเชพเชฒเซ‹ เช เชนเช•เซ€เช•เชคเชฅเซ€ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เช เช•เซ‡ เชเชตเชพ เช•เชฟเชธเซเชธเชพเช“ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ. เชนเชพเชฅ เช…เชจเซ‡ เช•เซŒเชถเชฒเซเชฏเชจเชพ เช…เชญเชพเชตเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฌเซ‡เช•เชเชจเซเชก เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชตเชงเซ เชชเชกเชคเซเช‚ เชงเซเชฏเชพเชจ เชจ เช†เชชเชตเชพ เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชญเชพเช—เชฎเชพเช‚ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชนเซเช‚ เช•เชนเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เช•เซ‡ เชฎเชพเชฐเซ‹ เช‰เช•เซ‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเชนเซ‡เชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชฎเชจเซ‡ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เชจ เชนเซ‹เชตเชพเชฅเซ€, เชฎเซ‡เช‚ เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏ เชชเชฐ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹, เชคเซเชฏเชพเช‚ เชเช• เชธเชซเซ‡เชฆ IP เช›เซ‡. เช…เชนเซ€เช‚ เชคเซ‡เชจเซ€ เชฐเชšเชจเชพ เช›เซ‡:

เชฐเซ€เชฎเซ‹เชŸ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเชตเซเช‚

เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช˜เชฃเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเซเชธเชจเซ€ เชเช•เซเชธเซ‡เชธ เช›เซ‡, เชตเชงเซ เชšเซ‹เช•เซเช•เชธ เชฐเซ€เชคเซ‡ 192.168.1.2 (เช‰เชฐเซเชซเซ‡ 192.168.0.2) เชœเซ‡เชฎเชพเช‚ Linux เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡ เช…เชจเซ‡ Windows เชธเชพเชฅเซ‡ 192.168.0.3. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ mysql เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ Linux เชชเชฐ เชถเซเช‚ เช‰เชชเชฒเชฌเซเชง เชนเชคเซเช‚ เชคเซ‡ เชœเซ‹เชฏเซเช‚. เชคเซ‡ เชคเซเชฏเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆเชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เช–เชฌเชฐ เชจเชฅเซ€, เช…เชจเซ‡ เชœเซ‡เช“ เชœเชพเชฃเชคเชพ เชนเชคเชพ เชคเซ‡เช“ เชญเซ‚เชฒเซ€ เช—เชฏเชพ (เชœเซ‡เช“ เชฎเชพเชฐเซ€ เชชเชนเซ‡เชฒเชพเช‚ เช•เชพเชฎ เช•เชฐเชคเชพ เชนเชคเชพ). เช•เซ‹เชˆเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เชคเซ‡ เชœเชพเชฃเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹. เชคเซเชฏเชพเช‚ เชชเซ‚เชฐเชคเซ€ เชฎเซ‡เชฎเชฐเซ€ เชจเชนเซ‹เชคเซ€, เช…เชจเซ‡ เช† เชญเซ‚เชฒเชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช…เชจเซ‡ เช•เซ€เชฌเซ‹เชฐเซเชกเชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฎเชพเช‰เชธ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เช† เชฌเชพเชฌเชคเชจเซ‡ เช›เซ‹เชกเซ€ เชฆเซ‡เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชตเชฟเชจเซเชกเซ‹เช เชธเชพเชฅเซ‡เชจเซเช‚ เชฎเชถเซ€เชจ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เช…เชจเซ‡ เชตเชคเซเชคเชพ เช›เซ‡, เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเซ‡ เช˜เชฐเซ‡ เชฎเชพเชฐเชพ เชฒเซ‡เชชเชŸเซ‹เชช เชชเชฐ เช›เซ‡. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชนเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซเช‚ เชœ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ เชจเชนเซ€เช‚; เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เช…เชจเซ‡ เชตเชฟเชกเชฟเช“เช เช›เซ‡. เชตเชฟเชจเซเชกเซ‹เช เชฎเชถเซ€เชจ เชชเชฐ 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

เช† เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เชนเซเช‚ เช† เชธเชฐเชจเชพเชฎเชพเช‚ เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชŸ เชคเชฐเซ€เช•เซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซเชฏเซ‹ เชจเชฅเซ€.

mysql เชตเชฐเซเช•เชฌเซ‡เช‚เชš เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซ‡ เชฎเชฆเชฆ เช•เชฐเซ€; เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚, เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸเชจเซ‡ % เชฎเชพเช‚ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‹ เช•เซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเซ‡ เชฎเชฆเชฆ เช•เชฐเซ€ เชจเชฅเซ€. เชนเชตเซ‡ เชคเชฎเซ‡ เช•เชจเซเชธเซ‹เชฒ เช…เชฅเชตเชพ เช•เซ‹เชˆเชชเชฃ เชธเชฐเชจเชพเชฎเชพเช‚เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเชฅเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชฐเซ€เชฎเซ‹เชŸ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเชตเซเช‚

เชคเชฎเชพเชฐเซ‡ เชนเซ‹เชฎ เช…เชฅเชตเชพ เชฌเชฟเชเชจเซ‡เชธ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเชจเชพเชตเชตเชพเชจเซ€ เช…เชจเซ‡ Windows เชซเชพเชฏเชฐเชตเซ‹เชฒเชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซเชฏเชฅเชพ เชคเชฎเซ‡ เช† เชฎเชถเซ€เชจเชจเซ‡ เชชเชฟเช‚เช— เชชเชฃ เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚ (เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เชฆเซ‹).

เช…เชกเชงเซเช‚ เช•เชพเชฎ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชนเชตเซ‡ เชฎเชพเชฐเซ‡ เช˜เชฐเซ‡เชฅเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชœเซ‡เชฎ เชคเชฎเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เชชเชฐเชฅเซ€ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชœเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ 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 เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เชชเซ‹เชฐเซเชŸ เชซเซ‹เชฐเชตเชฐเซเชกเชฟเช‚เช— 192.168.1.2 (เชกเชฟเชซเซ‹เชฒเซเชŸ mysql เชชเซ‹เชฐเซเชŸ (เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฌเชฆเชฒเซเชฏเซเช‚ เชจ เชนเซ‹เชฏ เชคเซ‹)) เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช.

เชฐเซ€เชฎเซ‹เชŸ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเชตเซเช‚

Linux เชฎเชถเซ€เชจ เชชเชฐ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเชพเชจเซเช‚ เชฌเชพเช•เซ€ เชฐเชนเซ‡เชฒเซเช‚ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เช•เชพเชฎ เช›เซ‡ (เชคเซ‡เชฎเชพเช‚ เชฌเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชพเชฐเซเชกเซเชธ 192.168.1.2 (enp3s1 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ) เช…เชจเซ‡ 192.168.0.2 (enp3s0 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ) เช›เซ‡ เชœเซ‡เชฅเซ€ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชพเชฐเซเชกเซเชธ เชœเชพเชฃเซ€ เชถเช•เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ‡ 192.168.1.2 เชฎเชพเช‚เชฅเซ€ เชถเซเช‚ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเซเช‚. 192.168.0.2 เชธเซเชงเซ€, เช…เชจเซ‡ เชชเช›เซ€ 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เชฎเซ€เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เช—เช‚เชคเชตเซเชฏ เช…เชจเซ‡ เชธเซเชคเซเชฐเซ‹เชค เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‡ เชฌเชฆเชฒเชตเซเช‚. เช…เชจเซ‡ เชตเซ‹เช‡เชฒเชพ, เชคเชฎเซ‡ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹