Truy cập vào hệ thống tệp bằng SQL

Tôi vừa bắt gặp một tùy chọn tuyệt vời trong MySQL để truy cập vào hệ thống tệp và lấy thông tin có giá trị, ví dụ: về sự tồn tại của tệp và thư mục hoặc nội dung của chúng. Điều này có thể rất hữu ích như một giải pháp thay thế cho file_exists của hàm php, vì thông tin về sự tồn tại của (các) tệp vẫn có thể được sử dụng trong truy vấn cho các hàm sắp xếp và tổng hợp thêm.


Nếu người dùng cơ sở dữ liệu được liên kết có đặc quyền FILE , bạn có thể sử dụng lệnh

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Trong quá trình truy vấn, không chỉ kiểm tra xem tệp có tồn tại hay không mà còn đọc nội dung của nó.

Trên hệ thống Windows, cần lưu ý rằng dấu gạch chéo ngược phải được đánh dấu tương ứng trong đường dẫn đến tệp (ví dụ: C: \\ Windows \\ System32 \\ driver \\ etc \\ hosts). Khía cạnh bảo mật cũng không nên hoàn toàn bị bỏ qua, vì khi đặc quyền FILE được cấp, quyền truy cập vào cơ sở dữ liệu tự động có nghĩa là quyền truy cập vào phần còn lại của hệ thống tệp.

Để đảm bảo rằng không chỉ các giá trị NULL được trả về, phải đảm bảo rằng người dùng đang chạy MySQL có quyền đọc.

Để truy cập các tệp lớn, thuộc tính chung "max_allowed_packet", được đặt thành 1 MB, phải được tăng lên.

mysql -u... -p...
set global max_allowed_packet = 1024 * 1024 * 512;
exit;

Bây giờ bạn có thể (sau khi khởi động lại máy chủ) truy cập các tệp có kích thước lên đến 512 MB.

Trở lại