5.1.8.1 플러그인 설치 및 제거
서버 플러그인을 사용하기 전에 서버 플러그인을 서버에로드해야합니다. MySQL에서 사용자는 서버가 시작되거나 실행시 플러그인을로드 할 수 있습니다. 또한로드 된 플러그인의 활성화를 시작할 때 제어하거나 실행할 때 플러그인을 언로드 할 수 있습니다.
플러그인 설치
플러그인 활성화 제어
플러그인 제거
플러그인 설치
서버 플러그인을 사용하기 전에 서버 플러그인이 서버에 인식되어 있어야합니다. 여기에 설명 된대로 플러그인은 여러 가지 방법으로 인식 할 수 있습니다. 다음의 설명에서 plugin_name
는 innodb
이나 csv
등의 플러그인 이름을 나타냅니다.
내장 플러그인 :
서버에 포함 된 플러그인은 서버에서 자동으로 인식됩니다. 일반적으로 서버 플러그인을 시작할 때 사용되지만 --
옵션에서이를 변경할 수 있습니다. plugin_name
mysql.plugin
테이블에 등록 된 플러그인 :
mysql.plugin
테이블은 플러그인 레지스트리의 역할을 담당하고 있습니다. 서버는 일반적으로 테이블에 나열되어있는 각 플러그인을 시작할 때 사용하지만 특정 플러그인을 활성화할지 여부는 --
옵션에서 변경할 수 있습니다. 서버가 plugin_name
--skip-grant-tables
옵션으로 시작되면 서버는이 테이블을 참조하지 않고 여기에 나열된 플러그인을로드하지 않습니다.
명령 행 옵션에 이름을 지정된 플러그인 :
플러그인 라이브러리 파일에 존재하는 플러그인은 --plugin-load
옵션을 사용하면 서버 시작시로드 할 수 있습니다. 일반적으로 서버 플러그인을 시작할 때 사용되지만 --
옵션에서이를 변경할 수 있습니다. plugin_name
옵션 값은 세미콜론으로 구분 된
쌍의 목록입니다. 각각의 name
= plugin_library
name
플러그인의 이름에서 plugin_library
플러그인 코드가 포함 된 공유 라이브러리의 이름입니다. 플러그인 이름을 전에없이 플러그인 라이브러리를 지정했을 경우, 서버는 라이브러리에있는 모든 플러그인을로드합니다. 각 라이브러리 파일은 plugin_dir
시스템 변수에 의해 지정된 디렉토리에 저장되어 있어야합니다.
이 옵션은 mysql.plugin
테이블에 플러그인을 등록하지 않습니다. 후속 다시는 --plugin-load
가 다시 지정된 경우에만 서버 플러그인을 다시로드합니다. 즉,이 옵션은 1 번 서버 시작 만 지속 한 번의 설치에 영향을줍니다.
--plugin-load
는 (서버가 mysql.plugin
테이블을 무시하도록) --skip-grant-tables
가 지정되어있는 경우에도 플러그인로드를 가능하게합니다. --plugin-load
또한 플러그인이 실행시에로드 할 수없는 구성에서 플러그인을 시작할 때로드 할 수 있도록합니다.
--plugin-load-add
옵션은 --plugin-load
옵션을 보완합니다. --plugin-load-add
는 시작시로드되는 플러그인 세트에 하나 이상의 플러그인을 추가합니다. 인수의 형식은 --plugin-load
와 같습니다. --plugin-load-add
를 사용하면 대량의 플러그인 세트를 길고 부피가 큰 단일 --plugin-load
인수로 지정하는 것을 방지 할 수 있습니다. --plugin-load-add
는 --plugin-load
없이 사용할 수 있지만, --plugin-load
는로드 플러그인 세트를 재설정하기 위해 --plugin-load
앞에있는 모든 --plugin-load-add
인스턴스는 비활성화됩니다. 즉, 다음의 옵션의 경우,
--plugin-load = x --plugin-load-add = y
위는 다음의 옵션과 동일합니다.
--plugin-load = "x; y"
다만, 다음의 옵션의 경우,
--plugin-load-add = y --plugin-load = x
위는 다음의 옵션과 동일합니다.
--plugin-load = x
INSTALL PLUGIN
문에 설치되는 플러그인 :
플러그인 라이브러리 파일에 존재하는 플러그인은 INSTALL PLUGIN
문에서 런타임에로드 할 수 있습니다. 이 문은 또한 플러그인을 mysql.plugin
테이블에 등록 한 후 다시 시작하여 서버에서로드합니다. 따라서 INSTALL PLUGIN
에는 mysql.plugin
테이블에 대한 INSERT
권한이 필요합니다.
플러그인이 --plugin-load
옵션과 mysql.plugin
테이블을 모두 사용하여 지정된 경우 서버는 시작되지만 다음과 같은 메시지가 오류 로그에 기록됩니다.
100310 19:15:44 [ERROR] Function 'plugin_name
'already exists 100310 19:15:44 [Warning] Could not load plugin named 'plugin_name
' with soname 'plugin_object_file
'.
예 : --plugin-load
옵션은 서버 시작시 플러그인을 설치합니다. myplugin
라는 플러그인을 somepluglib.so
라는 플러그인 라이브러리 파일에 설치하려면 my.cnf
파일에서 다음 줄을 사용합니다.
[mysqld] plugin-load = myplugin = somepluglib.so
이 경우 플러그인은 mysql.plugin
에 등록되지 않습니다. --plugin-load
옵션없이 서버를 다시 시작하면 플러그인은 시작할 때로드되지 않습니다.
한편, INSTALL PLUGIN
명령문은 서버가 시작할 때 라이브러리 파일에서 플러그인 코드를로드합니다.
mysql> INSTALL PLUGIN myplugin SONAME 'somepluglib.so';
또한 INSTALL PLUGIN
는 "영구"플러그인 등록을 실행합니다. 서버 플러그인을 mysql.plugin
테이블에 나열하면 다음 서버를 다시 시작하면 플러그인이로드됩니다.
많은 플러그인은 서버를 시작할 때 또는 런타임 중 하나를로드 할 수 있습니다. 그러나 서버 시작시 플러그인이로드 및 초기화되도록 설계되어 있으면 INSTALL PLUGIN
대신 --plugin-load
를 사용하십시오.
플러그인이로드되어있을 때, 플러그인에 대한 정보는 INFORMATION_SCHEMA.PLUGINS
테이블과 SHOW PLUGINS
문 등의 여러 소스에서 실행할 때 사용할 수 있습니다. 자세한 내용은 섹션 5.1.8.2 "서버 플러그인 정보 얻기" 를 참조하십시오.
플러그인 활성화 제어
서버가 시작할 때 플러그인을 인식하고있는 경우 (예를 들어, 플러그인이 --plugin-load
옵션을 사용하여 지정된 있거나 mysql.plugin
테이블에 등록되어 있거나하는 경우) 서버는 기본적으로 플러그인을로드하고 활성화합니다. 플러그인 후에 --
부팅 옵션을 사용하면이 플러그인의 활성화를 제어 할 수 있습니다. 다음의 설명에서 plugin_name
[= value
]plugin_name
는 innodb
이나 csv
등의 플러그인 이름을 나타냅니다. 다른 옵션과 마찬가지로 옵션 이름의 대시와 밑줄은 교환 가능합니다. 예를 들어, --my_plugin=ON
과 --my-plugin=ON
은 동일합니다.
--
plugin_name
=OFF플러그인을 사용하지 않도록 서버에 지시합니다.
--
plugin_name
[=ON]플러그인을 사용하도록 서버에 지시합니다. (값없이 옵션을
--
로 지정해도 효과는 동일합니다.) 플러그인 초기화에 실패하면 서버는 플러그인을 비활성화하고 실행합니다.plugin_name
--
plugin_name
=FORCE플러그인을 사용하도록 서버에 지시하지만 플러그인 초기화가 실패하면 서버가 시작되지 않습니다. 즉,이 옵션은 플러그인을 사용하여 서버를 실행하거나 아무것도 가지 중 하나를 강제합니다.
--
plugin_name
=FORCE_PLUS_PERMANENTFORCE
와 비슷하지만, 또한 플러그인 실행시 언로드되지 않도록합니다. 사용자가UNINSTALL PLUGIN
를 사용하여이 작업을 수행하려고하면 오류가 발생합니다.
OFF
, ON
, FORCE
및 FORCE_PLUS_PERMANENT
값은 대소 문자를 구별하지 않습니다.
플러그인의 활성화 상태는 INFORMATION_SCHEMA.PLUGINS
테이블 LOAD_OPTION
컬럼에 표시됩니다.
만일 CSV
, BLACKHOLE
및 ARCHIVE
가 플러그 내장 스토리지 엔진에서 서버가 시작할 때 이것들을로드하도록 다음 조건이 주어지고 있다고합니다. 즉, CSV
의 초기화에 실패해도 서버가 실행이 허용되지만, BLACKHOLE
의 초기화에 성공하는 것이 필요하고, ARCHIVE
가 비활성화되어 있어야한다는 조건입니다. 이를 충족하기 위해서는 옵션 파일에서 다음 줄을 사용합니다.
[mysqld] csv = ON blackhole = FORCE archive = OFF
--enable-
옵션 형식 plugin_name
--
의 동의어로 지원됩니다. plugin_name
=ON--disable-
및 plugin_name
--skip-
옵션 형식 plugin_name
--
의 동의어로 지원됩니다. plugin_name
=OFF
플러그인이 OFF
에서 명시 적으로 비활성화되거나 ON
으로 활성화되었지만 초기화에 실패했기 때문에 암묵적으로 비활성화되는 경우, 플러그인을 필요로하는 서버 작업에 대한 변경됩니다. 예를 들어, 플러그인이 스토리지 엔진을 구현하는 경우, 그 스토리지 엔진의 기존 테이블 액세스 할 수 없습니다 그 스토리지 엔진에 새 테이블을 만들려고하면 대신 오류를 발생시키는 NO_ENGINE_SUBSTITUTION
SQL 모드가 활성화 되어 있지 않은 한, 기본 스토리지 엔진을 사용하는 테이블이 생성됩니다.
플러그인 비활성화는 다른 옵션의 조정이 걸릴 수도 있습니다. 예를 들어, --skip-innodb
를 사용하여 서버를 시작하여 InnoDB
를 비활성화 한 경우 다른 innodb_
옵션을 시작 명령에서 생략 할 수 필요할 수 있습니다. 또한 xxx
InnoDB
는 기본 스토리지 엔진이기 때문에 사용 가능한 다른 스토리지 엔진을 --default_storage_engine
으로 지정하지 않으면 시작하지 않습니다. MySQL 5.6.3 이후에서는 --default_tmp_storage_engine
도 설정해야합니다.
플러그인 제거
서버에 인식되는 플러그인은 UNINSTALL PLUGIN
문 실행시 제거하면 비활성화 할 수 있습니다. 이 문은 플러그인을 언로드 플러그인이 mysql.plugin
테이블에 등록되어있는 경우는 거기에서 제거합니다. 따라서 UNINSTALL PLUGIN
문은 mysql.plugin
테이블에 DELETE
권한이 필요합니다. 플러그인이 테이블에 등록되어 있지 않은 경우, 서버는 이후에 다시 시작 플러그인을 자동으로로드하지 않습니다.
UNINSTALL PLUGIN
플러그인이 INSTALL PLUGIN
또는 --plugin-load
중로드되었는지에 관계없이 플러그인을 언로드 할 수 있습니다.
UNINSTALL PLUGIN
에는 다음과 같은 예외가 적용됩니다.
서버에 내장 된 플러그인을 언로드 할 수 없습니다. 이들은
INFORMATION_SCHEMA.PLUGINS
또는SHOW PLUGINS
에서 출력 라이브러리 이름이NULL
의 플러그인으로 확인할 수 있습니다.실행시 플러그인을 언로드하지 않도록하는
--
을 사용하면 서버가 시작된 원하는 플러그인을 언로드 할 수 없습니다. 이들은plugin_name
=FORCE_PLUS_PERMANENTINFORMATION_SCHEMA.PLUGINS
테이블LOAD_OPTION
컬럼에서 확인할 수 있습니다.