Tôi đang chạy một công việc cron thực hiện mysqldump thông qua một tập lệnh PHP, bãi chứa yêu cầu đặc quyền RELOAD. Sử dụng tài khoản quản trị MySQL không cảm thấy đúng, nhưng không tạo ra một người dùng có quyền quản trị.Đặc quyền tải lại MySQL cho mysqldump trong công việc cron PHP: Sử dụng tài khoản quản trị MySQL hoặc tạo người dùng duy nhất? Bảo vệ?
Mối quan tâm chính của tôi là khía cạnh bảo mật, tôi đang tải thuộc tính db (tên người dùng, mật khẩu, v.v.) trong mảng "thuộc tính" được bảo vệ của lớp tôi đang sử dụng.
Tôi tự hỏi cách tiếp cận nào có ý nghĩa hơn hoặc nếu có cách khác để đạt được kết quả tương tự.
Tổng quan:
ĐÈN Server: CentOS 5.8, Apache 2.2.3, MySQL 5.0.95, PHP 5.3.3
Cron công việc phác thảo:
- Dump stats liệu dữ liệu từ hai bảng InnoDB trong db trang web, chúng có mối quan hệ khóa ngoại.
- Nạp dữ liệu vào bảng trong số liệu thống kê db
- Lấy giá trị cuối cùng của khóa chính tự động incrementing đó là chuyển
- Sử dụng giá trị khóa chính trong một truy vấn xóa dữ liệu sao chép từ trang web db
- Process dữ liệu chuyển trong db số liệu thống kê để cư trú các báo cáo bảng
- Khi chế biến xong, xóa các số liệu thống kê dữ liệu thô từ các số liệu thống kê db
Cơ sở dữ liệu trang web được cấu hình làm chủ với ghi nhật ký nhị phân và máy chủ được sao chép sẽ được thiết lập khi dữ liệu thống kê không còn được lưu trữ và xử lý trong cơ sở dữ liệu của trang web nữa (sao chép cơ sở dữ liệu trang web) cơ sở dữ liệu của riêng họ).
Tất cả các tệp được truy cập trong công việc định kỳ đều nằm bên ngoài thư mục DocumentRoot.
Thực chất của vấn gritty:
Các mysqldump thực hiện trong bước đầu tiên đòi hỏi đặc quyền RELOAD, đây là lệnh:
<?php
$SQL1 = "--no-create-info --routines --triggers --master-data ";
$SQL1 .= "--single-transaction --quick --add-locks --default-character-set=utf8 ";
$SQL1 .= "--compress --tables stats_event stats_event_attributes";
$OUTPUT_FILENAME = "/var/stats/daily/daily-stats-18.tar.gz";
$cmd1 = "/usr/bin/mysqldump -u website_user -pXXXXXX website_db $SQL1 | gzip -9 > $OUTPUT_FILENAME";
exec($cmd1);
?>
Các thông báo lỗi:
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
Hoạt động tốt nếu tôi sử dụng các thông tin quản trị mysql.
Tôi không rõ ràng về bản sao, nó cho cơ sở dữ liệu trang web, chúng tôi muốn giảm số liệu thống kê trước vì chúng chiếm nhiều không gian hơn mọi thứ khác kết hợp và xử lý đôi khi. Chỉ cần lưu các số liệu thống kê của các số liệu thống kê gây ra một chút thời gian xuống của các báo cáo là không quan trọng. Vì vậy, không phải tạm thời. Đoán mối quan tâm của tôi là về an ninh hơn bất cứ điều gì khác, tôi sẽ nhấn mạnh rằng trong câu hỏi. Bất kỳ suy nghĩ về an ninh nói riêng? – codewaggle
Tôi đang giả định rằng điều này không phải là trên lưu trữ được chia sẻ từ ngữ cảnh. Đảm bảo rằng người dùng chỉ có thể kết nối từ (các) máy chủ mong muốn và chọn một mật khẩu an toàn? Có lẽ không có mối đe dọa thực sự ở đây. – Charles
Chỉ là những gì tôi muốn nghe. Chúng tôi sở hữu máy chủ và tôi đã định đặt người dùng thành @localhost, suy nghĩ về việc chuyển số liệu thống kê sang máy chủ khác nhưng localhost sẽ hoạt động ngay bây giờ. – codewaggle