일반적으로 PL/Perl은 다음과 같이 설치됩니다."스포츠 토토 결과 수 있는"이름이 지정된 프로그래밍 언어plperl. 이 설정에서 특정 Perl 작업은 다음과 같습니다. 보안을 유지하기 위해 비활성화되었습니다. 일반적으로 다음과 같은 작업은 환경과 상호작용하는 것은 제한되어 있습니다. 이 파일 핸들 작업을 포함합니다.요구및사용(용 외부 모듈). 내부에 접근할 수 있는 방법은 없습니다. 데이터베이스 서버 프로세스를 사용하거나 OS 수준 액세스 권한을 얻으려면 C 함수처럼 서버 프로세스의 권한을 부여합니다. 따라서, 권한이 없는 모든 데이터베이스 사용자는 이 기능을 사용하도록 허용될 수 있습니다. 언어.
다음은 작동하지 않는 기능의 예입니다. 보안상의 이유로 파일 시스템 작업은 허용되지 않습니다.
CREATE FUNCTION badfunc() 정수를 $$로 반환합니다.
내 $tmpfile = "/tmp/badfile";
내 $fh, '', $tmpfile을 엽니다.
또는 elog(ERROR, qq"$tmpfile" 파일을 열 수 없습니다: $!);
print $fh "파일 쓰기 테스트\n";
close $fh 또는 elog(ERROR, qq"$tmpfile" 파일을 닫을 수 없습니다: $!);
1을 반환합니다.
$$ 언어 plperl;
이 기능의 생성은 다음을 사용하므로 실패합니다. 금지된 작업은 유효성 검사기에 의해 포착됩니다.
때로는 Perl 함수를 작성하는 것이 바람직할 때도 있습니다. 제한됨. 예를 들어, Perl 함수를 원할 수도 있습니다. 메일을 보냅니다. 이러한 경우를 처리하기 위해 PL/Perl을 설치할 수도 있습니다. 으로"스포츠 토토 결과 수 없음"언어(보통 전화함PL/PerlU). 이 경우 전체 Perl 언어를 사용할 수 있습니다. 만약createlang언어, 언어 이름을 설치하는 데 사용되는 프로그램plperlu스포츠 토토 결과 수 없는 것을 선택합니다 PL/Perl 변형.
a의 작가PL/PerlU함수는 다음 작업을 수행하는 데 사용할 수 없도록 주의해야 합니다. 원하지 않는 모든 일을 할 수 있기 때문입니다. 데이터베이스 관리자로 로그인한 사용자가 수행할 수 있습니다. 데이터베이스 시스템에서는 데이터베이스 수퍼유저만 허용합니다. 신뢰할 수 없는 언어로 함수를 만듭니다.
위 함수가 슈퍼유저에 의해 다음을 사용하여 생성된 경우 언어plperlu, 실행은 성공했습니다.
참고:그동안PL/펄함수는 별도의 Perl에서 실행됩니다. 각 SQL 역할에 대한 통역사, 모두PL/PerlU주어진 함수에서 실행되는 함수 세션은 단일 Perl 인터프리터에서 실행됩니다(다음 중 하나가 아님). 에 사용되는 것PL/펄함수). 이것은 허용합니다PL/PerlU데이터를 자유롭게 공유하는 기능, 하지만 사이에는 통신이 이루어질 수 없습니다.PL/펄그리고PL/PerlU함수.
참고:Perl은 다중 인터프리터를 지원할 수 없습니다 적절한 방법으로 구축되지 않은 한 하나의 프로세스 내에서 플래그, 즉 둘 중 하나입니다.use다중성또는useithreads. (use다중성당신이 아닌 이상 선호됩니다 실제로 스레드를 사용해야합니다. 자세한 내용은 다음을 참조하세요.perlembed남자 페이지.) 만약PL/펄사용됨 이런 방식으로 구축되지 않은 Perl 사본을 사용하면 세션당 하나의 Perl 인터프리터만 사용할 수 있습니다. 따라서 하나의 세션은 둘 중 하나만 실행할 수 있습니다.PL/PerlU함수 또는PL/펄모두 호출되는 함수 동일한 SQL 역할입니다.