কিভাবে স্থানীয় মেশিন থেকে রিমোট ডিবি mysqldump


177

আমার একটি রিমোট সার্ভারে একটি ডাটাবেসের মাইএসকিএলডাম্প করা দরকার, তবে সার্ভারটিতে মাইএসকিএলডাম ইনস্টল নেই। আমি দূরবর্তী ডাটাবেসের সাথে সংযোগ স্থাপন করতে এবং আমার মেশিনে ডাম্প করতে আমার মেশিনে মাইএসকিএলডাম্পটি ব্যবহার করতে চাই।

আমি একটি এসএসএস টানেল তৈরি করার চেষ্টা করেছি এবং তারপরে ডাম্পগুলি করলাম, তবে এটি কার্যকর হবে বলে মনে হচ্ছে না। আমি চেষ্টা করেছিলাম:

ssh -f -L3310:remote.server:3306 user@remote.server -N

টানেলটি সাফল্যের সাথে তৈরি করা হয়েছে। যদি আমি করি

telnet localhost 3310

আমি কিছু ব্লার্ব পেয়েছি যা সঠিক সার্ভার মাইএসকিএল সংস্করণ দেখায়। তবে নিম্নলিখিতটি করা স্থানীয়ভাবে সংযোগ দেওয়ার চেষ্টা করেছে বলে মনে হচ্ছে

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name

9
যেহেতু এই প্রশ্নটি প্রোগ্রামিংয়ের চেয়ে প্রশাসনের সাথে সম্পর্কিত, তাই আমি বলব যে সার্ভারফল্ট ডটকমের দয়ালু লোকেরা আপনাকে আরও ভালভাবে সহায়তা করতে পারে।
পিসকভোর

কটাক্ষপাত MSQL Workbench 5.2.22। এটি আপনাকে সহজেই এটি করার অনুমতি দেবে।
গ্যারি

1
দ্রষ্টব্য: রিমোট মাইএসকিএল সার্ভারটি ডাম্প করার জন্য, দয়া করে --host = sqlserver.host.name --port = 3306
ro0ter

আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করার পক্ষে ভোট দিচ্ছি কারণ এটি ডিবিএ-র সাথে সম্পর্কিত
লার্নের মার্কুইস

উত্তর:


244

যেমনটি আমি এখনও সার্ভারফল্টে দেখিনি, এবং উত্তরটি বেশ সহজ:

পরিবর্তন:

ssh -f -L3310:remote.server:3306 user@remote.server -N

প্রতি:

ssh -f -L3310:localhost:3306 user@remote.server -N

এবং পরিবর্তন:

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name

প্রতি:

mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name

(লোকালহোস্ট ব্যবহার করবেন না, এটি অন্যতম এই 'বিশেষ অর্থ' বাজে কথা যা সম্ভবত সকেটের পরিবর্তে বন্দর দিয়ে সংযোগ করে)

সম্পাদনা : ভাল, বিস্তারিতভাবে: হোস্টটি সেট করা থাকলে localhostএকটি কনফিগার করা (বা ডিফল্ট) --socketবিকল্পটি ধরে নেওয়া হয়। ম্যানুয়ালটি দেখুন যে বিকল্পগুলির জন্য ফাইলগুলি চাওয়া / ব্যবহৃত হয়। উইন্ডোজ অধীনে, এটি একটি নামক পাইপ হতে পারে।


3
সাবধানতা: localhostপ্রায়শই ::1আইপিভি 6 এ ডিফল্ট থাকে , হয় না 127.0.0.1
polkovnikov.ph

112

রিমোট সার্ভারের বিরুদ্ধে স্থানীয়ভাবে কেউ মাইএসকিএলডাম্প করতে পারেন।

উদাহরণটি যা আমার পক্ষে কাজ করেছে:

mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql

আমি সংযোগ বিকল্পগুলিতে mysqldump ডকুমেন্টেশন অনুসরণ করেছি ।


9
এর আগে আর এসএস টানেল খোলার দরকার নেই। +1
শিক্ষার্থী

