Скрипт configure
обеспечивает широкие возможности управления конфигурацией
дистрибутива MySQL. Обычно такое управление осуществляется путем
использования опций в командной строке configure
. На работу configure
можно также воздействовать при помощи соответствующих переменных окружения
(see Приложение E, Переменные окружения). Чтобы получить список поддерживаемых
configure опций, запустите следующую команду:
shell> ./configure --help
Ниже описаны некоторые из наиболее часто используемых опций configure
:
-
Для компиляции только клиентских библиотек MySQL и клиентских программ (без серверной части) используйте опцию
--without-server
:shell> ./configure --without-server
При отсутствии компилятора C++ не будет компилироваться
mysql
(именно для данной клиентской программы требуется C++). В этом случае можно удалить из configure код, который проверяет наличие компилятора C++, а затем запустить./configure
с опцией--without-server
. На этапе компиляции и после этого будет предпринята попытка скомпилироватьmysql
, но любые предупреждения насчетmysql.cc
можно игнорировать (еслиmake
остановится, попробуйте запуститьmake -k
- чтобы компиляция остального кода продолжалась даже в случае возникновения ошибок). Если необходимо получить встраиваемую библиотеку MySQL (
libmysqld.a
), используйте опцию--with-embedded-server
.-
Если вы не хотите, чтобы ваши системные журналы и каталоги баз данных располагались в каталоге
/usr/local/var
, то используйте командуconfigure
наподобие одной из приведенных ниже:shell> ./configure --prefix=/usr/local/mysql shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/data
Первая команда изменяет установочный префикс, в результате чего весь код будет установлен в каталоге
/usr/local/mysql
вместо принятого по умолчанию/usr/local
. Вторая команда сохраняет принятый по умолчанию установочный префикс, но переопределяет принятое по умолчанию местоположение каталогов базы данных (обычно/usr/local/var
) и изменяет его на/usr/local/mysql/data
. После завершения компиляции MySQL эти опции можно изменить с помощью файлов опций (see Раздел 4.1.2, «Файлы параметровmy.cnf
») -
Если вы работаете под Unix и хотите, чтобы сокет MySQL находился в каком-либо другом, отличном от принятого по умолчанию, месте (обычно по умолчанию задается каталог
/tmp
или/var/run
), используйте команду configure, подобную следующей:shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
Следует учитывать, что данный файл должен представлять собой полный путь к каталогу! Позже местоположение mysql.sock можно также изменить, используя файлы опций MySQL (see Раздел A.4.5, «Как защитить или изменить сокет-файл MySQL
/tmp/mysql.sock
»). -
Если необходимо компилировать статически линкованные программы (например, чтобы создать бинарный дистрибутив, или чтобы повысить скорость, или чтобы обойти проблемы некоторых дистрибутивов RedHat Linux), запустите
configure
так, как показано ниже:shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static
-
При использовании
gcc
без установленной библиотекиlibg++
илиlibstdc++
можно предписатьconfigure
в качестве компилятора C++ использоватьgcc
:shell> CC=gcc CXX=gcc ./configure
Если
gcc
используется как компилятор C++, то он не будет пробовать линковаться сlibg++
илиlibstdc++
. Это может оказаться полезным даже если такие библиотеки установлены, поскольку при использовании некоторых версий вышеназванных библиотек в прошлом у пользователей MySQL возникали непонятные проблемы.Ниже приводятся установки некоторых общих переменных окружения в зависимости от используемого компилятора:
Компилятор Рекомендуемые опции gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" pgcc 2.90.29 or newer CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \ CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors \ -fno-exceptions -fno-rtti" В большинстве случаев можно получить достаточно оптимальный бинарный код MySQL путем использования опций предыдущей таблицы и добавления в командной строке следующих опций:
--prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Другими словами, полная строка конфигурации для всех последних версий gcc должна быть подобна приведенной ниже:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Все бинарные коды, которые мы поставляем с веб-сайта MySQL на https://www.mysql.com/, компилируются с максимальной оптимизацией и должны быть идеальными для большинства пользователей (see Раздел 2.2.7, «Бинарные коды MySQL, скомпилированные в MySQL AB»). Существуют некоторые настройки, позволяющие сделать бинарный код даже еще быстрее, но их могут выполнять только опытные пользователи (see Раздел 5.5.3, «Как компиляция и линкование влияет на скорость MySQL»).
Если создать код не удается и при этом выдаются ошибки с указанием на компилятор или если компоновщик не в состоянии создать совместную библиотеку
libmysqlclient.so.#
('#
' представляет собой номер версии), то эту проблему можно обойти путем добавления кconfigure
опции--disable-shared
. В этом случаеconfigure
не будет создавать совместную библиотекуlibmysqlclient.so.#
. -
Можно сконфигурировать MySQL таким образом, чтобы не использовать величины
DEFAULT
на столбцах не-NULL
(т.е. на столбцах, которые не могут принимать значениеNULL
). При указании этой опции командыINSERT
будут генерировать ошибку в случае, если явно не указаны величины для всех столбцов, которые не могут принимать значениеNULL
. Чтобы запретить использование величин по умолчанию, запуститеconfigure
, как показано ниже:shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
-
По умолчанию в MySQL используется кодировка ISO-8859-1 (Latin1). Для изменения кодировки, принятой по умолчанию, следует применить опцию
--with-charset
:shell> ./configure --with-charset=CHARSET
CHARSET
может принимать одно из следующих значений:big5
,cp1251
,cp1257
,czech
,danish
,dec8
,dos
,euc_kr
,gb2312
,gbk
,german1
,hebrew
,hp8
,hungarian
,koi8_ru
,koi8_ukr
,latin1
,latin2
,sjis
,swe7
,tis620
,ujis
,usa7
илиwin1251ukr
(see Раздел 4.6.1, «Набор символов, применяющийся для записи данных и сортировки»). Если требуется преобразовывать символы между сервером и клиентом, следует рассмотреть командуSET CHARACTER SET
(see Раздел 5.5.6, «Синтаксис командыSET
»).Предупреждение: если набор символов изменяется после создания таблиц, необходимо запустить
myisamchk -r -q --set-characted-set=charset
на каждой таблице. В противном случае индексы могут сортироваться неправильно (такое может случиться, если вы установите MySQL, создадите ряд таблиц, затем переконфигурируете MySQL с целью использования другого набора символов и заново установите MySQL).С помощью опции
--with-extra-charsets=LIST
можно определить, какие дополнительные кодировки необходимо скомпилировать в данном сервере.Здесь
LIST
либо представляет собой разделенный пробелами список кодировок, либо имеет значениеcomplex
для включения всех символов, которые не могут быть загружены динамически, либо имеет значениеall
для включения всех кодировок в бинарники. -
Для конфигурации MySQL с кодом отладки используйте опцию
--with-debug
:shell> ./configure --with-debug
Задание этой опции вызывает подключение надежного распределителя памяти, который может найти некоторые ошибки и обеспечить вывод информации о том, что происходит (see Раздел D.1, «Отладка сервера MySQL»).
Если клиентские программы используют потоки, то необходимо также скомпилировать поддерживающую потоки версию клиентской библиотеки MySQL с опцией конфигурации
--enable-thread-safe-client
. При указании этой опции будет создана библиотекаlibmysqlclient_r
, с которой следует линковать потоковые приложения (see Раздел 8.4.8, «Как создать клиентскую программу с потоками»).Опции, относящиеся к конкретным системам, можно найти в разделах данного руководства, в которых описываются особенности различных операционных систем (see Раздел 2.6, «Заметки по операционным системам»).