sql >> Databáze >  >> RDS >> Mysql

Chyba výsledku UDF

Díky Rolande.

Takže odpověď na mou otázku je "AppArmor".

Z Wikipedie:

AppArmor umožňuje správci systému přiřadit každému programu bezpečnostní profil, který omezuje možnosti daného programu. Doplňuje tradiční unixový model diskrečního řízení přístupu (DAC) tím, že poskytuje povinné řízení přístupu (MAC).

Od Ubuntu Hardy serverový balíček MySQL 5.0 obsahuje také soubor profilu AppArmor (/etc/apparmor.d/usr.sbin.mysqld), který omezuje funkce serveru MySQL, jako je volání UDF pro provádění příkazů.

Abychom umožnili MySQL spouštět příkazy Linuxu, měl bych změnit úroveň zabezpečení pro MySql v AppArmor.

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

Chcete-li se podívat na stav AppArmor:

 [[email protected] ~]# aa-status 

S touto konfigurací mohu spustit sys_eval a sys_exec. Ale to je stále omezeno na adresář mysql. Nemohu tedy vytvořit soubor nebo spustit skript z žádného adresáře.

Řešením je tedy přidání oprávnění do apparmor pro mysql pro přístup k novým datovým adresářům.

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

Přidat:

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

Restartujte servery:

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

Pokud to stále nefunguje, zkontrolujte oprávnění nix, abyste se ujistili, že mysql je vlastníkem a skupinou nového adresáře rekurzivně.

chown -R mysql:mysql “new datadir path”

Doufám, že to někomu pomůže.

Abid



  1. rozdělení alfa a čísel pomocí sql

  2. Hibernace časové razítko s časovým pásmem

  3. Jak se správně vyhnout Mysql Race Conditions

  4. Závažná chyba:Nelze znovu deklarovat session_start() ve functions.php řádku 25