1
সবচেয়ে সহজ এপ্রোচ, এসএসএসের মাধ্যমে সংযোগ স্থাপন এবং ফাইলটি আপনার স্থানীয় মেশিনে ফিরিয়ে আনার দরকার নেই! সরাসরি ডাম্প এনে দিন!
TheGabyRod

3
এটি বিপজ্জনক, খুব বিপজ্জনক। এটির প্রয়োজন যে মাইএসকিএল বন্দরটি সর্বসাধারণের জন্য উন্মুক্ত। যা সহজেই বট দ্বারা জোর করে নিষ্ঠুর হতে পারে।
ভলকোম্যাক্সএক্স

5
ভিপিএন-এ থাকার বিষয়ে কীভাবে? অথবা আপনি যে কোনও মেশিন থেকে এসএসএইচ করেছেন তার থেকে কোনও ডাম্প করছেন যা ডাটাবেস মেশিনটিতে অ্যাক্সেস পেয়েছে? বন্দরের পাবলিক হওয়ার দরকার নেই।
ওন্দ্রেজ বার্কার্ট

3
এটি এখানে -pপাসওয়ার্ড আর্গুমেন্টের জন্য মনে রাখা গুরুত্বপূর্ণ - ডাটাবেসের নাম নয়। তবে এটি সরল পাঠ্যে সংরক্ষণ করা নিরাপদ তাই যুক্ত করার -pঅর্থ আপনাকে লগইনে পাসওয়ার্ডের জন্য অনুরোধ করা হবে। সম্ভবত এটি কেবল আমি কিন্তু mysqlএবং এইভাবে mysqlডাম্প সিনট্যাক্স কখনও কমান্ড লাইন আর্গুমেন্ট হিসাবে সোজা এগিয়ে ছিল না।
anon58192932

0

এখানে এই পৃষ্ঠায় ভিত্তিক:

দুটি মাইএসকিউএল ডাটাবেস তুলনা করুন

আমি এটিকে সংশোধন করেছি যাতে আপনি ডিফেরেন্ট হোস্টগুলিতে ডিডিবিবি ব্যবহার করতে পারেন।

#! / বিন / SH

প্রতিধ্বনি "ব্যবহার: ডিবিডিফ [ব্যবহারকারী 1: পাস 1 @ ডিবি নাম 1: হোস্ট] [ব্যবহারকারী 2: পাস 2 @ ডিবি নাম 2: হোস্ট] [উপেক্ষা_ টেবিল 1: উপেক্ষা_ টেবিল 2 ...]"

