Saya ingin membuang database di situs saya yang di-host secara berkala menggunakan skrip shell. Sayangnya server terkunci cukup ketat, tidak mysqldump
diinstal, file biner tidak dapat dieksekusi oleh pengguna normal / di direktori home (jadi saya tidak bisa "menginstal" sendiri) dan database hidup di server yang terpisah, jadi saya tidak dapat mengambil file secara langsung.
Satu-satunya hal yang bisa saya lakukan adalah masuk ke server web melalui SSH dan membuat koneksi ke server database menggunakan mysql
klien baris perintah. Bagaimana saya bisa membuang konten ke file ala mysqldump
dalam format SQL?
Bonus: Jika memungkinkan, bagaimana saya bisa membuang konten langsung ke koneksi SSH saya?
Saya suka gagasan terowongan SSH yang diusulkan di bawah ini, namun, saya harus menggandakan terowongan itu.
localhost -> remote web server -> remote database server
Ini berfungsi dengan baik:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
Namun, mencoba masuk ke mysql gagal:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Saya kira itu mengharapkan kredensial pengguna menjadi 'user'@'mysql.example.com'
. Bagaimana saya bisa membujuknya menggunakan itu daripada host "nyata"?
Oke, saya membuatnya berfungsi dengan menambahkan 127.0.0.1 mysql.example.com
ke file host saya dan menghubungkan melalui mysqldump -P 3306 -h mysql.example.com -u user -p db
. Masalah terselesaikan! Saya masih tertarik dengan solusi yang tidak mengharuskan saya mengedit file host.
'user'@'localhost'
selain'user'@'mysql.example.com'
di MySQL, alih-alih mengedit file host.Jawaban:
Anda dapat mengatur terowongan ssh dan menggunakannya
mysqldump
pada mesin lokal Anda.sumber
http://sypex.net/en/ - Anda dapat menggunakan skrip ini untuk cadangan basis data setelah mengunggahnya ke server. Sangat praktis dan cepat
sumber
Unggah skrip ini ke server web Anda (harap Anda memiliki setidaknya akses FTP), mulai, tentukan nama basis data / host (alamat "server terpisah" Anda) / nama pengguna / kata sandi dan buang basis data ke lokasi mana pun yang Anda inginkan ...
sumber
Jika server Anda adalah server Web, Anda dapat menggunakan skrip PHP yang membuang database ke layar. Di server cadangan Anda, letakkan cron yang wget halaman dump. Kemudian basis data Anda dibuang ke server cadangan Anda hanya dengan HTTP.
Jangan lupa keamanan: Semua orang tersedia untuk membuang markas Anda. Masukkan kata sandi, atau batasan IP ...
sumber