Làm thế nào để kết xuất cơ sở dữ liệu từ xa mà không cần mysqldump?


8

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 mysqlmá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.comvà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ủ.


1
Tôi khuyên bạn nên cấp quyền cho 'user'@'localhost'ngoài 'user'@'mysql.example.com'MySQL, thay vì chỉnh sửa tệp máy chủ.
Znarkus

Câu trả lời:


15

Bạn có thể đặt đường hầm ssh và sử dụng mysqldumptrên máy cục bộ của mình.

ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname

1
Trên Unix, 'localhost' được xử lý khác nhau. Trong đó, số cổng bị bỏ qua, bạn cần sử dụng 127.0.0.1 để thực hiện công việc này. dev.mysql.com/doc/refman/5.0/en/connecting.html
Adrian Gunawan


0

Tải tập lệnh này lên máy chủ web của bạn (hy vọng bạn có ít nhất quyền truy cập FTP), khởi động nó, chỉ định tên / máy chủ cơ sở dữ liệu (địa chỉ của "máy chủ riêng biệt") / tên người dùng / mật khẩu và chuyển cơ sở dữ liệu đến bất kỳ vị trí nào bạn muốn ...


0

Nếu máy chủ của bạn là máy chủ Web, bạn có thể sử dụng tập lệnh PHP kết xuất cơ sở dữ liệu để sàng lọc. Trên máy chủ sao lưu của bạn, đặt một cron mà quên trang kết xuất. Sau đó, cơ sở dữ liệu của bạn được đổ vào máy chủ sao lưu của bạn chỉ bằng HTTP.

Đừng quên bảo mật: Mọi người đều có sẵn để đổ căn cứ của bạn. Đặt mật khẩu hoặc giới hạn IP ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.