ফেলা () {
  আপ = $ {1 %% @ *}; নিচে = $ {1 ## * @}; ব্যবহারকারী = $ {আপ %%: *}; পাস = $ {আপ ## *:}; dbname = $ {নিচে %%: *}; হোস্ট = $ {নিচে ## *:};
  mysqldump --opt - কম্পিউটার
}

rm -f /tmp/db.diff

# তুলনা করা
আপ = $ {1 %% @ *}; নিচে = $ {1 ## * @}; ব্যবহারকারী = $ {আপ %%: *}; পাস = $ {আপ ## *:}; dbname = $ {নিচে %%: *}; হোস্ট = $ {নিচে ## *:};
`mysql -u $ ব্যবহারকারী -p $ পাস $ dbname -h $ হোস্ট -N-e" শো টেবিল "--batch` এ টেবিলের জন্য; করা
  যদি ["` প্রতিধ্বনি $ 3 | গ্রেপ $ টেবিল "=" "]; তারপর
    প্রতিধ্বনি "তুলনা '$ টেবিল' ..."
    ডাম্প $ 1 /tmp/file1.sql
    ডাম্প $ 2 /tmp/file2.sql
    diff-up /tmp/file1.sql /tmp/file2.sql >> /tmp/db.diff
  আর
    প্রতিবেদন "উপেক্ষা করা '$ টেবিল' ..."
  ফাই
সম্পন্ন
কম /tmp/db.diff
rm -f /tmp/file1.sql /tmp/file2.sql

0

রিমোট সার্ভার থেকে mysqldump SSL ব্যবহার করে

1- এসএসএল সহ সুরক্ষা

192.168.0.101 - রিমোট সার্ভার

192.168.0.102 - স্থানীয় সার্ভার

রিমোর সার্ভার

CREATE USER 'backup_remote_2'@'192.168.0.102' IDENTIFIED WITH caching_sha2_password BY '3333333' REQUIRE SSL;

GRANT ALL PRIVILEGES ON *.* TO 'backup_remote_2'@'192.168.0.102';

FLUSH PRIVILEGES;

-

স্থানীয় সার্ভার

sudo /usr/local/mysql/bin/mysqldump \
 --databases test_1 \
 --host=192.168.0.101 \
 --user=backup_remote_2 \
 --password=3333333 \
 --master-data \
 --set-gtid-purged \
 --events \
 --triggers \
 --routines \
 --verbose \
 --ssl-mode=REQUIRED \
 --result-file=/home/db_1.sql

====================================

2 - এসএসএলের সাথে সুরক্ষা (প্রয়োজনীয় এক্স 509)

192.168.0.101 - রিমোট সার্ভার

192.168.0.102 - স্থানীয় সার্ভার

রিমোর সার্ভার

CREATE USER 'backup_remote'@'192.168.0.102' IDENTIFIED WITH caching_sha2_password BY '1111111' REQUIRE X509;

GRANT ALL PRIVILEGES ON *.* TO 'backup_remote'@'192.168.0.102';

FLUSH PRIVILEGES;

-

স্থানীয় সার্ভার

sudo /usr/local/mysql/bin/mysqldump \
 --databases test_1 \
 --host=192.168.0.101 \
 --user=backup_remote \
 --password=1111111 \
 --events \
 --triggers \
 --routines \
 --verbose \
 --ssl-mode=VERIFY_CA \
 --ssl-ca=/usr/local/mysql/data/ssl/ca.pem \
 --ssl-cert=/usr/local/mysql/data/ssl/client-cert.pem \
 --ssl-key=/usr/local/mysql/data/ssl/client-key.pem \
 --result-file=/home/db_name.sql

[বিঃদ্রঃ]

স্থানীয় সার্ভারে

, / Usr / স্থানীয় / MySQL / ডেটা / SSL /

-rw------- 1 mysql mysql 1.7K Apr 16 22:28 ca-key.pem
-rw-r--r-- 1 mysql mysql 1.1K Apr 16 22:28 ca.pem
-rw-r--r-- 1 mysql mysql 1.1K Apr 16 22:28 client-cert.pem
-rw------- 1 mysql mysql 1.7K Apr 16 22:28 client-key.pem

দূরবর্তী সার্ভার থেকে এই ফাইলগুলি অনুলিপি করুন (প্রয়োজন X509) অথবা যদি এসএসএল (প্রয়োজনীয় X509) অনুলিপি না করে


রিমোট সার্ভারে

, / Usr / স্থানীয় / MySQL / ডেটা /

-rw------- 1 mysql mysql 1.7K Apr 16 22:28  ca-key.pem
-rw-r--r-- 1 mysql mysql 1.1K Apr 16 22:28  ca.pem
-rw-r--r-- 1 mysql mysql 1.1K Apr 16 22:28  client-cert.pem
-rw------- 1 mysql mysql 1.7K Apr 16 22:28  client-key.pem
-rw------- 1 mysql mysql 1.7K Apr 16 22:28  private_key.pem
-rw-r--r-- 1 mysql mysql  451 Apr 16 22:28  public_key.pem
-rw-r--r-- 1 mysql mysql 1.1K Apr 16 22:28  server-cert.pem
-rw------- 1 mysql mysql 1.7K Apr 16 22:28  server-key.pem

my.cnf

[mysqld]
# SSL
ssl_ca=/usr/local/mysql/data/ca.pem
ssl_cert=/usr/local/mysql/data/server-cert.pem
ssl_key=/usr/local/mysql/data/server-key.pem

পাসওয়ার্ড সুরক্ষা বৃদ্ধি করুন

https://dev.mysql.com/doc/refman/8.0/en/password-security-user.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.