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

Gần đây tôi tình cờ phát hiện ra một cách hay để truy cập hệ thống tập tin và lấy thông tin có giá trị, chẳng hạn như sự tồn tại của các tập tin 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 hàm PHP ` file_exists` , vì thông tin về sự tồn tại của tập tin có thể được sử dụng trong truy vấn cho các hàm sắp xếp và tổng hợp tiếp theo.


Nếu người dùng cơ sở dữ liệu liên quan có quyền FILE , lệnh này có thể được sử dụng.

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