Mysql sys_exec 공유 라이브러리 'lib_mysqludf_sys.so'를 열 수 없습니다(errno: 11, 잘못된 ELF 클래스: ELFCLASS32)
sys_exec을 사용하여 unix에서 네이티브명령어를 실행하려고 합니다만, https://github.com/mysqludf/lib_mysqludf_sys 에서 플러그인을 도입하려고 했습니다.
에/usr/lib/x86_64-linux-gnu/mariadb18/plugin#
단, 다음 명령을 실행하려고 하면
create function sys_exec returns int soname 'lib_mysqludf_sys.so';
다음과 같은 답변을 받고 있습니다.
ERROR 1126 (HY000): Can't open shared library 'lib_mysqludf_sys.so' (errno: 11, wrong ELF class: ELFCLASS32)
MariaDB 15.1 입니다.
그걸 고칠 방법을 찾았어요
우선, 인스톨 할 필요가 있습니다.default-libmysqlclient-dev
unix로
다음 명령을 실행합니다.apt-get install default-libmysqlclient-dev
다음으로 https://github.com/mysqludf/lib_mysqludf_sys 에서 저장소를 다운로드합니다.
다운로드가 완료되면 다음 명령을 실행할 수 있습니다.
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -m64 -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
그 후 복사lib_mysqludf_sys.so
MariaDB/MySQL 플러그인 폴더, 어떤 폴더인지 어떻게 알 수 있습니까?
MariaDB [(none)]> SHOW VARIABLES LIKE 'plugin_dir';
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| plugin_dir | /usr/lib/x86_64-linux-gnu/mariadb18/plugin/ |
+---------------+---------------------------------------------+
1 row in set (0.00 sec)
내 경우 명령어는 다음과 같습니다.
cp lib_mysqludf_sys.so /usr/lib/x86_64-linux-gnu/mariadb18/plugin/
그 후 트리거를 생성하여 자체 OS 상에서 실행하는 데 필요한 모든 것을 실행할 수 있습니다.
CREATE TABLE `trig_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`random_data` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
DELIMITER @@
CREATE TRIGGER trig_test
AFTER INSERT ON `trig_test`
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int;
SET cmd=CONCAT('node /tmp/script/script.js >> /tmp/script/result.txt');
SET result = sys_exec(cmd);
END;
@@
DELIMITER ;
INSERT INTO trig_test
(random_data)
VALUES('GOOOO!!!');
권한을 확인하는 데 필요한 명령을 실행할 수 없는 경우 소유자와 그룹을 /tmp에서 tests로 변경했습니다.
chown -R mysql.mysql /tmp
그럼 다 되는 거야!!!
언급URL : https://stackoverflow.com/questions/55241615/mysql-sys-exec-cant-open-shared-library-lib-mysqludf-sys-so-errno-11-wrong
'programing' 카테고리의 다른 글
기본 키가 존재하지 않는지 확인하는 동안 리퀴베이스가 실패함 (0) | 2022.12.31 |
---|---|
Python의 MySQL에 CSV 데이터 로드 (0) | 2022.12.31 |
@Transactional(전파=전파).필수) (0) | 2022.12.31 |
이 다차원 PHP 배열에서 단일 값을 가져오는 방법 (0) | 2022.12.21 |
phpmyadmin, count mysql.proc에서 저장 프로시저를 생성하는 문제가 잘못되었습니다. (0) | 2022.12.21 |