Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка в резултата на UDF

Благодаря Роланд.

И така, отговорът на въпроса ми е "AppArmor".

От Уикипедия:

AppArmor позволява на системния администратор да свърже с всяка програма профил за защита, който ограничава възможностите на тази програма. Той допълва традиционния модел за контрол на дискреционен достъп (DAC) на Unix, като предоставя задължителен контрол на достъпа (MAC).

Тъй като Ubuntu Hardy, сървърният пакет MySQL 5.0 съдържа също файл с профил на AppArmor (/etc/apparmor.d/usr.sbin.mysqld), който ограничава функционалностите на MySQL сървъра, като извикване на UDF за изпълнение на команди.

Така че, за да позволя на MySQL да изпълнява Linux команди, трябва да променя нивото на сигурност за MySql в AppArmor.

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

За да видите състоянието на AppArmor:

 [[email protected] ~]# aa-status 

С тази конфигурация мога да изпълня sys_eval и sys_exec. Но това все още е ограничено до директорията mysql. Така че не мога да създам файл или да стартирам скрипт от която и да е директория.

Така че решението е да добавите разрешения към apparmor за mysql за достъп до новите директории с данни.

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

Добавете:

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

Рестартирайте сървърите:

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

Ако това все още не работи, проверете разрешенията на nix, за да сте сигурни, че mysql е собственик и група за новата директория рекурсивно.

chown -R mysql:mysql “new datadir path”

Надявам се това да помогне на някого.

Продължавайте



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да bin произволно в MySQL?

  2. Мигриране на данни към Firebase от mysql

  3. .NET CORE MySql MaxPoolSize не е приложен в

  4. MySQL - изберете групи със стойности, покриващи набор

  5. Управление на количката и складовите наличности