Cảm ơn Roland.
Vì vậy, câu trả lời cho câu hỏi của tôi là "AppArmor".
Từ Wikipedia:
AppArmor cho phép quản trị viên hệ thống liên kết với mỗi chương trình một hồ sơ bảo mật hạn chế khả năng của chương trình đó. Nó bổ sung cho mô hình kiểm soát truy cập tùy ý (DAC) truyền thống của Unix bằng cách cung cấp kiểm soát truy cập bắt buộc (MAC).
Vì Ubuntu Hardy nên gói máy chủ MySQL 5.0 cũng chứa tệp hồ sơ AppArmor (/etc/apparmor.d/usr.sbin.mysqld) giới hạn các chức năng của máy chủ MySQL, như gọi một UDF để thực thi lệnh.
Vì vậy, để MySQL chạy các lệnh Linux, tôi nên thay đổi mức độ bảo mật cho MySql bên trong AppArmor.
[[email protected] ~]# aa-complain /usr/sbin/mysqld
Để xem trạng thái của AppArmor:
[[email protected] ~]# aa-status
Với cấu hình này, tôi có thể thực thi sys_eval và sys_exec. Nhưng điều đó vẫn giới hạn trong thư mục mysql. Vì vậy, tôi không thể tạo tệp hoặc chạy tập lệnh từ bất kỳ thư mục nào.
Vì vậy, giải pháp là thêm quyền vào apparmor để mysql truy cập các thư mục dữ liệu mới.
sudo vi /etc/apparmor.d/usr.sbin.mysqld
Thêm:
/newdir/ r,
/newdir/** rwk,
Khởi động lại máy chủ:
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
Nếu vẫn không được, hãy kiểm tra quyền nix để chắc chắn rằng mysql là chủ sở hữu và nhóm cho thư mục mới một cách đệ quy.
chown -R mysql:mysql “new datadir path”
Tôi hy vọng điều đó sẽ giúp được ai đó.
Abid