Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi kết quả UDF

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về SQL Joins

  2. Ghi nhật ký giao dịch MySQL

  3. Django models.py Thông tư Khóa ngoại

  4. Dữ liệu POST quá lớn. Giảm dữ liệu hoặc tăng post_max_size

  5. Tôi có nên sử dụng MyISAM hoặc Bảng InnoDB cho Cơ sở dữ liệu MySQL của mình không?