Mysql
 sql >> Datenbank >  >> RDS >> Mysql

UDF-Ergebnisfehler

Danke Roland.

Die Antwort auf meine Frage lautet also "AppArmor".

Aus Wikipedia:

AppArmor ermöglicht es dem Systemadministrator, jedem Programm ein Sicherheitsprofil zuzuordnen, das die Fähigkeiten dieses Programms einschränkt. Es ergänzt das traditionelle Unix-Modell der diskretionären Zugriffskontrolle (DAC) durch die Bereitstellung der obligatorischen Zugriffskontrolle (MAC).

Seit Ubuntu Hardy enthält das MySQL 5.0-Serverpaket auch eine AppArmor-Profildatei (/etc/apparmor.d/usr.sbin.mysqld), die MySQL-Serverfunktionalitäten einschränkt, wie z. B. das Aufrufen einer UDF zum Ausführen von Befehlen.

Damit MySQL also Linux-Befehle ausführen kann, sollte ich die Sicherheitsstufe für MySql in AppArmor ändern.

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

So sehen Sie sich den Status von AppArmor an:

 [[email protected] ~]# aa-status 

Mit dieser Konfiguration kann ich sys_eval und sys_exec ausführen. Aber das ist immer noch auf das mysql-Verzeichnis beschränkt. Daher kann ich aus keinem Verzeichnis eine Datei erstellen oder ein Skript ausführen.

Die Lösung besteht also darin, apparmor Berechtigungen für mysql hinzuzufügen, um auf die neuen Datenverzeichnisse zuzugreifen.

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

Hinzufügen:

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

Starten Sie die Server neu:

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

Wenn das immer noch nicht funktioniert, überprüfen Sie rekursiv die Nix-Berechtigungen, um sicherzustellen, dass mysql Eigentümer und Gruppe für das neue Verzeichnis ist.

chown -R mysql:mysql “new datadir path”

Ich hoffe, das hilft jemandem.

Halt