Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan hasil UDF

Terima kasih Roland.

Jadi, jawaban untuk pertanyaan saya adalah "AppArmor".

Dari Wikipedia:

AppArmor memungkinkan administrator sistem untuk mengaitkan dengan setiap program profil keamanan yang membatasi kemampuan program itu. Ini melengkapi model kontrol akses diskresioner (DAC) Unix tradisional dengan menyediakan kontrol akses wajib (MAC).

Sejak Ubuntu Hardy, paket server MySQL 5.0 juga berisi file profil AppArmor (/etc/apparmor.d/usr.sbin.mysqld) yang membatasi fungsionalitas server MySQL, seperti memanggil UDF untuk menjalankan perintah.

Jadi, untuk membiarkan MySQL menjalankan perintah Linux, saya harus mengubah tingkat keamanan untuk MySql di dalam AppArmor.

[[email protected] ~]# aa-complain /usr/sbin/mysqld 

Untuk melihat status AppArmor:

 [[email protected] ~]# aa-status 

Dengan konfigurasi ini, saya dapat mengeksekusi sys_eval dan sys_exec. Tapi itu masih terbatas pada direktori mysql. Jadi saya tidak dapat membuat file atau menjalankan skrip dari direktori mana pun.

Jadi solusinya adalah menambahkan izin ke apparmor untuk mysql untuk mengakses direktori data baru.

sudo vi /etc/apparmor.d/usr.sbin.mysqld

Tambahkan:

/newdir/ r,
/newdir/** rwk,

Mulai ulang server:

sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart

Jika itu masih tidak berhasil, periksa izin nix untuk memastikan mysql adalah pemilik dan grup untuk direktori baru secara rekursif.

chown -R mysql:mysql “new datadir path”

Saya harap itu membantu seseorang.

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. Konektor MySQL dan tabrakan tajuk VC2010

  2. Melarikan diri dari tanda kutip tunggal di JDBC dengan MySql

  3. Rel dan kesalahan sintaks MySQL dengan beberapa pernyataan SQL dalam blok eksekusi

  4. Operator logika MySQL

  5. Urutan Zend_Db berdasarkan nilai bidang