Tôi muốn kết xuất cơ sở dữ liệu trên trang web được lưu trữ từ xa của mình theo định kỳ bằng cách sử dụng tập lệnh shell. Thật không may, máy chủ bị khóa khá chặt, không mysqldump
được cài đặt, các tệp nhị phân không thể được thực thi bởi người dùng bình thường / trong các thư mục nhà (vì vậy tôi không thể tự "cài đặt" nó) và cơ sở dữ liệu nằm trên một máy chủ riêng biệt, vì vậy tôi không thể lấy các tập tin trực tiếp.
Điều duy nhất tôi có thể làm là đăng nhập vào máy chủ web thông qua SSH và thiết lập kết nối với máy chủ cơ sở dữ liệu bằng cách sử dụng mysql
máy khách dòng lệnh. Làm cách nào tôi có thể kết xuất nội dung vào một tệp a la mysqldump
ở định dạng SQL?
Phần thưởng: Nếu có thể, làm cách nào tôi có thể đổ nội dung trực tiếp vào cuối kết nối SSH của mình?
Tôi thích ý tưởng đường hầm SSH được đề xuất bên dưới, tuy nhiên, tôi cần phải nhân đôi đường hầm.
localhost -> remote web server -> remote database server
Điều này hoạt động tốt:
$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N
Tuy nhiên, cố gắng đăng nhập vào mysql không thành công:
$ 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
Tôi đoán nó mong đợi thông tin đăng nhập của người dùng 'user'@'mysql.example.com'
. Làm thế nào tôi có thể dỗ nó sử dụng nó thay vì máy chủ "thực sự"?
Được rồi, tôi đã làm cho nó hoạt động bằng cách thêm 127.0.0.1 mysql.example.com
vào tập tin máy chủ của tôi và kết nối thông qua mysqldump -P 3306 -h mysql.example.com -u user -p db
. Vấn đề đã được giải quyết! Tôi vẫn quan tâm đến một giải pháp không yêu cầu tôi chỉnh sửa tệp máy chủ.
'user'@'localhost'
ngoài'user'@'mysql.example.com'
MySQL, thay vì chỉnh sửa tệp máy chủ.