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 user@ssh.example.com -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.