RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 2. Установка и обновление MySQL

Эта глава описывает, как получить и установить MySQL. Более поздние разделы обеспечивают детали. Если Вы планируете обновить существующую версию MySQL к более новой версии, а не установить MySQL впервые, см. раздел 2.10.1.

Если Вы интересуетесь переходом к MySQL от другой системы базы данных, см. раздел A.8, который содержит ответы на некоторые общие вопросы относительно проблем перехода.

Установка MySQL вообще следует за шагами, обрисованными в общих чертах здесь:

  1. Определите, работает ли MySQL и поддержан на Вашей платформе.

    Пожалуйста, отметьте, что не все платформы являются одинаково подходящими для того, чтобы выполнить MySQL, и что не все платформы, на которых MySQL, как известно, работает, официально поддержаны Oracle Corporation. Для информации о тех платформах, которые официально поддержаны, см. http://www.mysql.com/support/supportedplatforms/database.html .

  2. Выберите, который дистрибутив установить.

    Несколько версий MySQL доступны, и большинство доступно в нескольких форматах. Вы можете выбрать из предварительно упакованных, содержащих предварительно собранные программы или исходный код. Когда в сомнении, используйте двоичный дистрибутив. Oracle также обеспечивает доступ к исходному коду MySQL для тех, кто хочет видеть недавние события и проверить новый код. Чтобы определить, какую версию и тип Вы должны использовать, см. раздел 2.1.1.

  3. Загрузите дистрибутив, который Вы хотите установить .

    Для инструкций см. раздел 2.1.2. Чтобы проверить целостность, используйте инструкции в разделе 2.1.3.

  4. Установите дистрибутив.

    Чтобы установить MySQL из двоичного дистрибутива, используйте инструкции в разделе 2.2.

    Чтобы установить MySQL из исходного дистрибутива или текущего исходного дерева развития, используйте инструкции в разделе 2.8.

  5. Выполните любую необходимую постустановку.

    После установки MySQL см. раздел 2.9 для информации об удостоверении, что сервер MySQL работает должным образом. Также обратитесь к информации, предоставленной в разделе 2.9.4. Этот раздел описывает, как обеспечить начальную учетную запись пользователя MySQL root у которой нет никакого пароля, пока Вы не назначите его.

  6. Если Вы хотите выполнить эталонные тесты MySQL, поддержка Perl MySQL должна быть доступной. См. раздел 2.11.

Инструкции для того, чтобы установить MySQL на различных платформах и окружающих средах доступны:

  • Unix, Linux, FreeBSD

    Для инструкций по установке MySQL на большинстве платформ Linux и Unix, используя двоичный дистрибутив (например, .tar.gz), см. раздел 2.2.

    Для информации о создании MySQL полностью из дистрибутивов исходного кода или репозитариев исходного кода см. раздел 2.8.

    Для определенной справки о платформе см. соответствующий раздел платформы:

  • Microsoft Windows

    Для инструкций по установке MySQL на Microsoft Windows, используя MySQL Installer или Zip-файл см. раздел 2.3.

    Для информации об управлении экземплярами MySQL см. раздел 2.3.4.

    Для деталей и инструкций по созданию MySQL из исходного кода с использованием Microsoft Visual Studio см. раздел 2.8.

  • OS X

    Для установки на OS X, включая использование двоичного пакета и формата PKG см. раздел 2.4.

    Для информации об использовании OS X Launch Daemon, чтобы автоматически запустить и остановить MySQL см. раздел 2.4.3.

    Для информации о MySQL Preference Pane см. раздел 2.4.4.

2.1. Общее руководство по установке

Следующие разделы содержат информацию, необходимую, чтобы выбрать, загрузить и проверить Ваш дистрибутив. Инструкции в более поздних разделах главы описывают, как установить дистрибутив, который Вы выбираете. Для двоичных дистрибутивов см. инструкции в разделе 2.2 или соответствующем разделе для Вашей платформы при наличии. Чтобы создать MySQL из исходных текстов, используйте инструкции в разделе 2.8.

2.1.1. Какую версию MySQL и дистрибутив установить

MySQL доступен на многих операционных системах и платформах. Для информации о платформах, поддержанных GA releases MySQL см. http://www.mysql.com/support/supportedplatforms/database.html . Для версий развития MySQL доступных для многих платформ, см. http://dev.mysql.com/downloads/mysql/8.0.html. Чтобы узнать больше о поддержке MySQL, см. http://www.mysql.com/support/.

Готовясь устанавливать MySQL, решите, который формат дистрибутива и версию использовать.

Во-первых, решите, установить ли выпуск развития или General Availability (GA). Выпуски развития имеют новейшие особенности, но не рекомендуются для производственного использования. Выпуски GA, также названные устойчивыми выпусками, предназначаются для производственного использования. Мы рекомендуем использовать новый выпуск GA.

Схема именования в MySQL 8.0 применяет имена, которые состоят из трех чисел и дополнительного суффикса: например, mysql-8.0.0-dmr. Числа в пределах имени выпуска интерпретируются следующим образом:

  • Первый номер (8) главный номер версии.

  • Второй номер (0) младший номер версии. Взятые вместе главный и младший номера составляют серийный номер выпуска. Серийный номер описывает устойчивый набор функций.
  • Третий номер (0) номер версии в пределах ряда выпуска. Это постепенно увеличено для каждого нового выпуска с исправлением ошибок. В большинстве случаев новая версия в пределах ряда это лучший выбор.

Имена выпуска могут также включать суффикс, чтобы указать на уровень стабильности выпуска. Выпуски в пределах ряда прогрессируют через ряд суффиксов, чтобы указать, как уровень стабильности улучшается. Возможные суффиксы:

  • dmr указывает на выпуск развития (DMR). Развитие MySQL использует модель меток, в которой каждая метка вводит маленькое подмножество полностью проверенных особенностей. От одной метки до следующих особенности могут измениться или даже быть удалены, основываясь на обратной связи, обеспеченной членами сообщества, которые пробуют эти выпуски. Особенности в пределах выпусков, имеют качество подготовки производства.

  • rc указывает на Release Candidate (RC). Они устойчивы, завершив все внутреннее тестирование MySQL. Новые особенности могут все еще быть введены в RC-выпуски, но внимание обращено к исправлению ошибок, чтобы стабилизировать особенности, введенные ранее в пределах ряда.
  • Отсутствие суффикса указывает на General Availability (GA) Production. Выпуски GA устойчивы, успешно пройдя через более ранние этапы выпуска, и, как полагают, являются надежными, свободными от серьезных ошибок, и подходящими для использования в производственных системах.

Развитие в пределах ряда начинается с выпусков DMR, сопровождаемых RC, и наконец достигает выпусков состояния GA.

После выбора, которую версию MySQL установить, решите, который формат дистрибутива установить для Вашей операционной системы. Для большинства случаев использования подходит двоичный дистрибутив. Двоичные дистрибутивы доступны в родном формате для многих платформ, как пакеты RPM для Linux или DMG для OS X. Дистрибутивы также доступны в большем количестве форматов, таких как архивы Zip или сжатые файлы tar. В Windows Вы можете использовать MySQL Installer, чтобы установить двоичный дистрибутив.

При некоторых обстоятельствах может быть предпочтительно установить MySQL из исходного дистрибутива:

  • Вы хотите установить MySQL в некотором явном местоположении. Стандартные двоичные дистрибутивы готовы работать в любом местоположении установки, но Вы могли бы потребовать больше гибкости в размещении компонентов MySQL, где Вы хотите.

  • Вы хотите сконфигурировать mysqld с особенностями, которые не могли бы быть включены в стандартные двоичные дистрибутива. Вот список наиболее распространенных дополнительных опций, используемых, чтобы гарантировать доступность:

    Для дополнительной информации см. раздел 2.8.4.

  • Вы хотите сконфигурировать mysqld без некоторых особенностей, которые включены в стандартные двоичные дистрибутивы.
  • Вы хотите изменить C и C++ код, который составляет MySQL. С этой целью получите исходный дистрибутив.
  • Исходные дистрибутивы содержат больше тестов и примеров, чем двоичные.

2.1.2. Как получить MySQL

Проверьте нашу страницу загрузок http://dev.mysql.com/downloads/ для информации о текущей версии MySQL и для того, чтобы загрузить инструкции. Полный современный список зеркал сайта есть на http://dev.mysql.com/downloads/mirrors.html. Вы можете также найти там информацию о создании зеркала сайта MySQL и том, как сообщить о плохом или устаревшем зеркале.

Для RPM Linux, которые используют Yum в качестве их системы управления пакетами, MySQL может быть установлен, используя MySQL Yum Repository. См. раздел 2.5.1.

Для многих Debian Linux, таких как Ubuntu, MySQL может быть установлен, используя MySQL APT Repository. См. раздел 2.5.2.

Для SUSE Linux Enterprise Server (SLES) MySQL может быть установлен, используя MySQL SLES Repository. См. раздел 2.5.3.

Чтобы получить исходные тексты см. раздел 2.8.3.

2.1.3. Подтверждение целостности пакета, используя контрольные суммы MD5 или GnuPG

После загрузки пакета MySQL, который удовлетворяет Вашим потребностям прежде, чем попытаться установить его, удостоверьтесь, что он не поврежден. Есть три средства проверки целостности:

  • Контрольные суммы MD5.

  • Использование подписей GnuPG, GNU Privacy Guard.
  • Для пакетов RPM встроенный механизм контроля соблюдения целостности RPM.

Следующие разделы описывают, как использовать эти методы.

Если Вы замечаете, что контрольная сумма MD5 или подпись GPG не соответствуют, сначала попытайтесь загрузить соответствующий пакет еще раз, возможно, с другого зеркала сайта.

2.1.3.1. Подтверждение контрольной суммы MD5

После того, как Вы загрузили пакет MySQL, Вы должны удостовериться, что его контрольная сумма MD5 соответствует обеспеченной на странице загрузки MySQL. У каждого пакета есть отдельная контрольная сумма, что Вы можете проверить для пакета, что загружали. Правильные контрольные суммы MD5 перечислены на странице загрузок для каждого продукта MySQL, сравните это с контрольной суммой MD5 файла, который Вы загружаете.

Каждая операционная система и установка предлагают свою собственную версию инструментов для того, чтобы проверить контрольную сумму MD5. Как правило, команду называют md5sum или это можно назвать md5, некоторые операционные системы не поставляют это вообще. В Linux это часть пакета GNU Text Utilities, который доступен для широкого диапазона платформ. Вы можете также загрузить исходный код с http://www.gnu.org/software/textutils/. Если Вы устанавливали OpenSSL, можете использовать команду openssl md5 package_name . Windows md5 доступна с http://www.fourmilab.ch/md5/. winMd5Sum графический инструмент проверки MD5, который может быть получен из http://www.nullriver.com/index/products/winmd5sum. Наши примеры для Microsoft Windows используют имя md5.exe.

Linux и Microsoft Windows:

shell> md5sum mysql-standard-8.0.1-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945mysql-standard-8.0.1-linux-i686.tar.gz

shell> md5.exe mysql-installer-community-8.0.1.msi
aaab65abbec64d5e907dcd41b8699945mysql-installer-community-8.0.1.msi

Вы должны проверить, что получающаяся контрольная сумма (строка шестнадцатеричных цифр) соответствует выведенной на экран на странице загрузки сразу после соответствующего пакета.

Удостоверьтесь, что проверили контрольную сумму архивного файла (например, .zip, .tar.gz или .msi), а не файлов, которые содержатся в архиве. Другими словами, проверьте файл прежде, чем извлечь его содержание.

2.1.3.2. Проверка подписи, используя GnuPG

Другой метод подтверждения целостности и подлинности пакета должен использовать цифровые подписи. Это более надежно, чем использование контрольных сумм MD5, но требует большей работы.

Мы подписываем загружаемые пакеты MySQL с помощью GnuPG (GNU Privacy Guard). GnuPG это Open Source альтернатива известной Pretty Good Privacy (PGP) by Phil Zimmermann. См. http://www.gnupg.org/ для получения дополнительной информации о GnuPG и том, как получить и установить его на Вашей системе. Большинство дистрибутивов Linux идут с GnuPG по умолчанию. Для получения дополнительной информации о GnuPG см. http://www.openpgp.org/.

Чтобы проверить подпись для определенного пакета, Вы сначала должны получить копию публичного ключа GPG, который Вы можете загрузить с http://pgp.mit.edu/. Ключ, который Вы хотите получить, называется mysql-build@oss.oracle.com. Альтернативно, Вы можете скопировать и вставить ключ непосредственно из следующего текста:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.9 (SunOS)

mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q2TXlTUUwgUmVs
ZWFzZSBFbmdpbmVlcmluZyA8bXlzcWwtYnVpbGRAb3NzLm9yYWNsZS5jb20+iGkE
ExECACkCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAIZAQUCUwHUZgUJGmbLywAK
CRCMcY07UHLh9V+DAKCjS1gGwgVI/eut+5L+l2v3ybl+ZgCcD7ZoA341HtoroV3U
6xRD09fUgeq0O015U1FMIFBhY2thZ2Ugc2lnbmluZyBrZXkgKHd3dy5teXNxbC5j
b20pIDxidWlsZEBteXNxbC5jb20+iG8EMBECAC8FAk53Pa0oHSBidWlsZEBteXNx
bC5jb20gd2lsbCBzdG9wIHdvcmtpbmcgc29vbgAKCRCMcY07UHLh9bU9AJ9xDK0o
xJFL9vTl9OSZC4lX0K9AzwCcCrS9cnJyz79eaRjL0s2r/CcljdyIZQQTEQIAHQUC
R6yUtAUJDTBYqAULBwoDBAMVAwIDFgIBAheAABIJEIxxjTtQcuH1B2VHUEcAAQGu
kgCffz4GUEjzXkOi71VcwgCxASTgbe0An34LPr1j9fCbrXWXO14msIADfb5piEwE
ExECAAwFAj4+o9EFgwlmALsACgkQSVDhKrJykfIk4QCfWbEeKN+3TRspe+5xKj+k
QJSammIAnjUz0xFWPlVx0f8o38qNG1bq0cU9iEwEExECAAwFAj5CggMFgwliIokA
CgkQtvXNTca6JD+WkQCgiGmnoGjMojynp5ppvMXkyUkfnykAoK79E6h8rwkSDZou
iz7nMRisH8uyiEYEEBECAAYFAj+s468ACgkQr8UjSHiDdA/2lgCg21IhIMMABTYd
p/IBiUsP/JQLiEoAnRzMywEtujQz/E9ono7H1DkebDa4iEYEEBECAAYFAj+0Q3cA
CgkQhZavqzBzTmbGwwCdFqD1frViC7WRt8GKoOS7hzNN32kAnirlbwpnT7a6NOsQ
83nk11a2dePhiEYEEBECAAYFAkNbs+oACgkQi9gubzC5S1x/dACdELKoXQKkwJN0
gZztsM7kjsIgyFMAnRRMbHQ7V39XC90OIpaPjk3a01tgiEYEExECAAYFAkTxMyYA
CgkQ9knE9GCTUwwKcQCgibak/SwhxWH1ijRhgYCo5GtM4vcAnAhtzL57wcw1Kg1X
m7nVGetUqJ7fiEwEEBECAAwFAkGBywEFgwYi2YsACgkQGFnQH2d7oexCjQCcD8sJ
NDc/mS8m8OGDUOx9VMWcnGkAnj1YWOD+Qhxo3mI/Ul9oEAhNkjcfiEwEEBECAAwF
AkGByzQFgwYi2VgACgkQgcL36+ITtpIiIwCdFVNVUB8xe8mFXoPm4d9Z54PTjpMA
niSPA/ZsfJ3oOMLKar4F0QPPrdrGiEwEEBECAAwFAkGBy2IFgwYi2SoACgkQa3Ds
2V3D9HMJqgCbBYzr5GPXOXgP88jKzmdbjweqXeEAnRss4G2G/3qD7uhTL1SPT1SH
jWUXiEwEEBECAAwFAkHQkyQFgwXUEWgACgkQfSXKCsEpp8JiVQCghvWvkPqowsw8
w7WSseTcw1tflvkAni+vLHl/DqIly0LkZYn5jzK1dpvfiEwEEBECAAwFAkIrW7oF
gwV5SNIACgkQ5hukiRXruavzEwCgkzL5QkLSypcw9LGHcFSx1ya0VL4An35nXkum
g6cCJ1NP8r2I4NcZWIrqiEwEEhECAAwFAkAqWToFgwd6S1IACgkQPKEfNJT6+GEm
XACcD+A53A5OGM7w750W11ukq4iZ9ckAnRMvndAqn3YTOxxlLPj2UPZiSgSqiEwE
EhECAAwFAkA9+roFgwdmqdIACgkQ8tdcY+OcZZyy3wCgtDcwlaq20w0cNuXFLLNe
EUaFFTwAni6RHN80moSVAdDTRkzZacJU3M5QiEwEEhECAAwFAkEOCoQFgwaWmggA
CgkQOcor9D1qil/83QCeITZ9wIo7XAMjC6y4ZWUL4m+edZsAoMOhRIRi42fmrNFu
vNZbnMGej81viEwEEhECAAwFAkKApTQFgwUj/1gACgkQBA3AhXyDn6jjJACcD1A4
UtXk84J13JQyoH9+dy24714Aniwlsso/9ndICJOkqs2j5dlHFq6oiEwEExECAAwF
Aj5NTYQFgwlXVwgACgkQLbt2v63UyTMFDACglT5G5NVKf5Mj65bFSlPzb92zk2QA
n1uc2h19/IwwrsbIyK/9POJ+JMP7iEwEExECAAwFAkHXgHYFgwXNJBYACgkQZu/b
yM2C/T4/vACfXe67xiSHB80wkmFZ2krb+oz/gBAAnjR2ucpbaonkQQgnC3GnBqmC
vNaJiEwEExECAAwFAkIYgQ4FgwWMI34ACgkQdsEDHKIxbqGg7gCfQi2HcrHn+yLF
uNlH1oSOh48ZM0oAn3hKV0uIRJphonHaUYiUP1ttWgdBiGUEExECAB0FCwcKAwQD
FQMCAxYCAQIXgAUCS3AvygUJEPPzpwASB2VHUEcAAQEJEIxxjTtQcuH1sNsAniYp
YBGqy/HhMnw3WE8kXahOOR5KAJ4xUmWPGYP4l3hKxyNK9OAUbpDVYIh7BDARAgA7
BQJCdzX1NB0AT29wcy4uLiBzaG91bGQgaGF2ZSBiZWVuIGxvY2FsISBJJ20gKnNv
KiBzdHVwaWQuLi4ACgkQOcor9D1qil/vRwCdFo08f66oKLiuEAqzlf9iDlPozEEA
n2EgvCYLCCHjfGosrkrU3WK5NFVgiI8EMBECAE8FAkVvAL9IHQBTaG91bGQgaGF2
ZSBiZWVuIGEgbG9jYWwgc2lnbmF0dXJlLCBvciBzb21ldGhpbmcgLSBXVEYgd2Fz
IEkgdGhpbmtpbmc/AAoJEDnKK/Q9aopfoPsAn3BVqKOalJeF0xPSvLR90PsRlnmG
AJ44oisY7Tl3NJbPgZal8W32fbqgbIkCIgQQAQIADAUCQYHLhQWDBiLZBwAKCRCq
4+bOZqFEaKgvEACCErnaHGyUYa0wETjj6DLEXsqeOiXad4i9aBQxnD35GUgcFofC
/nCY4XcnCMMEnmdQ9ofUuU3OBJ6BNJIbEusAabgLooebP/3KEaiCIiyhHYU5jarp
ZAh+Zopgs3Oc11mQ1tIaS69iJxrGTLodkAsAJAeEUwTPq9fHFFzC1eGBysoyFWg4
bIjz/zClI+qyTbFA5g6tRoiXTo8ko7QhY2AA5UGEg+83Hdb6akC04Z2QRErxKAqr
phHzj8XpjVOsQAdAi/qVKQeNKROlJ+iq6+YesmcWGfzeb87dGNweVFDJIGA0qY27
pTb2lExYjsRFN4Cb13NfodAbMTOxcAWZ7jAPCxAPlHUG++mHMrhQXEToZnBFE4nb
nC7vOBNgWdjUgXcpkUCkop4b17BFpR+k8ZtYLSS8p2LLz4uAeCcSm2/msJxT7rC/
FvoH8428oHincqs2ICo9zO/Ud4HmmO0O+SsZdVKIIjinGyOVWb4OOzkAlnnhEZ3o
6hAHcREIsBgPwEYVTj/9ZdC0AO44Nj9cU7awaqgtrnwwfr/o4V2gl8bLSkltZU27
/29HeuOeFGjlFe0YrDd/aRNsxbyb2O28H4sG1CVZmC5uK1iQBDiSyA7Q0bbdofCW
oQzm5twlpKWnY8Oe0ub9XP5p/sVfck4FceWFHwv+/PC9RzSl33lQ6vM2wIkCIgQT
AQIADAUCQp8KHAWDBQWacAAKCRDYwgoJWiRXzyE+D/9uc7z6fIsalfOYoLN60ajA
bQbI/uRKBFugyZ5RoaItusn9Z2rAtn61WrFhu4uCSJtFN1ny2RERg40f56pTghKr
D+YEt+Nze6+FKQ5AbGIdFsR/2bUk+ZZRSt83e14Lcb6ii/fJfzkoIox9ltkifQxq
Y7Tvk4noKu4oLSc8O1Wsfc/y0B9sYUUCmUfcnq58DEmGie9ovUslmyt5NPnveXxp
5UeaRc5Rqt9tK2B4A+7/cqENrdZJbAMSunt2+2fkYiRunAFPKPBdJBsY1sxeL/A9
aKe0viKEXQdAWqdNZKNCi8rd/oOP99/9lMbFudAbX6nL2DSb1OG2Z7NWEqgIAzjm
pwYYPCKeVz5Q8R+if9/fe5+STY/55OaI33fJ2H3v+U435VjYqbrerWe36xJItcJe
qUzW71fQtXi1CTEl3w2ch7VF5oj/QyjabLnAlHgSlkSi6p7By5C2MnbCHlCfPnIi
nPhFoRcRGPjJe9nFwGs+QblvS/Chzc2WX3s/2SWm4gEUKRX4zsAJ5ocyfa/vkxCk
SxK/erWlCPf/J1T70+i5waXDN/E3enSet/WL7h94pQKpjz8OdGL4JSBHuAVGA+a+
dknqnPF0KMKLhjrgV+L7O84FhbmAP7PXm3xmiMPriXf+el5fZZequQoIagf8rdRH
HhRJxQgI0HNknkaOqs8dtrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWs
EN/lxaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLm
RDRiRjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hk
AWzE7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkb
f4fmLe11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHb
uE5p/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+
Lwqqa8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1Z
aSafanFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGo
TbOWI39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev4
2LmuQT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkK
Ht926s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUO
etdZWhe70YGNPw1yjWJT1IhUBBgRAgAMBQJOdz3tBQkT+wG4ABIHZUdQRwABAQkQ
jHGNO1By4fUUmwCbBYr2+bBEn/L2BOcnw9Z/QFWuhRMAoKVgCFm5fadQ3Afi+UQl
AcOphrnJ
=443I
-----END PGP PUBLIC KEY BLOCK-----

Чтобы импортировать ключ в Ваш личный публичный брелок GPG, используйте gpg --import. Например, если Вы сохранили ключ в файле mysql_pubkey.asc, команда импорта похожа на это:

shell> gpg --import mysql_pubkey.asc
gpg: key 5072E1F5: public key "MySQL Release Engineering
<mysql-build@oss.oracle.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no ultimately trusted keys found

Вы можете также загрузить ключ с общественного keyserver с использованием id открытого ключа 5072E1F5:

shell> gpg --recv-keys 5072E1F5
gpg: requesting key 5072E1F5 from hkp server keys.gnupg.net
gpg: key 5072E1F5: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
1 new user ID
gpg: key 5072E1F5: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
53 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: new user IDs: 1
gpg: new signatures: 53

Если Вы хотите импортировать ключ в свою конфигурацию RPM, чтобы утвердить пакеты установки RPM, Вы должны быть в состоянии импортировать ключ непосредственно:

shell> rpm --import mysql_pubkey.asc

Если Вы испытываете проблемы или требуете RPM-специфичную информацию, см. раздел 2.1.3.4.

После того, как Вы загрузили и импортировали ключ, загрузите Ваш желаемый пакет MySQL и соответствующую подпись, которая также доступна со страницы загрузки. У файла подписи есть то же самое имя, как у файла дистрибутива с расширением .asc, как показано примерами в следующей таблице.

Таблица 2.1. Пакет MySQL и файлы подписи для исходных файлов

Тип файлаИмя файла
Файл дистрибутива mysql-standard-8.0.1-linux-i686.tar.gz
Файл подписи mysql-standard-8.0.1-linux-i686.tar.gz.asc

Удостоверьтесь, что оба файла хранятся в том же самом каталоге и затем выполните следующую команду, чтобы проверить подпись для файла дистрибутива:

shell> gpg --verify package_name.asc

Если загруженный пакет будет допустим, то Вы будете видеть "Good signature" подобно:

shell> gpg --verify mysql-standard-8.0.1-linux-i686.tar.gz.asc
gpg: Signature made Tue 01 Feb 2011 02:38:30 AM CST using DSA key ID 5072E1F5
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"

Сообщение Good signature указывает, что подпись файла допустима. Но Вы могли бы также видеть предупреждения:

shell> gpg --verify mysql-standard-8.0.1-linux-i686.tar.gz.asc
gpg: Signature made Wed 23 Jan 2013 02:25:45 AM PST using DSA key ID 5072E1F5
gpg: checking the trustdb
gpg: no ultimately trusted keys found
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:There is no indication that the signature belongs to the owner.
Primary key fingerprint: A4A9 4068 76FC BD3C 456770C8 8C71 8D3B 5072 E1F5

Это нормально, поскольку они зависят от Вашей установки и конфигурации. Вот объяснения этих предупреждений:

  • gpg: no ultimately trusted keys found: Это означает, что определенному ключу "в конечном счете не доверяете " Вы или Ваша сеть доверия, что допустимо в целях проверки подписи файла.

  • WARNING: This key is not certified with a trusted signature! There is no indication that the signature belongs to the owner.: Это обращается к Вашему уровню доверия нашему открытому ключу. Это личное решение. Идеально, разработчик MySQL вручил бы Вам ключ лично, но обычно Вы загружаете его. В загрузку вмешались? Вероятно, нет, но это решение Ваше дело. Установка сети доверия является одним методом для того, чтобы доверять им.

См. документацию GPG для получения дополнительной информации о том, как работать с открытыми ключами.

2.1.3.3. Проверка подписи, используя Gpg4win для Windows

Раздел 2.1.3.2 описывает, как проверить загрузки MySQL, используя GPG. То руководство также относится к Microsoft Windows, но другая опция должна использовать инструмент GUI Gpg4win. Вы можете использовать различный инструмент, но наши примеры основаны на Gpg4win, и используют его GUI Kleopatra.

Загрузите и установите Gpg4win, затем загрузите Kleopatra. Диалог должен выглядеть подобным образом:

Рис. 2.1. Экран после загрузки Kleopatra

Затем, добавьте сертификат MySQL Release Engineering. Сделайте это, щелкая File, Lookup Certificates on Server . Введите "Mysql Release Engineering" в поле поиска и нажмите Search.

Рис. 2.2. Поиск сертификата MySQL Release Engineering

Выберите сертификат "MySQL Release Engineering". Fingerprint и Key-ID должны быть "5072E1F5", или выберите Details..., чтобы подтвердить, что сертификат допустим. Теперь импортируйте это, щелкая Import. Диалог импорта будет выведен на экран, в нем выберите Okay, и этот сертификат будет теперь перечислен под вкладкой Imported Certificates.

Затем, сконфигурируйте трастовый уровень для нашего сертификата. Выберите сертификат, затем из главного меню выберите Certificates, Change Owner Trust.... Мы предлагаем выбрать I believe checks are very accurate для нашего сертификата, поскольку иначе Вы не в состоянии проверить нашу подпись. Выберите I believe checks are very accurate и OK.

Рис. 2.3. Изменение трастового уровня

Затем, проверьте загруженный файл пакета MySQL. Это требует файлов для упакованного файла и подписи. У файла подписи должно быть то же самое имя, как упакованного файла, но с расширением .asc, как показано примером в следующей таблице. Подпись указана на странице загрузок для каждого продукта MySQL. Вы должны создать файл .asc с этой подписью.

Таблица 2.2. Файлы подписи для установщика MySQL для Microsoft Windows

Тип файлаИмя файла
Файл дистрибутива mysql-installer-community-8.0.1.msi
Файл подписи mysql-installer-community-8.0.1.msi.asc

Удостоверьтесь, что оба файла хранятся в том же самом каталоге и затем выполните следующую команду, чтобы проверить подпись для файла дистрибутива.

Рис. 2.4. Диалог Decrypt/Verify Files

Нажмите Decrypt/Verify, чтобы проверить файл. Два наиболее распространенных результата будут похожи на следующий, и хотя желтое предупреждение выглядит проблематичным, следующее показывает, что проверка файла прошла с успехом. Вы можете теперь выполнить этот установщик.

Рис. 2.5. Decrypt/Verify Results: Good

Видя красное сообщение "The signature is bad" знайте, что файл недопустим. Не выполняйте файл MSI, если Вы видите эту ошибку.

Рис. 2.6. Decrypt/Verify Results: Bad

Раздел 2.1.3.2 объясняет, почему Вы, вероятно, не видите зеленый цвет результата Good signature.

2.1.3.4. Проверка подписи, используя RPM

Для пакетов RPM нет никакой отдельной подписи. У пакетов RPM есть встроенная подпись GPG и контрольная сумма MD5. Вы можете проверить пакет, выполняя следующую команду:

shell> rpm --checksig package_name.rpm

Пример:

shell> rpm --checksig MySQL-server-8.0.1-0.linux_glibc2.5.i386.rpm
MySQL-server-8.0.1-0.linux_glibc2.5.i386.rpm: md5 gpg OK

Если Вы используете RPM 4.1, и он жалуется на (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5), даже при том, что Вы импортировали публичный ключ MySQL в Ваш собственный брелок GPG, Вы должны импортировать ключ в брелок RPM сначала. Чтобы импортировать открытый ключ MySQL в брелок RPM, сначала получите ключ, затем используйте rpm --import, чтобы импортировать ключ. Например:

shell> gpg --export -a 5072e1f5 > 5072e1f5.asc
shell> rpm --import 5072e1f5.asc

Альтернативно, rpm также поддерживает загрузку ключа непосредственно с URL, и Вы можете использовать эту страницу руководства:

shell> rpm --import http://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html

Если Вы должны получить открытый ключ MySQL, см. раздел 2.1.3.2.

2.1.4. Типы установки

Типы установки отличаются для различных типов дистрибутива (например, родные пакеты, бинарные файлы и исходные тексты), что может привести к беспорядку, управляя различными системами или используя различные источники установки. Отдельные разметки даны в соответствующем типе установки или платформе, как описано после.

2.1.5. Определенные для компилятора характеристики

В некоторых случаях, компилятор, используемый, чтобы создать MySQL, затрагивает особенности, доступные для использования. Примечания в этом разделе касаются двоичных дистрибутивов, обеспеченных Oracle Corporation или того, что Вы собираете из исходных текстов.

icc (Intel C++ Compiler) Builds

У сервера, созданного с icc есть эти характеристики:

  • Поддержка SSL не включена.

2.2. Установка MySQL на Unix/Linux, используя двоичные файлы

Oracle обеспечивает ряд двоичных дистрибутивов MySQL. Они включают двоичные дистрибутивы в форме сжатых файлов tar (файлы с расширением .tar.gz) для многих платформ, и двоичные модули в определенном для платформы формате пакета для выбранных платформ.

Этот раздел покрывает установку MySQL из сжатого дистрибутива tar. Для других определенных для платформы форматов пакета см. другие определенные для платформы разделы. Например, для дистрибутивов Windows см. раздел 2.3.

У сжатых дистрибутивов MySQL tar есть названия формы mysql-VERSION-OS.tar.gz, где VERSION число (например, 8.0.1), а OS указывает на тип операционной системы, для которой предназначен дистрибутив (например, pc-linux-i686 или winx64).

Если Вы ранее установили MySQL, используя Вашу систему управления пакетами операционной системы, такую как yum или apt-get, Вы можете получить проблемы, используя двоичный дистрибутив. Удостоверьтесь, что Ваша предыдущая установка MySQL была удалена полностью (используя Вашу систему управления пакетами), и что любые дополнительные файлы, такие как старые версии Ваших файлов с данными, были также удалены. Вы должны также проверить на конфигурационные файлы, такие как /etc/my.cnf или каталог /etc/mysql и удалить их.

Для информации о замене имеющих отношение к третьей стороне пакетов официальными пакетами MySQL, см. связанные руководства по Apt или Yum.

У MySQL есть зависимость от библиотеки libaio. Инициализация каталога данных и последующие шаги запуска сервера потерпят неудачу, если эта библиотека не будет установлена локально. В случае необходимости, установите это используя соответствующий диспетчер пакетов. Например, на Yum-системах:

shell> yum search libaio  # search for info
shell> yum install libaio # install library

На APT-системах:

shell> apt-cache search libaio # search for info
shell> apt-get install libaio1 # install library

Если Вы сталкиваетесь с проблемами и потребностью зарегистрировать отчет об ошибках, пожалуйста, используйте инструкции в разделе 1.7.

На Unix, чтобы установить сжатый двоичный дистрибутив tar, распакуйте это в местоположение установки, которое Вы выбираете (как правило, /usr/local/mysql). Это создает каталоги, показанные в следующей таблице.

Таблица 2.3. Расположение установки MySQL для двоичного пакета в Unix/Linux

КаталогСодержание
bin, scripts Сервер mysqld , клиент и утилиты
data Файлы системного журнала, базы данных
docs Руководство MySQL в формате Info
manUnix manual pages
include Включаемые (заголовочные) файлы
libБиблиотеки
shareРазные файлы поддержки, включая сообщения об ошибках, типовые конфигурационные файлы, SQL для установки базы данных

Версии отладки mysqld доступны как mysqld-debug. Чтобы собрать Вашу собственную версию отладки MySQL из исходного дистрибутива, используйте соответствующие параметры конфигурации. См. раздел 2.8.

Чтобы установить и использовать двоичный дистрибутив MySQL, последовательность команд похожа на это:

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 750 mysql-files
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data mysql-files
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

Эта процедура предполагает, что Вы имеете доступ root (administrator) к Вашей системе. Альтернативно, Вы можете выполнить каждую команду, используя команду sudo (Linux) или pfexec (OpenSolaris).

Каталог mysql-files обеспечивает удобное местоположение, чтобы использовать в качестве значения системной переменной secure_file_priv, которая ограничивает операции импорта/экспорта определенным каталогом. См. раздел 6.1.5.

Создайте пользователя и группу mysql

Если у Вашей системы нет пользователя и группы, чтобы использовать для того, чтобы выполнить mysqld , Вы, возможно, должны их создать. Следующие команды добавляют группу mysql и пользователя mysql. Вы могли бы хотеть назвать пользователя и группу как-то иначе вместо mysql. Если это так, замените соответствующее имя в следующих инструкциях. Синтаксис для useradd и groupadd может немного отличаться в разных версиях Unix, или у них могут быть различные имена, такие как adduser и addgroup .

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql

Поскольку пользователь требуется только в целях собственности, а не входа в систему, useradd использует опции -r и -s /bin/false, чтобы создать пользователя, у которого нет разрешений входа в систему. Опустите эти опции, если Ваш useradd не поддерживает их.

Получите и распакуйте дистрибутив

Выберите каталог, в соответствии с которым Вы хотите распаковать дистрибутив и перейдите в него. Пример здесь распаковывает дистрибутив в /usr/local. Инструкции, поэтому, предполагают, что у Вас есть разрешение создавать файлы и каталоги в /usr/local. Если этот каталог защищен, Вы должны выполнить установку как root.

shell> cd /usr/local

Получите файл дистрибутива, используя инструкции в разделе 2.1.2. Для данного выпуска двоичные дистрибутивы для всех платформ созданы из того же самого исходного дистрибутива MySQL.

Распакуйте дистрибутив, который создает каталог установки. tar может расжать и распаковать дистрибутив, если имеет поддержку опции z:

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

Команда tar создает каталог mysql-VERSION-OS.

Чтобы установить MySQL из сжатого дистрибутива tar , у Вашей системы должна быть утилита GNU gunzip, чтобы расжать, и умная версия tar, чтобы распаковать это. Если Ваша программа tar поддерживает опцию z, она может расжать и распаковать файл.

GNU tar, как известно, работает. Стандартный tar, предоставленный некоторыми операционными системами, не в состоянии распаковать длинные имена файла. Вы должны загрузить и установить GNU tar или, при наличии, использовать предварительно установленную версию GNU tar. Обычно это доступно как gnutar, gtar, или tar в пределах каталога GNU или Free Software в /usr/sfw/bin или /usr/local/bin. GNU tar доступен на http://www.gnu.org/software/tar/.

Если Ваш tar не имеет поддержки опции z, используйте gunzip, чтобы расжать дистрибутив и tar, чтобы распаковать это. Замените предыдущую команду tar следующей альтернативной командой, чтобы расжать и извлечь дистрибутив:

shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -

Затем создайте символическую ссылку к каталогу установки, создаваемому tar:

shell> ln -s full-path-to-mysql-VERSION-OS mysql

Команда ln делает символическую ссылку к каталогу установки. Это позволяет Вам обратиться более легко к этому как к /usr/local/mysql. Чтобы избежать необходимости ввода пути программ клиента всегда, когда Вы работаете с MySQL, Вы можете добавить /usr/local/mysql/bin в Вашу переменную PATH:

shell> export PATH=$PATH:/usr/local/mysql/bin

Выполните установку

Остаток процесса установки вовлекает собственность дистрибутива установки и разрешения на доступ, инициализацию каталога данных, запуск сервера MySQL и настройку конфигурационного файла. Для инструкций см. раздел 2.9.

2.3. Установка MySQL на Microsoft Windows

Есть несколько различных методов, чтобы установить MySQL на Microsoft Windows.

Простой метод установки

Самый простой и рекомендуемый метод это загрузить установщик MySQL для Windows и позволить ему устанавливать и конфигурировать все продукты MySQL на Вашей системе:

  • Загрузите MySQL Installer с http://dev.mysql.com/downloads/installer/ и выполните его.

    В отличие от стандартного установщика MySQL, меньшая версия "web-community" не связывает приложений MySQL, но загрузит продукты MySQL, которые Вы хотите устанавливать.

  • Выберите соответствующий Setup Type для своей системы. Как правило Вы выберете Developer Default, чтобы установить сервер MySQL и другие инструменты MySQL, связанные с развитием MySQL, а также полезные инструменты, такие как MySQL Workbench. Или выберите Custom, чтобы вручную выбрать желаемые продукты MySQL.

    Много версий сервера MySQL могут существовать на единственной системе. Вы можете выбрать одну или много версий.

  • Завершите процесс установки, следуя инструкциям мастера MySQL Install. Это установит несколько продуктов MySQL и запустит сервер MySQL.

  • MySQL установлен. Вы, вероятно, сконфигурировали MySQL как службу, которая автоматически запустит сервер MySQL каждый раз, когда Вы перезапускаете свою систему.

Вы, вероятно, также устанавливали другие полезные продукты MySQL, например, MySQL Workbench и MySQL Notifier на Вашей системе. Изучите главу 28, чтобы проверить Ваше новое соединение с сервером MySQL, и раздел 2.3.4, чтобы рассмотреть состояние соединения. По умолчанию, эти две программы автоматически запускаются после установки MySQL.

Этот процесс также устанавливает приложение MySQL Installer на Вашей системе, и позже Вы можете использовать MySQL Installer, чтобы обновить или реконфигурировать Ваши продукты MySQL.

Дополнительная информация об установке

MySQL доступен для Microsoft Windows для 32 и 64-битных версий. Для поддержанной информации о платформе Windows см. http://www.mysql.com/support/supportedplatforms/database.html .

Возможно выполнить MySQL как стандартное приложение или как службу Windows. При использовании службы Вы можете контролировать и управлять работой сервера через стандартные инструменты управления службами Windows. Для получения дополнительной информации см. раздел 2.3.5.8.

Вообще, Вы должны установить MySQL на Windows, используя учетную запись, которая имеет права администратора. Иначе, Вы можете столкнуться с проблемами с определенными операциями, такими как редактирование переменной окружения PATH или доступ к Service Control Manager . После того, как установлен, MySQL не должен быть выполнен, используя пользователя с привилегиями Администратора.

Для списка ограничений на использование MySQL на платформе Windows см. раздел C.10.5.

В дополнение к пакету сервера MySQL Вы, возможно, хотите, чтобы дополнительные компоненты использовали MySQL с Вашим приложением или средой проектирования. Они включают, но не ограничены:

  • Чтобы соединиться с сервером MySQL, используя ODBC, у Вас должен быть драйвер Connector/ODBC. Для получения дополнительной информации, включая установку и инструкции конфигурации см. MySQL Connector/ODBC Developer Guide.

    MySQL Installer установит и сконфигурирует Connector/ODBC для Вас.

  • Чтобы использовать сервер MySQL с приложениями .NET, у Вас должен быть драйвер Connector/Net. Для получения дополнительной информации, включая установку и инструкции конфигурации см. MySQL Connector/Net Developer Guide.

    MySQL Installer установит и сконфигурирует Connector/NET для Вас.

Дистрибутивы MySQL для Windows могут быть загружены с http://dev.mysql.com/downloads/. См. раздел 2.1.2.

MySQL for Windows доступен в нескольких форматах дистрибутива, детализированных здесь. Вообще говоря, Вы должны использовать MySQL Installer. Это содержит больше особенностей и продуктов MySQL, чем более старый MSI, более просто использовать, чем файл Zip, и Вы не нуждаетесь ни в каких дополнительных инструментах. MySQL Installer автоматически устанавливает сервер MySQL и дополнительные продукты MySQL, создает файл опций, запускает сервер и позволяет Вам создать учетные записи пользователей по умолчанию. Для получения дополнительной информации о выборе пакета см. раздел 2.3.2.

  • MySQL Installer включает сервер MySQL и дополнительные продукты MySQL, включая инструментальные средства MySQL Workbench, MySQL Notifier и MySQL для Excel. Установщик MySQL может также использоваться, чтобы обновить эти продукты в будущем.

    Для инструкций по установке с применением MySQL Installer см. раздел 2.3.3.

  • Стандартный двоичный дистрибутив (упакованный как файл Zip) содержит все необходимые файлы, которые Вы распаковываете в свое выбранное местоположение. Этот пакет содержит все файлы в полном пакете Windows MSI Installer, но не включает программу установки.

    Для инструкций по установке MySQL, используя файл Zip см. раздел 2.3.5.

  • Исходный дистрибутив содержит весь код и файлы поддержки для создания пакета, используя систему Visual Studio.

    Для инструкций по созданию MySQL из исходных текстов на Windows см. раздел 2.8.

Проблемы MySQL в Windows:

  • Большая табличная поддержка

    Если Вы нуждаетесь в таблицах с размером больше 4GB, устанавливайте MySQL на NTFS или более новой файловой системе. Не забывайте использовать MAX_ROWS и AVG_ROW_LENGTH, когда Вы составляете таблицы. См. раздел 14.1.15.

  • MySQL и проверка на вирусы

    Программное обеспечение поиска вирусов, такое как Norton/Symantec Anti-Virus на каталогах, содержащих данные MySQL и временные таблицы, может вызвать проблемы с точки зрения результата MySQL и с точки зрения программного обеспечения поиска вирусов, не распознающего содержание файлов. Это происходит из-за механизма снятия отпечатков, используемого программным обеспечением поиска вирусов, и путем, которым MySQL быстро обновляет различные файлы, которые могут быть идентифицированы как потенциальная угроза безопасности.

    После установки MySQL Server рекомендуется, чтобы Вы отключили поиск вирусов на основном каталоге (datadir), используемом, чтобы хранить Ваши табличные данные MySQL. Обычно есть система, встроенная в программное обеспечение поиска вирусов, чтобы позволить определенным каталогам быть проигнорированными.

    Кроме того, по умолчанию, MySQL создает временные файлы в стандартном временном каталоге Windows. Сконфигурируйте отдельный временный каталог для временных файлов MySQL и добавьте этот каталог к списку исключения поиска вирусов. Чтобы сделать это, добавьте параметр конфигурации tmpdir к Вашему конфигурационному файлу my.ini. Для получения дополнительной информации см. раздел 2.3.5.2.

2.3.1. Расположение установки MySQL на Microsoft Windows

Для MySQL 8.0 в Windows каталог установки по умолчанию C:\Program Files\MySQL\MySQL Server 8.0. Некоторые пользователи Windows предпочитают устанавливать в C:\mysql, каталог, который прежде использовался в качестве значения по умолчанию. Однако, расположение подкаталогов остается тем же самым.

Все файлы расположены в пределах этого родительского каталога, используя структуру, показанную в следующей таблице.

Таблица 2.4. Расположение установки MySQL для Microsoft Windows по умолчанию

Каталог СодержаниеПримечания
bin, scripts mysqld сервер, клиент и утилиты
%PROGRAMDATA%\MySQL\MySQL Server 8.0\ Файлы системного журнала, базы данных Системная переменная Windows %PROGRAMDATA% по умолчанию C:\ProgramData
examples Примеры программ и скриптов
include Файлы заголовков (включаемые)
libБиблиотеки
share Разные файлы поддержки, включая сообщения об ошибках, файлы набора символов, типовые конфигурационные файлы, SQL для установки базы данных

Если Вы устанавливаете MySQL, используя MySQL Installer, этот пакет создает и настраивает каталог данных, который установленный сервер будет использовать, а также создает каталог данных data в соответствии с каталогом установки. После того, как установка была выполнена, используя этот пакет, каталог данных может быть скопирован, чтобы настроить дополнительные экземпляры MySQL. См. раздел 6.7.

2.3.2. Выбор пакета установки

Для MySQL 8.0 есть много форматов пакета установки MySQL в Windows.

Program Database (PDB) (с расширением имени файла pdb) предоставляют информацию для того, чтобы отладить Вашу установку MySQL в случае проблемы. Эти файлы включены в дистрибутив ZIP Archive (но не MSI).

  • MySQL Installer: у этого пакета есть имя файла, подобное mysql-installer-community-8.0.1.0.msi или mysql-installer-commercial-8.0.1.0.msi, он использует MSI, чтобы автоматически установить сервер MySQL и другие продукты. Это загрузит и применит обновления для каждого из установленных продуктов. Это также конфигурирует дополнительные продукты.

    Установленные продукты конфигурируемы, это включает: документация с образцами и примерами, соединители (такие, как C, C++, J, NET и ODBC), MySQL Workbench, MySQL Notifier, MySQL for Excel, и MySQL Server с его компонентами.

    MySQL Installer не включает компоненты для отладки (включая файлы PDB). Они доступны в отдельном архиве Zip mysql-VERSION-winx64-debug-test.zip для 64-bit и mysql-VERSION-win32-debug-test.zip для 32-bit.

    MySQL Installer воздействует на поддержанные версии всего MySQL Windows (см. http://www.mysql.com/support/supportedplatforms/database.html ).

    Поскольку MySQL Installer не родной компонент Microsoft Windows и зависит от .NET, это не будет работать с минимальными опциями установки как "Server Core" Windows Server 2008.

    Для инструкций по установке с применением MySQL Installer см. раздел 2.3.3.

  • Архивы Noinstall: Эти пакеты содержат файлы, найденные в пакете полной установки, за исключением GUI. Этот формат не включает автоматизированный установщик и должен быть вручную установлен и сконфигурирован.

    Архивы noinstall разделены на два отдельных файла Zip. Основной пакет называют mysql-VERSION-winx64.zip для 64-bit и mysql-VERSION-win32.zip для 32-bit. Это содержит компоненты, которые должен был использовать MySQL на Вашей системе. Дополнительный испытательный набор MySQL, эталонный набор MySQL и компоненты отладочного набора (включая файлы PDB) находятся в отдельном файле Zip с именем mysql-VERSION-winx64-debug-test.zip для 64-bit и mysql-VERSION-win32-debug-test.zip для 32-bit.

MySQL Installer рекомендуется для большинства пользователей.

Ваш выбор пакета установки затрагивает процесс установки, за которым Вы должны следовать. Если Вы хотите использовать MySQL Installer, см. раздел 2.3.3. Если Вы хотите устанавливать архив Noinstall, см. раздел 2.3.5.

2.3.3. Установка MySQL на Microsoft Windows с помощью MySQL Installer

MySQL Installer это приложение, которое управляет продуктами MySQL на Microsoft Windows. Это устанавливает, обновляет, удаляет и конфигурирует продукты MySQL, и остается в системе ее собственным приложением. MySQL Installer доступен только для Microsoft Windows и включает GUI и интерфейс командной строки.

Поддержанные продукты MySQL включают:

  • MySQL Server (одна или много версий в той же самой системе)

  • MySQL Workbench
  • MySQL Connectors (.Net / Python / ODBC / Java / C / C++)
  • MySQL Notifier
  • MySQL for Excel
  • MySQL for Visual Studio
  • MySQL Utilities and MySQL Fabric
  • Образцы и примеры MySQL
  • Документация MySQL
  • MySQL Installer также установлен и остается в системе ее собственным приложением, которое используется, чтобы установить дополнительные продукты MySQL, а также обновить и сконфигурировать существующие продукты MySQL
  • Enterprise edition устанавливает версии Enterprise вышеупомянутых продуктов, а также включает MySQL Enterprise Backup и MySQL Enterprise Firewall

Типы пакета установщика

  • Full: все продукты MySQL (включая сервер MySQL). Размер файла составляет более чем 300 МБ, и у его имени есть форма mysql-installer-community-VERSION.N.msi, где VERSION версия MySQL Server, например, 5.7, а N число пакета, которое начинается с 0.

  • Web: содержит только MySQL Installer и конфигурационные файлы, загружает продукты MySQL, которые Вы хотите устанавливать. Размер этого файла составляет приблизительно 2 МБ, у названия файла есть форма mysql-installer-community-web-VERSION.N.msi, где VERSION версия MySQL Server, например, 5.7, а N число пакета, которое начинается с 0.
  • Updates: MySQL Installer может обновить себя, таким образом, дополнительная загрузка не требуется, чтобы обновить MySQL Installer.

Выпуски Installer

  • Community edition: Загружаемый с http://dev.mysql.com/downloads/installer/. Это устанавливает выпуск сообщества всех продуктов MySQL.

  • Commercial edition: Загружаемый с My Oracle Support (MOS) или https://edelivery.oracle.com/. Это устанавливает коммерческую версию всех продуктов MySQL, включая Workbench SE/EE, MySQL Enterprise Backup и MySQL Enterprise Firewall. Это также объединяется с Вашей учетной записью MOS.

MySQL Installer совместим с существующими ранее установками и добавляет их к своему списку установленных компонентов. В то время как стандартный MySQL Installer связан определенной версией сервера MySQL, единственный случай MySQL Installer может установить и управлять многими версиями сервера MySQL. Например, единственный MySQL Installer может установить (и обновить) версии 5.6, 5.7, и 8.0 на том же самом хосте.

У единственного узла не может быть установлен MySQL server коммерческой и версии сообщества. Например, если Вы хотите MySQL Server 5.7 и 8.0 на единственном узле, оба должны быть тем же самым выпуском.

MySQL Installer обрабатывает начальную конфигурацию. Например:

  • Это создает конфигурационный файл (my.ini), который используется, чтобы сконфигурировать сервер MySQL. Значения написаны в этот файл под влиянием выбора, который Вы делаете во время процесса установки.

    Некоторые определения зависят от хоста. Например, query_cache включен, если у узла есть меньше, чем три ядра.

  • Это может произвольно импортировать базы данных в качестве примера.

  • По умолчанию, служба Windows для сервера MySQL добавлена.
  • Это может произвольно создать учетные записи пользователя MySQL Server с конфигурацией разрешений, основанных на общих ролях, таких как DB Administrator, DB Designer и Backup Admin. Это произвольно создает пользователя Windows MysqlSys с ограниченными привилегиями, который выполняет MySQL Server.

    Учетные записи пользователя могут также быть добавлены и сконфигурированы в MySQL Workbench.

  • Проверка Show Advanced Options позволяет задать дополнительные Logging Options. Это включает пользовательские пути к файлам для журнала ошибок, общего журнала, журнала медленных запросов (включая конфигурацию секунд, которые требуются, чтобы выполнить запрос) и двоичный журнал.

MySQL Installer может произвольно проверить обновленные компоненты и загрузить их для Вас.

2.3.3.1. MySQL Installer GUI

MySQL Installer добавляет ссылку в меню "Пуск" под группой MySQL. Щелкните Start, All Programs, MySQL, MySQL Installer, чтобы перезагрузить MySQL Installer GUI.

Полные разрешения предоставляют MySQL Installer доступ ко всем произведенным файлам, таким как my.ini. Это не относится к файлам и каталогам для определенных продуктов, таким как каталог серверных данных в %ProgramData%, это принадлежит SYSTEM.

MySQL Installer требует, чтобы Вы приняли лицензионное соглашение прежде, чем это установит продукты MySQL.

Рис. 2.7. MySQL Installer License Agreement

Установка новых пакетов

Выберите соответствующий Setup Type для своей системы. Этот тип определяет, какие продукты MySQL первоначально установлены в Вашей системе, или выберите Custom, чтобы вручную выбрать продукты.

  • Developer: Установит все продукты, которые нужны, чтобы разработать приложения с MySQL. Это опция по умолчанию.

  • Server only: Только установить MySQL server.
  • Client only: Только установить продукты клиента MySQL, такие как MySQL Workbench. Это не включает сервер MySQL.
  • Full: Установит все доступные продукты MySQL.
  • Custom: Вручную выберите продукты MySQL, чтобы установить и произвольно сконфигурировать пользовательские данные MySQL и пути установки.

    После начальной установки Вы можете использовать MySQL Installer, чтобы вручную выбрать продукты MySQL, чтобы установить или удалить. Другими словами, MySQL Installer становится системой управления MySQL.

Рис. 2.8. MySQL Installer. Выбор типа установки

MySQL Installer проверяет Вашу систему на внешние требования (предпосылки), требуемые, чтобы устанавливать выбранные продукты MySQL. MySQL Installer может загрузить и установить некоторые пакеты, но другие требуют ручного вмешательства. Загрузите и установите все пакеты, которые имеют Status "Manual". Щелкните Check, чтобы перепроверить, если пакет был установлен вручную. После ручной установки тех требований, щелкните Execute, чтобы загрузить и установить другие пакеты. После того, как закончите, щелкните Next.

Рис. 2.9. MySQL Installer. Проверка требований

Следующее окно перечисляет продукты MySQL, которые намечены для установки:

Рис. 2.10. MySQL Installer. Продвижение установки

Поскольку компоненты установлены, их Status изменяется на "Complete".

После того, как все компоненты установлены, следующий шаг конфигурирует некоторые из недавно установленных продуктов MySQL. Окно Configuration Overview показывает процесс и затем загружают окно конфигурации, если требуется. Наш пример конфигурирует MySQL Server 5.7.x.

Настройка MySQL Server

Конфигурирование сервера MySQL начинается с определения нескольких опций Type and Networking.

Рис. 2.11. MySQL Installer. Краткий обзор конфигурации

Тип конфигурации сервера

Выберите тип конфигурации сервера MySQL, который описывает Вашу установку. Эта установка определяет количество системных ресурсов (памяти), которые будут назначены на Ваш экземпляр сервера MySQL.

  • Developer: Машина, которая разместит много других приложений, как правило, это Ваша личная рабочая станция. Эта опция конфигурирует MySQL, чтобы использовать наименьшее количество памяти.

  • Server: Несколько других приложений будут работать на этой машине, таких как веб-сервер. Эта опция конфигурирует MySQL, чтобы использовать средний объем памяти.
  • Dedicated: Машина, которая посвящена выполнению сервера MySQL. Поскольку никакие другие главные приложения не будут работать на этом сервере, такие как веб-сервер, эта опция конфигурирует MySQL, чтобы использовать большую часть доступной памяти.

Связь

Опции связи управляют, как соединение с MySQL сделано. Опции включают:

  • TCP/IP: Вы можете включить TCP/IP здесь, поскольку иначе только localhost-соединения позволены. Также определите Port Number и открыть ли порт брандмауэра для сетевого доступа.

  • Named Pipe: Включите и определите имя канала, подобное использованию опции --enable-named-pipe.
  • Shared Memory: Включите и определите имя памяти, подобное использованию опции --shared-memory.

Расширенная конфигурация

Нажмите Show Advanced Options, чтобы установить дополнительные Logging Options. Это включает определяющие пользовательские пути к файлам для журнала ошибок, общего журнала, журнала медленных запросов (включая конфигурацию секунд, которые требуются, чтобы выполнить запрос) и двоичного журнала.

Рис. 2.12. MySQL Installer. MySQL Server Configuration: Type and Networking

Учетные записи и роли

Определите свою информацию об учетной записи MySQL. Назначение пароля root требуется.

Вы можете добавить дополнительные учетные записи пользователя MySQL с предопределенными пользовательскими ролями. Каждая предопределенная роль, такая как "DB Admin", сконфигурирована с их собственным набором привилегий. Например, у "DB Admin" больше привилегий, чем у "DB Designer". Щелкните по Role для списка ролевых описаний.

Если MySQL Server уже установлен, то Вы должны также ввести Current Root Password.

Рис. 2.13. MySQL Installer. Конфигурация сервера MySQL: Учетные записи пользователя и роли

Рис. 2.14. MySQL Installer. Добавление пользователя

Windows Service

Сконфигурируйте детали Windows Service. Это включает имя службы, должен ли сервер MySQL быть загружен при запуске, как служба Windows сервера MySQL выполнена.

Рис. 2.15. MySQL Installer. Конфигурация сервера MySQL: служба Windows

Конфигурируя Run Windows Services as ... с использованием Custom User, у пользователя должны быть привилегии, чтобы войти в систему Microsoft Windows как служба. Кнопка Next будет отключена, пока этот пользователь не будет сконфигурирован с необходимыми привилегиями.

В Microsoft Windows 7 это может быть сконфигурировано, загружая Start Menu, Control Panel, Administrative Tools, Local Security Policy, Local Policies, User Rights Assignment, Log On As A Service. Выберите Add User or Group, чтобы добавить пользователя, а затем OK, OK, чтобы сохранить.

Плагины и расширения

Включите плагины и расширения MySQL. В этом примере мы позволяем X Plugin использовать MySQL в качестве хранилища документа.

Рис. 2.16. MySQL Installer. Плагины и расширения

Экран Plugins and Extensions в MySQL Installer появляется только при новой установке MySQL. Если Вы обновляетесь от предыдущей версии MySQL, то Вы должны выполнить установщик снова и выбрать reconfigure MySQL Server.

Расширенные опции

Следующий шаг конфигурации доступен, если отмечена опция Advanced Configuration. Этот раздел включает опции, которые связаны с файлами системного журнала MySQL:

Рис. 2.17. MySQL Installer. Журналирование MySQL Server

Нажмите Next, чтобы перейти к заключительной странице прежде, чем все требуемые изменения будут применены. Страница Apply Server Configuration показывает шаги конфигурации, которые будут выполнены.

Рис. 2.18. MySQL Installer. Apply Server Configuration

Нажмите Execute, чтобы выполнить шаги конфигурации. Значок для каждого шага переключается от белого до зеленого при успехе, или процесс прервется при сбое. Щелкните по вкладке Log, чтобы просмотреть журнал.

После того, как процесс конфигурации MySQL Installer закончен, MySQL Installer перезагружает вводную страницу, где Вы можете выполнить другую установку.

MySQL Installer добавлен к Microsoft Windows Start menu в группе MySQL. Открытие MySQL Installer загружает свою инструментальную панель, где установленные продукты MySQL перечислены и доступны другие действия MySQL Installer:

Рис. 2.19. MySQL Installer. Основная инструментальная панель

Добавление продуктов MySQL

Нажмите Add, чтобы добавить новые продукты. Это загружает страницу Select Products and Features:

Рис. 2.20. MySQL Installer. Select Products and Features

Выберите продукты MySQL, которые Вы хотите установить с левой панели Available Products, затем щелкните по зеленой стрелке вправо к продуктам очереди для установки.

Или щелкните Edit, чтобы открыть фильтр поиска:

Рис. 2.21. MySQL Installer. Фильтр продуктов и особенностей

Например, Вы могли бы хотеть включать продукты Pre-Release в свой выбор, такие как Beta-версии, которые еще не достигли статуса General Availability (GA).

Выберите все продукты MySQL, которые Вы хотите установить, затем щелкните Next, чтобы использовать значения по умолчанию, или выделите выбранный продукт и щелкните Advanced Options, чтобы произвольно изменить опции, такие как серверные данные MySQL и пути установки. Щелкните Execute, чтобы выполнить процесс установки, чтобы установить все выбранные продукты.

2.3.3.1.1. MySQL Product Catalog

MySQL Installer хранит каталог продукции MySQL. Каталог может быть обновлен вручную или автоматически, история изменения каталога также доступна. Автоматическое обновление включено по умолчанию.

Обновление каталога продукции также проверяет на более новую версию MySQL Installer и запрашивает обновление, если оно есть.

Ручные обновления

Вы можете обновить каталог продукции MySQL в любое время, щелкая Catalog в инструментальной панели.

Рис. 2.22. MySQL Installer. Каталог продукции MySQL

Щелкните Execute, чтобы обновить каталог продукции.

Автоматические обновления

MySQL Installer может автоматически обновить каталог продукции MySQL. По умолчанию эта опция активирована, чтобы выполнить проверку обновлений каждый день в 0:00. Чтобы сконфигурировать эту особенность, щелкните по значку на инструментальной панели.

Следующее окно конфигурирует Automatic Catalog Update. Включите или отключите эту опцию, а также установите час.

Рис. 2.23. MySQL Installer. Настройка планировщика каталога

Эта опция использует планировщик задач Windows, чтобы наметить задачу по имени "Manifest Update".

История изменения

MySQL Installer отслеживает историю изменения для всех продуктов MySQL. Щелкните Catalog в инструментальной панели, произвольно обновите каталог (или переключите Do not update at this time), нажмите Next/Execute и затем рассмотрите историю изменения.

Рис. 2.24. MySQL Installer. История изменения каталога

2.3.3.1.2. Удаление продуктов MySQL

MySQL Installer может также удалить продукты MySQL из Вашей системы. Чтобы удалить продукт MySQL, щелкните Remove из инструментальной панели. Это открывает окно со списком установленных продуктов MySQL. Выберите продукты MySQL, которые Вы хотите удалить, а затем щелкните Execute . Чтобы выбрать все продукты MySQL, щелкните [ ] слева от метки Product.

Рис. 2.25. MySQL Installer. Удаление продуктов: выбор

Рис. 2.26. MySQL Installer. Удаление продуктов: выполнение

2.3.3.1.3. Измените продукты MySQL

Используйте MySQL Installer, чтобы изменить, сконфигурировать или обновить Ваши установки продукта MySQL.

Обновление

Допускающие обновление продукты MySQL перечислены на основной инструментальной панели со значком стрелки () рядом с их номером версии.

Рис. 2.27. MySQL Installer. Обновление продукта MySQL

Функциональность "обновления" требует текущего каталога продукции. Этот каталог обновлен вручную или автоматически (ежедневно), активируя Automatic Catalog Update.

Щелкните Upgrade, чтобы обновить доступные продукты. Наш пример указывает, что инструментальные средства MySQL 6.2.4 могут быть обновлены до версии 6.3.1 или 6.2.5, а сервер MySQL с 5.5.41 до 5.5.42.

Рис. 2.28. MySQL Installer. избранные продукты, чтобы обновить

Если много версий обновления доступны (такие, как наш пример инструментальных средств MySQL выше), выберите желаемую версию для обновления в области Available Upgrades.

Щелкните по ссылке Changes, чтобы просмотреть информацию о версии.

После выбора (проверки) продуктов и версий, чтобы обновить, щелкните по Next.

Рис. 2.29. MySQL Installer применяет обновления

Обновление сервера MySQL также проверит и обновит базу данных сервера. Этот шаг рекомендуется.

Рис. 2.30. MySQL Installer. Проверка и обновление базы данных

После завершения Ваши продукты будут обновлены и доступны к использованию. Обновление сервера MySQL также перезапускает сервер MySQL.

Реконфигурирование

Некоторые продукты MySQL, такие как сервер MySQL, включают опцию Reconfigure. Это открывает те же самые параметры конфигурации, которые были установлены, когда продукт MySQL был установлен.

Чтобы выполнить, щелкните Reconfigure под столбцом Quick Action на основной инструментальной панели для продукта MySQL, который Вы хотите реконфигурировать.

Рис. 2.31. MySQL Installer. Реконфигурирование продукта MySQL

В случае сервера MySQL это открывает мастер конфигурации, который касается выбранного продукта. Например, для сервера MySQL это включает установку типа, портов, путей журнала и так далее.

Изменение

Много продуктов MySQL содержат компоненты, которые могут быть добавлены или удалены. Например, Debug binaries и Client Programs субкомпоненты сервера MySQL.

Для изменения особенностей продукта, щелкните Modify в основной инструментальной панели.

Рис. 2.32. MySQL Installer. Изменение характеристик продукта

Щелкните Execute, чтобы выполнить запрос модификации.

2.3.3.2. Консоль MySQL Installer

MySQLInstallerConsole обеспечивает функциональность, подобную версии GUI MySQL Installer, но из командной строки. Это установлено, когда MySQL Installer первоначально выполнен, и затем доступно в пределах каталога MySQL Installer. Как правило, это находится в C:\Program Files (x86)\MySQL\MySQL Installer\, консоль должна быть выполнена с административными привилегиями.

Чтобы использовать, вызовите командную строку с административными привилегиями выбором Start, Accessories, затем кликните правой кнопкой мыши по Command Prompt и выберите Run as administrator. Из командной строки произвольно измените каталог туда, где расположен MySQLInstallerConsole.exe:

C:\> cd "C:\Program Files (x86)\MySQL\MySQL Installer for Windows"
C:\> MySQLInstallerConsole.exe help

C:\Program Files (x86)\MySQL\MySQL Installer for Windows > MySQLInstallerConsole.exe help

The following commands are available:

Configure - Configures one or more of your installed programs.
Help      - Provides list of available commands.
Install   - Install and configure one or more available MySQL programs.
List      - Provides an interactive way to list all products available.
Modify    - Modifies the features of installed products.
Remove    - Removes one or more products from your system.
Status    - Shows the status of all installed products.
Update    - Update the current product catalog.
Upgrade   - Upgrades one or more of your installed programs.

MySQLInstallerConsole.exe поддерживает следующие опции, которые определены в командной строке:

Значения блока конфигурации, которые содержат двоеточие (":"), должны быть обернуты в двойные кавычки. Например, installdir="C:\MySQL\MySQL Server 8.0".

  • configure [product1]:[setting]=[value]; [product2]:[setting]=[value]; [...]

    Сконфигурируйте один или более продуктов MySQL на своей системе. Многократные пары setting=value могут быть сконфигурированы для каждого продукта.

    Переключатели включают:

    • -showsettings: Выводит на экран доступные параметры для выбранного продукта, проходя в названии продукта после -showsettings.

    • -silent: Отключить подсказки подтверждения.

    C:\> MySQLInstallerConsole configure -showsettings server
    C:\> MySQLInstallerConsole configure server:port=3307
    
  • help [command]

    Выводит на экран сообщение справки с примерами использования, а затем выходит. Передайте дополнительную команду, чтобы получить справку, определенную для той команды.

    C:\> MySQLInstallerConsole help
    C:\> MySQLInstallerConsole help install
    
  • install [product]:[features]:[config block]:[config block]:[config block]; [...]

    Установить один или более продуктов MySQL в системе.

    Переключатели и опции синтаксиса включают:

    • -type=[SetupType]: Устанавливает предопределенный набор программного обеспечения. "SetupType" может быть одним из следующего:

      Непользовательские типы установки могут быть выбраны только, если никакие другие продукты MySQL не установлены.

      • Developer: Устанавливает полную среду проектирования.

      • Server: Устанавливает только сервер MySQL.
      • Client: Устанавливает программы клиента и библиотеки.
      • Full: Устанавливает все.
      • Custom: Устанавливает выбранные продукты. Это опция по умолчанию.

    • -showsettings: Выводит на экран доступные параметры для выбранного продукта.

    • -silent: Отключить подсказки подтверждения.
    • [config block]: Могут быть определены один или более блоков конфигурации. Каждый блок конфигурации отделенный точкой с запятой список пар значений ключа. Блок может включать ключ типа "config" или "user", где "config" тип значения по умолчанию.

      Значения блока конфигурации, которые содержат двоеточие (":"), должны быть обернуты в двойные кавычки. Например, installdir="C:\MySQL\MySQL Server 8.0".

      Только один блок типа "config" может быть определен для продукта. Блок "user" должен быть определен для каждого пользователя, который должен быть создан во время установки продукта.

      Добавление пользователей не поддержано, когда продукт реконфигурирован.

    • [feature]: Блок особенностей отделенный точками с запятой список особенностей или '*', чтобы выбрать все особенности.

    C:\> MySQLInstallerConsole install server;5.6.25:*:port=3307;serverid=2:type=user;username=foo;password=bar;role=DBManager
    C:\> MySQLInstallerConsole install server;5.6.25;x64 -silent
    

    Пример, который проходит в дополнительных блоках конфигурации, разделенных ^, чтобы соответствовать экрану:

    C:\> MySQLInstallerConsole install server;5.6.25;x64:*:type=config;openfirewall=true; ^
    generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=pass; ^
    installdir="C:\MySQL\MySQL Server 5.6":type=user;datadir="C:\MySQL\data";username=foo;password=bar;role=DBManager
    
  • list

    Перечисляет, где все доступные продукты MySQL могут искаться. Выполните MySQLInstallerConsole list и введите подстроку для поиска.

    C:\> MySQLInstallerConsole list
    
  • modify [product1: -removelist| +addlist] [product2: -removelist| +addlist] [...]

    Изменяет или выводит на экран особенности ранее установленного продукта MySQL.

    • -silent: Отключить подсказки подтверждения.

    C:\> MySQLInstallerConsole modify server
    C:\> MySQLInstallerConsole modify server:+documentation
    C:\> MySQLInstallerConsole modify server:-debug
    
  • remove [product1] [product2] [...]

    Удаляет один или больше продуктов из Вашей системы.

    • *: Укажите *, чтобы удалить все продукты MySQL.

    • -continue: Продолжить работу, даже если ошибка происходит.
    • -silent: Отключить подсказки подтверждения.

    C:\> MySQLInstallerConsole remove *
    C:\> MySQLInstallerConsole remove server
    
  • status

    Обеспечивает быстрый краткий обзор продуктов MySQL, которые установлены в системе. Информация включает название продукта и версию, архитектуру, дату и местоположение установки.

    C:\> MySQLInstallerConsole status
    
  • update

    Загружает последний каталог продукции MySQL в Вашу систему. При успехе каталог загрузки будет применен в следующий раз, когда выполнен MySQLInstaller или MySQLInstallerConsole.

    C:\> MySQLInstallerConsole update
    

    GUI-опция Automatic Catalog Update выполняет эту команду из Windows Task Scheduler.

  • upgrade [product1:version] [product2:version] [...]

    Обновляет один или более продуктов на Вашей системе. Опции синтаксиса включают:

    • *: Указать *, чтобы обновить все продукты до последней версии.

    • !: Указать ! как номер версии, чтобы обновить продукт MySQL до его последней версии.
    • -silent: Отключить подсказки подтверждения.

    C:\> MySQLInstallerConsole upgrade *
    C:\> MySQLInstallerConsole upgrade workbench:6.3.5
    C:\> MySQLInstallerConsole upgrade workbench:!
    C:\> MySQLInstallerConsole upgrade workbench:6.3.5 excel:1.3.2
    

2.3.4. MySQL Notifier

MySQL Notifier инструмент, который позволяет Вам контролировать и скорректировать состояние своих копий сервера MySQL через индикатор, который находится в системном трее. MySQL Notifier также предоставляет быстрый доступ к инструментальным средствам MySQL через контекстное меню.

MySQL Notifier установлен MySQL Installer и (по умолчанию) будет запускаться, когда Microsoft Windows будет запущена.

Чтобы установить, загрузите и выполните MySQL Installer, убедитесь, что продукт MySQL Notifier выбран, затем возобновите установку.

Возможности включают:

  • Запуск, остановку и перезапуск MySQL Server.

  • Автоматически обнаруживает (и добавляет) новые службы сервера MySQL. Они перечислены как Manage Monitored Items и могут также быть сконфигурированы.
  • Значок Tray изменяется, в зависимости от состояния. Зеленый, если все копии MySQL Server работают, или красный, если по крайней мере одна служба остановлена. Опция Update MySQL Notifier tray icon based on service status, которая диктует это поведение, включена по умолчанию для каждой службы.
  • Ссылки к другим приложениям, например, MySQL Workbench, MySQL Installer и MySQL Utilities. Например, выбор Manage Instance загрузит окно администрирования сервера инструментальных средств MySQL для этой копии.
  • Если MySQL Workbench установлен, опции Manage Instance и SQL Editor доступны для местных (но не удаленных) копий MySQL.
  • Отслеживаются местные и удаленные копии MySQL.

2.3.4.1. Использование MySQL Notifier

MySQL Notifier находится в системном трее и обеспечивает визуальную информацию о статусе для Ваших копий сервера MySQL. Зеленый значок выведен на экран в верхнем левом углу значка трея, если текущий сервер MySQL работает. Значок красный, если служба остановлена.

MySQL Notifier автоматически добавляет службы MySQL на местной машине, каждая служба конфигурируема. По умолчанию опция Automatically add new services whose name contains включена и установлена в mysql. Связанные Notifications Options включают регистрацию, когда новые службы обнаружены или изменяют состояние, и также включены по умолчанию. Удаление службы также удалит службу из MySQL Notifier.

Щелчок по значку системного трея покажет несколько опций:

Меню Service Instance это основное окно MySQL Notifier, позволяет Вам остановить, запустить и перезапустить сервер MySQL.

Рис. 2.33. MySQL Notifier. Меню Service Instance

Меню Actions включает несколько ссылок к внешним приложениям (если они установлены) и опцию Refresh Status, чтобы вручную освежить состояние всех проверенных служб (в местных и в удаленных компьютерах) и экземпляры MySQL.

Главное меню не будет показывать меню Actions, когда не будет никаких служб, проверяемых MySQL Notifier.

Рис. 2.34. MySQL Notifier. Меню Actions

Меню Actions, Options конфигурирует MySQL Notifier и включает опции:

  • Use colorful status icons: Включает красочный стиль значков для MySQL Notifier.

  • Run at Windows Startup: Позволяет приложению быть загруженным, когда Microsoft Windows запускается.
  • Automatically Check For Updates Every # Weeks: Проверять новую версию MySQL Notifier каждые # недель.
  • Automatically add new services whose name contains: текст, чтобы фильтровать службы и добавлять их автоматически к проверенному списку MySQL Notifier.
  • Ping monitored MySQL Server instances every # seconds : интервал (в секундах), чтобы проверить с помощью ping-запросов экземпляры MySQL Server для изменений состояния. Более длинные интервалы могли бы быть необходимы, если список проверенных удаленных копий большой.
  • Notify me when a service is automatically added: выведет на экран уведомление, когда недавно обнаруженная служба добавлена к проверенному списку служб.
  • Notify me when a service changes status: выведет на экран уведомление, когда наблюдаемая служба изменяет состояние.
  • Automatic connections migration delayed until: Когда есть соединения для миграции, отложить перемещение на один час, один день, одну неделю, один месяц или неопределенно.

Рис. 2.35. MySQL Notifier. Меню Options

Меню Actions, Manage Monitored Items позволяет Вам сконфигурировать проверенные службы и копии MySQL:

Рис. 2.36. MySQL Notifier. Меню Manage Services

Вкладка Instances проста:

Рис. 2.37. MySQL Notifier. Меню Manage Instances

Добавление службы или экземпляра (после нажатия Add в окне Manage Monitored Items) позволяет Вам выбрать рабочую службу Microsoft Windows или соединение и сконфигурировать MySQL Notifier, чтобы контролировать это. Добавьте новую службу или экземпляр, щелкая по имени службы из списка, а затем по OK. Может быть выбрано много служб.

Рис. 2.38. MySQL Notifier. Добавление новых служб

Добавление новых экземпляров:

Рис. 2.39. MySQL Notifier. Добавление новых экземпляров

Проблемы

Для решения проблем, которые не зарегистрированы здесь, посетите MySQL Notifier Support Forum.

  • Проблема: попытка запустить/остановить/перезапустить службу MySQL может произвести ошибку, подобную "The Service MySQLVERSION " при этом запрос на изменение состояния проваливается с сообщением "The service mysqlVERSION was not found in the Windows Services".

    Объяснение: это проблема чувствительности к регистру, дело в том, что имя службы MySQLVERSION, а не mysqlVERSION, указанным в конфигурационном файле.

    Решение: обновите свой конфигурационный файл MySQL Notifier с правильной информацией, или остановите MySQL Notifier и удалите этот конфигурационный файл. Конфигурационный файл MySQL Notifier расположен в %APPDATA%\Oracle\MySQL Notifier\settings.config, где %APPDATA% переменная и зависит от Вашей системы. Типичное местоположение: "C:\Users\YourUsername\AppData\Running\Oracle\MySQL Notifier\settings.config", где YourUsername имя пользователя Вашей системы. В этом файле, в пределах раздела ServerList, измените значения ServerName на фактические имена сервисаов. Например, изменение mysqlVERSION на MySQLVERSION может помочь решить проблему. Сохраните файл, а затем перезапустите MySQL Notifier. Альтернативно, остановите MySQL Notifier, удалите этот файл, затем перезапустите MySQL Notifier.

  • Проблема: соединяясь с отдаленным компьютером с целью контроля отдаленной службы Windows диалог Add Service не всегда показывает все службы, показанные в консоли Windows Services.

    Объяснение: этим поведением управляет операционная система, и результат ожидается, работая с недоменными учетными записями пользователя. Для полного описания поведения см. статью User Account Control and WMI Microsoft.

    Решение: когда отдаленный компьютер находится в совместимом домене, рекомендуется, чтобы учетные записи пользователя домена использовались, чтобы соединиться через WMI с отдаленным компьютером. Для подробных инструкций настройки, используя WMI, см. раздел 2.3.4.2.

    Альтернативно, когда учетные записи пользователя домена недоступны, Microsoft обеспечивает менее безопасное обходное решение, которое должно быть осуществлено с осторожностью. Для получения дополнительной информации см. Description of User Account Control and remote restrictions in Windows Vista статью KB Microsoft.

2.3.4.2. Установка дистанционного мониторинга в MySQL Notifier

MySQL Notifier применяет Windows Management Instrumentation (WMI), чтобы управлять и контролировать службы на отдаленных компьютерах. Этот раздел объясняет, как он работает и как настроить Вашу систему, чтобы контролировать удаленные копии MySQL.

Чтобы сконфигурировать WMI, важно понять, что архитектура Distributed Component Object Model (DCOM) делает работу WMI. MySQL Notifier использует асинхронные запросы уведомления на отдаленных узлах Microsoft Windows как .NET события. Эти события посылают асинхронный отзыв в MySQL Notifier, таким образом, это знает, когда состояние службы изменилось на отдаленном компьютере. Асинхронные уведомления предлагают лучшую работу по сравнению с полусинхронными уведомлениями или синхронными уведомлениями, использующими таймеры.

Асинхронное уведомление требует, чтобы отдаленный компьютер послал отзыв в компьютер клиента (таким образом открывающий обратное соединение), значит, настройки Firewall и DCOM Windows должны быть должным образом сконфигурированы для коммуникации.

Рис. 2.40. MySQL Notifier. Distributed Component Object Model (DCOM)

Большинство распространенных ошибок, созданных асинхронными уведомлениями WMI, связано с брандмауэром Windows, блокирующим коммуникацию, или с DCOM/настройками WMI, не настроенных должным образом.

Следующие шаги нужны, чтобы наладить WMI. Эти шаги разделены между двумя машинами. Единственный хост, который выполняет MySQL Notifier (Computer A), и много отдаленных машин, которые проверяются (Computer B).

Computer A
  1. Включите удаленное администрирование редактированием Group Policy Editor или через NETSH:

    Используя Group Policy Editor:

    1. Нажмите Start, Run, введите GPEDIT.MSC и нажмите OK.

    2. В соответствии с Local Computer Policy, откройте Computer Configuration.
    3. Разверните Administrative Templates, Network, Network Connections и Windows Firewall.
    4. Если компьютер находится в домене, то сделайте двойной клик по Domain Profile, иначе по Standard Profile.
    5. Дважды щелкните Windows Firewall: Allow inbound remote administration exception, чтобы открыть окно конфигурации.
    6. Проверьте переключатель Enabled, затем нажмите OK.

    Используя команду NETSH:

    Команда "netsh firewall" устарела в Microsoft Server 2008 и Vista и заменена на "netsh advfirewall firewall".

    1. Откройте окно командной строки с административными правами (щелкните правой кнопкой мыши по Command Prompt и выберите Run as Administrator).

    2. Выполните следующую команду:
      NETSH advfirewall firewall set service RemoteAdmin enable
      
  2. Откройте DCOM порт TCP 135:

    1. Откройте окно командной строки с административными правами (щелкните правой кнопкой мыши по Command Prompt и выберите Run as Administrator).

    2. Выполните следующую команду:
      NETSH advfirewall firewall add rule name=DCOM_TCP135 protocol=TCP localport=135 dir=in action=allow
      
  3. Добавьте приложение-клиент (MySqlNotifier.exe) в Windows Firewall Exceptions List (используйте конфигурацию Windows Firewall или NETSH):

    Используя конфигурацию Windows Firewall:

    1. В Control Panel дважды щелкните по Windows Firewall.

    2. В левой панели окна Windows Firewall кликните Allow a program or feature through Windows Firewall.
    3. В окне Allowed Programs кликните Change Settings и сделайте одно из следующего:

      • Если MySqlNotifier.exe находится в списке Allowed programs, удостоверьтесь, что он проверен на тип сетей, с которыми компьютер соединяется (Private, Public или оба).

      • Если MySqlNotifier.exe не находится в списке, щелкните Allow another program....

        1. В окне Add a Program выберите MySqlNotifier.exe, если это существует в списке Programs, иначе кликните Browse... и перейдите в каталог, где был установлен MySqlNotifier.exe, чтобы выбрать его, затем щелкните Add.

        2. Удостоверьтесь, что MySqlNotifier.exe проверен на тип сетей, с которыми компьютер соединяется (Private, Public или оба).

    Используя команду NETSH:

    1. Откройте окно командной строки с административными правами (щелкните правой кнопкой мыши по Command Prompt и выберите Run as Administrator).

    2. Выполните следующую команду, где Вы замените "[YOUR_INSTALL_DIRECTORY]" на каталог установки:
      NETSH advfirewall firewall add rule name=MySqlNotifier program=[YOUR_INSTALL_DIRECTORY]\MySqlNotifier.exe action=allow dir=in
      
  4. Если Computer B является членом WORKGROUP или находится в домене, которому не доверяет Computer A, тогда соединение отзыва (Соединение 2) создается как Anonymous. Предоставьте анонимным соединениям разрешения удаленного доступа DCOM:

    1. Нажмите Start, Run, введите DCOMCNFG и кликните OK.

    2. В окне Component Services раскройте Component Services, Computers и кликните правой кнопкой мыши по My Computer, затем выберите Properties.
    3. В окне My Computer Properties перейдите на вкладку COM Security.
    4. В Access Permissions нажмите Edit Limits.
    5. В Access Permission выберите ANONYMOUS LOGON name в поле имени пользователя или группы. В столбце Allow под Permissions для User выберите Remote Access и нажмите OK.

Computer B

Если учетная запись пользователя, которая зарегистрирована для компьютера, выполняющего MySQL Notifier (Computer A) является местным администратором на отдаленном компьютере (Computer B), Вы можете пропустить шаг разрешения удаленного администрирования.

Установите безопасность DCOM, чтобы позволить не административному пользователю получмть доступ к компьютеру удаленно:

  1. Предоставьте права "DCOM remote launch" и разрешения активации для пользователя или группы:

    1. Кликните Start, Run, введите DCOMCNFG и нажмите OK.

    2. В окне Component Services разверните Component Services, Computers и правой кнопкой мыши щелкните по My Computer, выберите Properties.
    3. В окне My Computer Properties перейдите на вкладку COM Security.
    4. Под Launch and Activation Permission нажмите Edit Limits.
    5. В окне Launch and Activation Permission следуйте этим шагам, если Ваше имя или группа не появляются в списке групп или имен пользователя:

      1. В окне Launch and Activation Permission кликните Add.

      2. В окне Select Users or Groups добавьте включите свое имя и группу в поле Enter the object names to select и кликните OK.

    6. В окне Launch and Activation Permission выберите своего пользователя и группу в поле имен пользователя или группы. В столбце Allow под Permissions for User, выберите Remote Launch, Remote Activation и нажмите OK.

    Предоставьте разрешения удаленного доступа DCOM:

    1. Кликните Start, Run, введите DCOMCNFG и нажмите OK.

    2. В окне Component Services разверните Component Services, Computers и правой кнопкой мыши щелкните по My Computer, выберите Properties.
    3. В окне My Computer Properties перейдите на вкладку COM Security.
    4. Под Access Permissions нажмите на Edit Limits.
    5. В окне Access Permission выберите ANONYMOUS LOGON name в поле имен пользователя или группы. В столбце Allow под Permissions for User выберите Remote Access и нажмите OK.

  2. Разрешение пользовательского доступа не администратору к определенному пространству имен WMI:

    1. В Control Panel откройте Administrative Tools .

    2. В окне Administrative Tools откройте Computer Management.
    3. В окне Computer Management разверните дерево Services and Applications.
    4. Кликните правой кнопкой по WMI Control и выберите Properties.
    5. В окне WMI Control Properties перейдите на вкладку Security.
    6. На вкладке Security выберите выберите пространство имен и щелкните Security. Root/CIMV2 обычно используемое пространство имен.
    7. Определите местонахождение соответствующей учетной записи и проверьте наличие Remote Enable в списке Permissions.

  3. Разрешите удаленное администрирование через Group Policy Editor или NETSH:

    Используя Group Policy Editor:

    1. Кликните Start, Run, введите GPEDIT.MSC и нажмите OK.

    2. В Local Computer Policy дважды кликните по Computer Configuration.
    3. Дважды кликните по Administrative Templates, Network, Network Connections и Windows Firewall.
    4. Если компьютер находится в домене, то дважды кликните по Domain Profile, иначе по Standard Profile.
    5. Кликните по Windows Firewall: Allow inbound remote administration exception.
    6. В меню Action выберите Edit.
    7. Проверьте выбор Enabled и нажмите OK.

    Используя команду NETSH:

    1. Откройте окно командной строки с административными правами (щелкните правой кнопкой мыши по Command Prompt и выберите Run as Administrator).

    2. Выполните такую команду:
      NETSH advfirewall firewall set service RemoteAdmin enable
      
  4. Подтвердите, что учетная запись пользователя использует значение Name, а не Full Name:

    1. В Control Panel откройте Administrative Tools.

    2. В окне Administrative Tools дважды щелкните по Computer Management.
    3. В окне Computer Management откройте System Tools, затем Local Users and Groups.
    4. Кликните по узлу Users и на правой панели определите местонахождение Вашего пользователя и удостоверьтесь, что это использует значение Name, чтобы соединиться, а не значение Full Name.

Распространенные ошибки
  • 0x80070005

    • Безопасность DCOM не была сконфигурирована должным образом (см. шаг Setting DCOM security... для компьютера B).

    • Удаленная машина (Computer B) является членом WORKGROUP или находится в домене, которому не доверяет компьютер клиента A (см. шаг Grant Anonymous connections DCOM Remote Access permissions для машины A).

  • 0x8007000E

    • Удаленная машина (B) является членом WORKGROUP или находится в домене, которому не доверяет компьютер клиента A (см. шаг Grant Anonymous connections DCOM Remote Access permissions для машины A).

  • 0x80041003

    • Доступ к отдаленному пространству имен WMI не был сконфигурирован должным образом (см. шаг Allowing non-administrator users access to a specific WMI namespace для B).

  • 0x800706BA

    • Порт DCOM не открыт на компьютере клиента (A). См. шаг Open the DCOM port TCP 135 для A.

    • Удаленный компьютер (B) недоступен, потому что его сетевое местоположение установлено в Public. Удостоверьтесь, что Вы можете получить доступ к нему через Windows Explorer.

2.3.5. Установка MySQL в Microsoft Windows, используя архив noinstall Zip

Пользователи, которые устанавливают пакет noinstall, могут использовать инструкции в этом разделе, чтобы вручную установить MySQL. Процесс для того, чтобы установить MySQL из архива Zip:

  1. Извлеките основной архив.

    Дополнительно: также извлеките архив теста отладки, если Вы планируете выполнить точку отсчета MySQL и испытательный набор.

  2. Создайте файл опций.
  3. Выберите тип сервера MySQL.
  4. Инициализируйте MySQL.
  5. Запустите сервер MySQL.
  6. Обеспечьте учетные записи пользователя по умолчанию.

Этот процесс описан в разделах ниже.

2.3.5.1. Извлечение архива установки

Чтобы установить MySQL вручную, сделайте следующее:

  1. Если Вы обновляете от предыдущей версии, пожалуйста, обратитесь к разделу 2.3.8 прежде, чем начать процесс обновления.

  2. Удостоверьтесь, что Вы зарегистрированы как пользователь с привилегиями администратора.
  3. Выберите местоположение установки. Традиционно, сервер MySQL установлен в C:\mysql. MySQL Installation Wizard ставит MySQL в C:\Program Files\MySQL. Если Вы не устанавливаете MySQL в C:\mysql, Вы должны определить путь к каталогу установки во время запуска или в файле опций. См. раздел 2.3.5.2.

    Установщик MySQL устанавливает MySQL в C:\Program Files\MySQL .

  4. Извлеките архив установки в выбранное местоположение, используя распаковщик Zip. Некоторые инструменты могут извлечь архив в папку в Вашем выбранном местоположении установки. Если это происходит, Вы можете переместить содержание подпапки в выбранное местоположение установки.

2.3.5.2. Создание файла опций

Если Вы должны определить опции запуска, когда выполняете сервер, Вы можете указать ни в командной строке или разместить их в файле опций. Для опций, которые используются каждый раз, когда сервер запускается, Вы можете счесть самым удобным использовать файл опций, чтобы определить Вашу конфигурацию MySQL. Это особенно верно при следующих обстоятельствах:

  • Каталог установки или данных отличается от местоположений по умолчанию (C:\Program Files\MySQL\MySQL Server 8.0 и C:\Program Files\MySQL\MySQL Server 8.0\data).

  • Вы должны настроить настройки сервера, такие как память, кэш или информация о конфигурации InnoDB.

Когда сервер MySQL запускается в Windows, он ищет файлы опции в нескольких местоположениях, таких как каталог Windows, C:\ и каталог установки MySQL (для полного списка местоположений см. раздел 5.2.6). Каталог Windows, как правило, C:\WINDOWS. Вы можете определить его точное местоположение от значения переменной окружения WINDIR, используя следующую команду:

C:\> echo %WINDIR%

MySQL ищет опции в каждом местоположении сначала в файле my.ini, а потом в my.cnf. Однако, чтобы избежать беспорядка, лучше, если Вы используете только один файл. Если Ваш PC использует загрузчик операционной системы, где C: не диск начальной загрузки, Ваша единственная опция должна использовать файл my.ini. Какой бы ни был файл опций, который Вы используете, это должен быть только файл простого текста.

При использовании установщика MySQL, чтобы установить сервер MySQL, это создаст my.ini в местоположении по умолчанию и предоставлет полные разрешения доступа этому новому файлу my.ini.

Другими словами, убедитесь, что у пользователя сервера MySQL есть разрешение читать файл my.ini.

Вы можете также использовать в качестве примера файлы опций, включенные в Ваш дистрибутив MySQL, см. раздел 6.1.2.

Файл опции может быть создан и изменен любым текстовым редактором, таким как Notepad. Например, если MySQL установлен в E:\mysql, а каталог данных находится в E:\mydata\data, Вы можете создать файл опции, содержащий раздел [mysqld], чтобы определить значения для опций basedir и datadir:

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=E:/mydata/data

Пути Microsoft Windows определены в файлах опции, используя прямые, а не обратные слэши. Если Вы используете обратные слэши, укажите их дважды:

[mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data

Правила для использования наклонной черты влево в значениях файла опции даны в разделе 5.2.6.

Zip-архив не включает каталог data. Чтобы инициализировать установку MySQL, создавая каталог данных и заполняя таблицы в системной базе данных mysql, инициализируйте MySQL, используя --initialize или --initialize-insecure. Подробности в разделе 2.9.1.1.

Если Вы хотели бы использовать каталог данных в ином местоположении, Вы должны скопировать все содержание каталога data к новому местоположению. Например, если Вы хотите использовать E:\mydata как каталог данных вместо этого, Вы должны сделать две вещи:

  1. Переместите каталог data и все его содержание от местоположения по умолчанию (например, C:\Program Files\MySQL\MySQL Server 8.0\data) в E:\mydata.

  2. Используйте опцию --datadir, чтобы определить новое местоположение каталога данных каждый раз, когда Вы запускаете сервер.

2.3.5.3. Выбор типа сервера MySQL

Следующая таблица показывает доступные серверы для Windows в MySQL 8.0.

ФайлОписание
mysqld Оптимизированный с поддержкой именованного канала.
mysqld-debug аналог mysqld , но с полной отладкой и автоматической проверкой распределения памяти.

Все предыдущие наборы оптимизированы для современных процессоров Intel, но должны работать на любом процессоре i386-class или выше.

Каждый из серверов поддерживает тот же самый набор механизмов хранения. SHOW ENGINES покажет механизмы, которые поддерживают данный сервер.

Все серверы Windows MySQL 8.0 имеют поддержку символических ссылок каталогов базы данных.

MySQL поддерживает TCP/IP на всех платформах Windows. Серверы MySQL на Windows также поддерживают именованные каналы, если Вы запускаете сервер с опцией --enable-named-pipe. Необходимо использовать эту опцию явно, потому что некоторые пользователи испытали проблемы с закрытием сервера MySQL, когда использовали каналы. Значение по умолчанию должно использовать TCP/IP независимо от платформы, потому что каналы медленнее, чем TCP/IP во многих конфигурациях Windows.

2.3.5.4. Инициализация каталога данных

Если Вы устанавливали MySQL, используя пакет Noinstall, никакой каталог данных не включен. Чтобы инициализировать каталог данных, используйте инструкции в разделе 2.9.1.1.

2.3.5.5. Запуск сервера впервые

Этот раздел дает общий обзор запуска сервера MySQL. Следующие разделы предоставляют более определенную информацию для того, чтобы запустить сервер MySQL из командной строки или как службу Windows.

Информация здесь применяется прежде всего, если Вы устанавливали MySQL, используя версию Noinstall или если Вы хотите сконфигурировать и проверить MySQL вручную, а не с инструментами GUI.

Сервер MySQL автоматически запустится после использования MySQL Installer, и GUI MySQL Notifier может использоваться, чтобы запустить/остановить/перезапустить в любое время.

Примеры в этих разделах предполагают, что MySQL установлен под местоположением по умолчанию C:\Program Files\MySQL\MySQL Server 8.0 . Скорректируйте пути, показанные в примерах, если установили MySQL в иное местоположение.

У клиентов есть две опции. Они могут использовать TCP/IP или канал, если сервер поддерживает соединения по именованному каналу.

MySQL для Windows также поддерживает соединения совместно используемой памяти, если сервер запущен с опцией --shared-memory . Клиенты могут соединиться через совместно используемую память при использовании опции --protocol=MEMORY.

Тестирование лучше всего делать из командной строки в консоли (или DOS window). Таким образом у Вас могут быть сообщения о состоянии сервера в окне, где их легко видеть. Если что-то является неправильным с Вашей конфигурацией, эти сообщения облегчают для Вас идентификацию и решение любых проблем.

База данных должна быть инициализирована прежде, чем MySQL может быть запущен. Для дополнительной информации о процессе инициализации см. раздел 2.9.1.1 .

Чтобы запустить сервер, введите эту команду:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --console

Для сервера, который включает InnoDB, Вы должны видеть сообщения, подобные этим, после запуска (пути и размеры могут отличаться):

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25 InnoDB: Started

Когда сервер заканчивает свою последовательность запуска, Вы должны видеть что-то вроде этого, что указывает, что сервер готов обслужить соединения клиента:

mysqld: ready for connections
Version: '8.0.1'socket: ''port: 3306

Сервер продолжает писать на консоль диагностический вывод, который производит. Вы можете открыть новую консоль, в которой можно выполнить программы клиента.

Если Вы опускаете опцию --console, сервер пишет диагностический вывод в журнал ошибок в каталоге данных (по умолчанию это C:\Program Files\MySQL\MySQL Server 8.0\data). Журнал ошибок это файл с расширением .err, может быть установлен, используя опцию --log-error.

Первоначально у пользвателя root в таблицах прав доступа MySQL нет никакого пароля. После запуска сервера Вы должны настроить пароль для этого, использя инструкции в разделе 2.9.4.

2.3.5.6. Запуск MySQL из командной строки Windows

Сервер MySQL может быть запущен вручную из командной строки. Это может быть сделано в любой версии Windows.

GUI MySQL Notifier может также использоваться, чтобы запустить/остановить/перезапустить сервер MySQL.

Чтобы запустить mysqld из командной строки, Вы должны запустить консоль (или DOS window) и ввести эту команду:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"

Путь к mysqld может измениться в зависимости от местоположения установки MySQL в Вашей системе.

Вы можете остановить сервер MySQL, выполняя эту команду:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" -u root shutdown

Если у учетной записи пользователя MySQL root есть пароль, Вы должны вызвать mysqladmin с опцией -p и ввести пароль, когда он запрошен.

Эта команда вызывает административную утилиту MySQL mysqladmin , чтобы соединиться с сервером и сказать ему завершать работу. Команда соединяется как пользователь MySQL root, который является по умолчанию административной учетной записью в системе MySQL.

Пользователи в системе MySQL совершенно независимы от любых пользователей Microsoft Windows.

Если mysqld не запускается, проверьте журнал ошибок, чтобы видеть, написал ли сервер какие-либо сообщения там, чтобы указать на причину проблемы. По умолчанию журнал ошибок расположен в каталоге C:\Program Files\MySQL\MySQL Server 8.0\data. Это файл с суффиксом .err, или может быть определен в опции --log-error. Альтернативно, Вы можете попытаться запустить сервер с опцией --console, в этом случае, сервер может вывести на экран немного полезной информации, которая поможет решить проблему.

Последняя опция должна запустить mysqld с опциями --standalone и --debug. В этом случае mysqld пишет файл системного журнала C:\mysqld.trace, который должен содержать причину, почему mysqld не запускается. См. раздел 26.5.3.

Используйте mysqld --verbose --help, чтобы вывести на экран все опции mysqld.

2.3.5.7. Настройка PATH для инструментов MySQL

Вы должны быть внимательны, редактируя Вашу системную переменную PATH: случайное удаление или модификация любой части существующего значения PATH может привести к серьезным проблемам или даже непригодной системе.

Чтобы облегчить вызов MySQL, Вы можете добавить путь к каталогу MySQL bin к Вашей системной переменной PATH:

  • На рабочем столе, кликните правой кнопкой мыши по My Computer и выберите Properties.

  • Затем выберите вкладку Advanced из меню System Properties и нажмите кнопку Environment Variables.
  • В списке System Variables выберите Path и кликните на Edit. Диалог Edit System Variable должен появиться.
  • Поместите свой курсор в конец текста, появляющегося в строке, отмеченной Variable Value (используйте клавишу End, чтобы гарантировать, что Ваш курсор расположен в самом конце текста в этом пространстве). Тогда введите имя полного пути Вашего каталога MySQL bin (например, C:\Program Files\MySQL\MySQL Server 8.0\bin).

    Должна быть точка с запятой, отделяющая этот путь от любых значений, существующих в этой области.

    Закройте этот диалог, и каждый диалог в очереди, нажимая OK, пока все диалоги, которые были открыты, не закроются. Новое значение PATH должно теперь быть доступным любой новой команде, разрешая Вам вызвать любую программу MySQL, вводя ее имя при подсказке DOS из любого каталога в системе, не имея необходимость задавать путь. Это включает серверы, клиент mysql и все утилиты, например, utilities such as mysqladmin и mysqldump.

Вы не должны добавить каталог MySQL bin к переменной Windows PATH, если Вы выполняете много серверов MySQL на той же самой машине.

2.3.5.8. Запуск MySQL как сервис Windows

В Windows рекомендуемый способ выполнить MySQL состоит в том, чтобы установить это как службу Windows, так, чтобы MySQL запустился и остановился автоматически, когда Windows запускается и останавливается. Сервером MySQL, установленным как служба, можно также управлять из командной строки, используя команды NET, или графической утилитой Services. Вообще, чтобы установить MySQL как службу Windows Вы должны быть зарегистрированы, используя учетную запись, которая имеет права администратора.

GUI MySQL Notifier может также использоваться, чтобы контролировать состояние службы MySQL.

Утилита Services (Windows Service Control Manager) может быть найдена в Windows Control Panel (в Administrative Tools в Windows Vista и Server 2003). Чтобы избежать конфликтов, желательно закрыть утилиту Services, выполняя установку сервера или операции удаления из командной строки.

Установка службы

Прежде, чем установить MySQL как службу Windows, Вы должны сначала остановить текущий сервер следующей командой:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin"
        -u root shutdown

Установите сервер как службу, используя эту команду:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install

Команда установки службы не запускает сервер. Инструкции для этого даны позже в этом разделе.

Следующие дополнительные параметры могут использоваться, устанавливая службу:

  • Вы можете немедленно определить имя службы после опции --install. По умолчанию MySQL.

  • Если имя службы дано, оно может сопровождаться единственной опцией. В соответствии с соглашением, это должна быть --defaults-file= file_name, чтобы определить название файла опций, из которого сервер должен считать опции, когда запускается.

    Использование единственной опции кроме --defaults-file возможно, но не рекомендуется. --defaults-file более гибко, потому что это позволяет Вам определить много опций запуска для сервера, размещая их в названный файл опции.

  • Вы можете также определить --local-service после имени службы. Это заставляет сервер выполнять использование учетной записи Windows LocalService, которая ограничивает системные привилегии. Если оба параметра --defaults-file и --local-service даны после имени службы, они могут быть в любом порядке.

Для сервера MySQL, который установлен как служба Windows, следующие правила определяют имя службы и файлы опции, которые использует сервер:

  • Если команда установки службы не определяет имени службы или задает имя службы по умолчанию (MySQL) после опции --install, сервер использует название службы MySQL и читает опции из группы [mysqld] в стандартных файлах опций.

  • Если команда установки службы определяет имя службы не MySQL после опции --install, сервер использует то имя службы. Это читает опции из группы [mysqld] и группы, у которой есть то же самое имя, как у службы, в стандартных файлах опций. Это позволяет Вам использовать группу [mysqld] для опций, которые должны использоваться всеми службами MySQL, и группу опций с названием службы для использования сервером, установленным с тем именем службы.
  • Если команда установки службы определяет --defaults-file после имени службы, сервер читает опции тем же самым путем, как описано в предыдущем пункте, за исключением того, что это читает опции только из названного файла и игнорирует стандартные файлы опций.

Как более сложный пример, рассмотрите следующую команду:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"
        --install MySQL --defaults-file=C:\my-opts.cnf

Здесь, имя службы по умолчанию (MySQL) дано после опции --install. Если нет --defaults-file , эта команда будет заставлять сервер читать группу [mysqld] стандартных файлов опции. Однако, потому что задана --defaults-file , опции читаются из группы [mysqld] только названного файла.

В Windows, если сервер запущен с опциями --defaults-file и --install , --install должна быть первой. Иначе mysqld.exe попытается запустить сервер MySQL.

Вы можете также определить опции, как Start parameters в утилите Windows Services прежде, чем Вы запустите службу MySQL.

Запуск службы

Как только сервер MySQL был установлен как служба, Windows запускает службу автоматически всякий раз, когда Windows запускается. Служба также может быть немедленно запущена из утилиты Services или командой NET START MySQL. Команда NET не является чувствительной к регистру.

Когда выполнен как служба, mysqld не имеет никакого доступа к консоли, таким образом, никакие сообщения не могут быть замечены там. Если mysqld не запускается, проверьте журнал ошибок, чтобы видеть, написал ли сервер какие-либо сообщения там, чтобы указать на причину проблемы. Журнал ошибок расположен в каталоге данных MySQL (например, C:\Program Files\MySQL\MySQL Server 8.0\data). Это файл с суффиксом .err.

Когда сервер MySQL был установлен как служба, и служба работает, Windows останавливает службу автоматически, когда Windows закрывается. Сервер также может быть остановлен вручную при использовании утилиты Services, командой NET STOP MySQL или mysqladmin shutdown .

У Вас также есть выбор установки сервера как ручной службы, если Вы не хотите, чтобы служба была запущена автоматически во время процесса загрузки. Чтобы сделать это, используйте опцию --install-manual до опции --install:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install-manual
Удаление службы

Чтобы удалить сервер, который установлен как служба, сначала остановите его, если это работает, выполняя NET STOP MySQL . Затем используйте опцию --remove:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --remove

Если mysqld не работает как служба, Вы можете запустить его из командной строки. Для инструкций см. раздел 2.3.5.6.

Если Вы сталкиваетесь с трудностями во время установки, см. раздел 2.3.6.

Для получения дополнительной информации об остановке или удалении службы Windows MySQL см. раздел 6.7.2.2.

2.3.5.9. Тестирование установки MySQL

Вы можете проверить, работает ли сервер MySQL, выполняя какую-либо из следующих команд:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlshow"
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlshow" -u root mysql
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" version status proc
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" test

Если mysqld не спешит отвечать на соединения TCP/IP из программ клиента, есть, вероятно, проблема с Вашим DNS. В этом случае запустите mysqld с опцией --skip-name-resolve и используйте localhost и IP-адреса в столбце Host таблиц прав доступа MySQL. Убедитесь, что существует учетная запись, которая определяет IP-адрес, или Вы не сможете соединиться.

Вы можете вынудить клиента MySQL использовать соединение именованного канала, а не TCP/IP, определяя --pipe или --protocol=PIPE или указывая в качестве имени хоста точку (.). Используйте опцию --socket, чтобы определить название канала, если Вы не хотите использовать имя канала по умолчанию.

Если Вы установили пароль для root, удалили анонимную учетную запись или создали новую учетную запись пользователя, то чтобы соединиться с сервером MySQL, Вы должны использовать соответствующие опции -u и -p с командами, показанными ранее. См. раздел 5.2.2.

Подробности о mysqlshow в разделе 5.5.7.

2.3.6. Поиск неисправностей в Microsoft Windows MySQL Server

Устанавливая и выполняя MySQL впервые, Вы можете столкнуться с определенными ошибками, которые препятствуют тому, чтобы сервер MySQL запустился. Этот раздел помогает Вам диагностировать и исправить некоторые из этих ошибок.

Вашим первым ресурсом, расследуя проблемы сервера, является журнал ошибок. Сервер MySQL использует журнал ошибок, чтобы сделать запись информации, относящейся к ошибке, которая препятствует тому, чтобы сервер запустился. Журнал ошибок расположен в каталоге данных, определенном в Вашем файле my.ini. Местоположение каталога данных по умолчанию C:\Program Files\MySQL\MySQL Server 8.0\data или C:\ProgramData\Mysql в Windows 7 и Windows Server 2008. Каталог C:\ProgramData по умолчанию скрыт. Вы должны изменить свои опции папки, чтобы видеть каталог и содержание. Для получения дополнительной информации о журнале ошибок и понимании контента, см. раздел 6.4.2.

Для информации относительно возможных ошибок, также консультируйтесь с сообщениями в консоли, выведенными на экран, когда служба MySQL запускается. Используйте команду NET START MySQL из командной строки после установки mysqld как службы, чтобы видеть любые сообщения об ошибках при запуске сервера MySQL как службы. См. раздел 2.3.5.8 .

Следующие примеры показывают другие частые сообщения об ошибках, с которыми Вы могли бы столкнуться, устанавливая MySQL и запуская сервер впервые:

  • Если сервер MySQL не может найти базу данных привилегий mysql или другие критические файлы, это выводит на экран эти сообщения:

    System error 1067 has occurred.
    Fatal error: Can't open and lock privilege tables:
    Table 'mysql.user' doesn't exist
    

    Эти сообщения часто происходят, когда MySQL или каталоги данных установлены в иных местоположениях чем значения по умолчанию (C:\Program Files\MySQL\MySQL Server 8.0 и C:\Program Files\MySQL\MySQL Server 8.0\data, соответственно).

    Эта ситуация может произойти, когда MySQL обновлен и установлен в новое место, но конфигурационный файл не обновлен, чтобы отразить новое местоположение. Кроме того, старые и новые конфигурационные файлы могли бы находиться в противоречии. Убедитесь, что удалили или переименовали любые старые конфигурационные файлы, обновляя MySQL.

    Если Вы установили MySQL не в каталог C:\Program Files\MySQL\MySQL Server 8.0, гарантируйте, что сервер MySQL знает об этом с помощью конфигурации (my.ini). Поместите файл my.ini в каталог Windows, обычно это C:\WINDOWS. Определить его точное местоположение можно из значения WINDIR:

    C:\> echo %WINDIR%
    

    Вы можете создать или изменить файл опций любым текстовым редактором, например, Notepad. Например, если MySQL установлен в E:\mysql и каталог данных D:\MySQLdata, Вы можете создать файл опций и настроить раздел [mysqld], чтобы определить значения для опций basedir и datadir:

    [mysqld]
    # set basedir to your installation path
    basedir=E:/mysql
    # set datadir to the location of your data directory
    datadir=D:/MySQLdata
    

    Пути Microsoft Windows определены в файлах опции, используя прямые, а не обратные слэши. Если Вы действительно используете обратные слэши, удвойте их:

    [mysqld]
    # set basedir to your installation path
    basedir=C:\\Program Files\\MySQL\\MySQL Server 8.0
    # set datadir to the location of your data directory
    datadir=D:\\MySQLdata
    

    Если Вы изменяете datadir в своем конфигурационном файле MySQL, Вы должны переместить содержание существующего каталога данных MySQL прежде, чем перезапустить сервер MySQL.

  • Если Вы повторно устанавливаете или обновляете MySQL без остановки и удаления существующей службы MySQL и устанавливаете MySQL, используя MySQL Installer, Вы могли бы видеть эту ошибку:
    Error: Cannot create Windows service for MySql. Error: 0
    

    Это происходит, когда мастер конфигурации пытается установить службу и находит существующую службу с тем же самым именем.

    Одно решение этой проблемы состоит в том, чтобы выбрать имя службы не mysql, используя мастер конфигурации. Это позволяет новой службе быть установленной правильно, но оставляет устаревшую службу. Хотя это безопасно, лучше удалять старые службы, которые больше не находятся в использовании.

    Чтобы удалить старую службу mysql, выполните следующую команду как пользователя с административными привилегиями:

    C:\> sc delete mysql
    [SC] DeleteService SUCCESS
    

    Если утилита sc не доступна для Вашей версии Windows, загрузите delsrv с http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp и примените синтаксис delsrv mysql.

2.3.7. Постпроцессы установки в Windows

Есть инструменты GUI, которые выполняют большинство задач, описанных в этом разделе, включая:

  • MySQL Installer: Используемый, чтобы установить и обновить продукты MySQL.

  • MySQL Workbench: Управляет сервером MySQL и редактирует запросы SQL.
  • MySQL Notifier: Запускает, останавливает или перезапускает сервер MySQL, контролирует его состояние.
  • MySQL for Excel: Для редактирования данных MySQL из Microsoft Excel.

В случае необходимости, инициализируйте каталог данных и составьте таблицы привилегий MySQL. Операции установки в Windows, выполненные MySQL Installer, инициализируют каталог данных автоматически. Для установки из Zip-пакета Вы можете инициализировать каталог данных как описано в разделе 2.9.1.1 .

Относительно паролей, если Вы устанавливали MySQL, используя MySQL Installer, Вы, возможно, уже назначили пароль пользователю root (см. раздел 2.3.3 ). Иначе, используйте процедуру назначения пароля, данную в разделе 2.9.4.

Прежде, чем назначить пароли, Вы могли бы попытаться выполнить некоторые программы клиента, чтобы удостовериться, что Вы можете соединиться с сервером и что он работает должным образом. Удостоверьтесь, что сервер работает (см. раздел 2.3.5.5). Вы можете также настроить службу MySQL, которая работает автоматически, когда Windows запускается (см. раздел 2.3.5.8).

Эти инструкции предполагают, что Ваше текущее местоположение каталог установки MySQL и что есть подкаталог bin, содержащий программы MySQL, используемые здесь. Если это не так, скорректируйте пути команды соответственно.

Если Вы устанавливали MySQL через MySQL Installer (см. раздел 2.3.3), каталог установки по умолчанию C:\Program Files\MySQL\MySQL Server 8.0:

C:\> cd "C:\Program Files\MySQL\MySQL Server 8.0"

Общее местоположение установки для установки из Zip-архива C:\mysql:

C:\> cd C:\mysql

Альтернативно, добавьте каталог bin в переменную PATH системы. Это позволяет Вашему интерпретатору команд найти программы MySQL должным образом, так, чтобы Вы могли выполнить программу, вводя только ее имя. См. раздел 2.3.5.7.

Выполните следующие команды, чтобы проверить, что Вы можете получить информацию от сервера. Вывод должен быть подобным показанному здесь.

Используйте mysqlshow , чтобы видеть, какие базы данных существуют:

C:\> bin\mysqlshow
+--------------------+
| Databases          |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

Список установленных баз данных может измениться, но будет всегда включать минимум mysql и information_schema.

Предыдущая команда (и команды для других программ MySQL, таких как mysql), возможно, не работают, если правильная учетная запись MySQL не существует. Например, программа может потерпеть неудачу с ошибкой, или Вы не можете быть в состоянии рассмотреть все базы данных. Если Вы устанавливали MySQL через MySQL Installer, пользователь root будет создан автоматически с паролем, который Вы задали. В этом случае Вы должны использовать опции -u root и -p. Вы должны использовать эти опции, если Вы уже обеспечили начальные учетные записи MySQL. С -p программа клиента запрашивает пароль для root. Например:

C:\> bin\mysqlshow -u root -p
Enter password: (здесь вводится пароль)
+--------------------+
| Databases          |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

Если Вы определяете имя базы данных mysqlshow, выводит на экран список таблиц в пределах базы данных:

C:\> bin\mysqlshow mysql
Database: mysql
+---------------------------+
| Tables                    |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

Используйте mysql , чтобы выбрать информацию из таблицы в базе данных mysql:

C:\> bin\mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+------+-----------+-----------------------+
| User | Host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+

2.3.8. Обновление MySQL в Windows

Чтобы обновить MySQL в Windows, следуйте этим шагам:

  1. Изучите раздел 2.10.1 для дополнительной информации об обновлении MySQL, которая не является определенной для Windows.

  2. Всегда резервируйте свою текущую установку MySQL прежде, чем выполнить обновление. См. раздел 8.2.
  3. Загрузите последний дистрибутив Windows MySQL с http://dev.mysql.com/downloads/.
  4. Прежде, чем обновить MySQL, остановите сервер. Если сервер установлен как служба, остановите службу следующей командой:
    C:\> NET STOP MySQL
    

    Если Вы не выполняете сервер MySQL как службу, используйте mysqladmin , чтобы остановить его. Например, прежде, чем обновиться от MySQL 5.7 к 8.0, используйте mysqladmin из MySQL 5.7:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqladmin" -u root shutdown
    
  5. Прежде, чем обновить до MySQL 8.0 от версии ниже 4.1.5, или от версии MySQL, установленной из Zip-архива, к версии MySQL, установленной через Installation Wizard, Вы должны сначала вручную удалить предыдущую установку и службу MySQL (если сервер установлен как служба).

    Чтобы удалить службу MySQL, используйте следующую команду:

    C:\> C:\mysql\bin\mysqld --remove
    

    Если Вы не удаляете существующую службу, мастер установки MySQL может быть не в состоянии должным образом установить новую службу MySQL.

  6. Если Вы используете MySQL Installer, запустите его как описано в разделе 2.3.3.
  7. Если Вы обновляете MySQL из Zip-архива, распакуйте архив. Вы можете перезаписать свою существующую установку MySQL (обычно располагается в C:\mysql) или установить это в иной каталог, такой как C:\mysql5. Перезапись существующей установки рекомендуется. Однако, для обновлений (в противоположность установке впервые), Вы должны удалить каталог данных из своей существующей установки MySQL, чтобы не заменять Ваши текущие файлы с данными. Чтобы сделать так, следуйте этим шагам:

    1. Разархивируйте архив в некотором местоположении кроме Вашей текущей установки MySQL.

    2. Удалите каталог данных.
    3. Повторно создайте архив.
    4. Разархивируйте измененный архив в корень своей существующей установки.

    Или:

    1. Разархивируйте архив в некотором местоположении кроме Вашей текущей установки MySQL.

    2. Удалите каталог данных.
    3. Переместите каталог данных от текущей установки MySQL на место только что удаленного каталога данных.
    4. Удалите текущую установку MySQL.
    5. Переместите разархивированную установку на место только что удаленной установки.

  8. Если Вы выполняли MySQL как службу Windows, и Вы должны были удалить службу ранее в этой процедуре, надо повторно установить службу (см. раздел 2.3.5.8).

  9. Перезапустите сервер. Например, используйте NET START MySQL, если Вы выполняете MySQL как службу, или вызовите mysqld напрямую в противном случае.
  10. Как Администратор, выполните mysql_upgrade, чтобы проверить Ваши таблицы, попытаться восстановить их в случае необходимости, и обновить Ваши таблицы привилегий, если они изменились так, чтобы Вы могли использовать в своих интересах любые новые способности. См. раздел 5.4.5.
  11. Если Вы сталкиваетесь с ошибками, см. раздел 2.3.6.

2.4. Установка MySQL под OS X

Для списка версий OS X, которые поддерживает сервер MySQL, см. http://www.mysql.com/support/supportedplatforms/database.html .

MySQL for OS X доступен во многих различных формах:

  • Native Package Installer, который использует родной OS X установщик (DMG), чтобы провести Вас через установку MySQL. Для получения дополнительной информации см. раздел 2.4.2. Вы можете использовать установщик пакета с OS X. У пользователя, которого Вы используете, чтобы выполнить установку, должны быть привилегии администратора.

  • Сжатый архив TAR, который использует файл, упакованнвый с помощью Unix tar и gzip. Чтобы использовать этот метод, Вы должны будете открыть окно Terminal. Вы не нуждаетесь в привилегиях администратора, используя этот метод, поэтому Вы можете установить сервер MySQL где угодно, используя этот метод. Для получения дополнительной информации об использовании этого метода Вы можете использовать общие инструкции по архивам в разделе 2.2 .

    В дополнение к основной установке Package Installer, обратите внимание на разделы 2.4.3 и 2.4.4, оба из которых упрощают управление Вашей установкой.

2.4.1. Общие сведения об установке MySQL под OS X

Вы должны помнить следующие проблемы и примечания:

  • Демон launchd установлен, и он включает параметры конфигурации MySQL. Рассмотрите редактирование этого если нужно, см. документацию ниже для дополнительной информации. Кроме того, в macOS 10.10 удалена поддержка элемента запуска в пользу демонов launchd. Дополнительная привилегированная область MySQL под macOS System Preferences использует launchd.

  • Вы, возможно, нуждаетесь (или хотите) создать определенного пользователя mysql, чтобы иметь каталог MySQL и данные. Вы можете сделать это через Directory Utility, и пользователь mysql должен уже существовать. Для использования в однопользовательском режиме запись для _mysql (отметьте приставку подчеркивания) должен уже существовать в пределах системного файла /etc/passwd.
  • Поскольку установщик пакета MySQL устанавливает содержание MySQL в каталог, определенный версией и платформой Вы можете использовать это, чтобы обновить и мигрировать Вашу базу данных между версиями. Вы будете нуждаться в копии каталога data из старойверсии в новой или альтернативно определять значение datadir, чтобы установить местоположение каталога данных. По умолчанию, каталоги MySQL установлены под /usr/local/.
  • Вы могли бы хотеть добавить псевдонимы к файлу ресурса своей оболочки, чтобы облегчить доступ к обычно используемым программам, таким как mysql и mysqladmin из командной строки. Синтаксис для bash:
    alias mysql=/usr/local/mysql/bin/mysql
    alias mysqladmin=/usr/local/mysql/bin/mysqladmin
    

    Для tcsh надо:

    alias mysql /usr/local/mysql/bin/mysql
    alias mysqladmin /usr/local/mysql/bin/mysqladmin
    

    Еще лучше добавить /usr/local/mysql/bin к переменной окружения PATH. Вы можете сделать это, изменяя соответствующий файл запуска для Вашей оболочки. Для получения дополнительной информации см. раздел 5.2.1.

  • После того, как Вы скопировали файлы базы данных MySQL с предыдущей установки и успешно запустили новый сервер, Вы должны полагать, что удаление старых файлов установки сэкономит дисковое пространство. Дополнительно Вы должны также удалить более старые версии каталогов Package Receipt, расположенных в /Library/Receipts/mysql-VERSION .pkg.
  • До OS X 10.7 сервер MySQL был связан с OS X Server.

2.4.2. Установка MySQL под OS X, используя родные пакеты

Пакет расположен в файле образа диска (.dmg), так что Вы сначала должны смонтировать двойным щелчком его значок в Finder. Это должно смонтировать образ и вывести на экран его содержание.

Перед продолжением установки надо убедиться, что остановили все рабочие копии сервера MySQL при использовании MySQL Manager Application (в OS X Server), preference pane или mysqladmin shutdown .

Чтобы поставить MySQL, используя установщик пакета:

  1. Загрузите образ диска (.dmg). Версия сообщества доступна на http://dev.mysql.com/downloads/mysql/), который содержит установщик пакета MySQL. Двойным щелчком по файлу смонтируйте образ диска, чтобы видеть его содержание.

    Рис. 2.41. MySQL Package Installer: содержание DMG

  2. Двойной щелкните пакет установщика MySQL. Это названо согласно версии MySQL, который Вы загрузили. Например, если Вы загрузили сервер MySQL 8.0.1, кликать надо по mysql-8.0.1-osx-10.11-x86_64.pkg.

  3. Вам покажут вводный диалог установщика. Щелкните Continue.

    Рис. 2.42. MySQL Package Installer: введение

  4. Если Вы загрузили версию сообщества MySQL, Вам покажут копию соответствующей GNU General Public License. Кликните Continue и Agree для продолжения.

  5. На странице Installation Type Вы можете щелкнуть Install, чтобы выполнить мастер установки, используя все значения по умолчанию, щелкнуть Customize, чтобы изменить, какие компоненты установить (сервер MySQL, Preference Pane, Launchd Support, по умолчанию все) или кликнуть по Change Installation Location, чтобы изменить тип установки, при наличии.

    Рис. 2.43. MySQL Package Installer: Тип установки

    Рис. 2.44. MySQL Package Installer: выбор места назначения (местоположения установки)

    Рис. 2.45. MySQL Package Installer: настройка

  6. Нажмите Install для запуска установки.

  7. Как только установка была завершена успешно, Вам предоставят Ваш временный пароль root. Это не может быть восстановлено, таким образом, Вы должны сохранить этот пароль. Например:

    Рис. 2.46. MySQL Package Installer: временный пароль для Root

    После входа в MySQL, используя этот временный пароль, MySQL блокирует этот пароль и потребует, чтобы Вы создали новый.

  8. Затем следует сообщение Install Succeeded с кратким итогом. Закройте мастер.

    Рис. 2.47. MySQL Package Installer: итог

Сервер MySQL теперь установлен, но он не загружен (или запущен) по умолчанию. Используйте launchctl из командной строки или запустите MySQL, щелкая по "Start", используя MySQL preference pane. Для дополнительной информации см. разделы 2.4.3 и 2.4.4. Используйте MySQL Preference Pane или launchd, чтобы сконфигурировать MySQL для автоматического запуска.

Устанавливая использование установщика пакета, файлы установлены в каталог в пределах /usr/local в соответствии с названием версии установки и платформы. Например, файл установщика mysql-8.0.1-osx10.11-x86_64.dmg установит MySQL в /usr/local/mysql-8.0.1-osx10.11-x86_64/. Следующая таблица показывает расположение каталога установки.

Таблица 2.5. Расположение установки MySQL на OS X

Каталог Содержание каталога
bin, scripts Сервер mysqld , клиент и утилиты
data Файлы системного журнала, базы данных
docs Документы, такие как информация о версии
includeФайлы заголовков
libБиблиотеки
manUnix manual pages
mysql-testMySQL test suite
share Разные файлы поддержки, включая сообщения об ошибках, типовые конфигурационные файлы, SQL для установки базы данных
support-files Скрипты и типовые конфигурационные файлы
/tmp/mysql.sock Местоположение скоета MySQL Unix

Во время процесса установки создается ссылка /usr/local/mysql на соответствующий каталог.

2.4.3. Установка демона запуска MySQL

OS X использует демоны запуска, чтобы автоматически запустить, остановить и управлять процессами и приложениями, такими как MySQL.

По умолчанию, пакет установки (DMG) на OS X установит файл launchd с именем /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist, который содержит plist-определение, подобное:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key><false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key><false/>
<key>UserName</key><string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
</array>
<key>WorkingDirectory</key><string>/usr/local/mysql</string>
</dict>
</plist>

Некоторые пользователи сообщают, что добавление plist DOCTYPE заставляет launchd терпеть неудачу, несмотря на прохождение проверки lint. Мы подозреваем, что это ошибка copy-n-paste. md5 контрольная сумма файла, содержащего вышеупомянутый отрывок, 24710a27dc7a28fb7ee6d825129cd3cf.

Чтобы включить сервис launchd, Вы можете также:

  • Кликнуть Start MySQL Server из MySQL preference pane.

    Рис. 2.48. MySQL Preference Pane: расположение

    Рис. 2.49. MySQL Preference Pane: использование

  • Или вручную загрузите файл launchd.

    shell> cd /Library/LaunchDaemons
    shell> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
    
  • Чтобы сконфигурировать MySQL, чтобы автоматически запустить в программе начального запуска, Вы можете:
    shell> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
    

Обновляя сервер MySQL, процесс установки удалит старые элементы запуска, которые были установлены с сервером MySQL 5.7.7 и ниже.

Кроме того, обновление заменит Ваш существующий файл launchd того же самого имени.

Дополнительная информация о launchd:

  • plist переопределяет записи в my.cnf, потому что их передают как параметры командной строки. Для дополнительной информации о передаче опций программы см. раздел 5.2.3.

  • Раздел ProgramArguments определяет параметры командной строки, которые передают в программу, которая является исполняемым модулем mysqld в этом случае.
  • Значение по умолчанию определения plist написано с менее сложными случаями использования. Для более сложных установок Вы можете хотеть удалить некоторые из параметров и вместо этого положиться на конфигурационный файл MySQL, такой как my.cnf.
  • Если Вы редактируете файл plist, то отмените опцию установщика, повторно устанавливая или обновляя MySQL. Иначе Ваш отредактированный plist файл будет перезаписан, и все редактирования будут потеряны.

Поскольку значение по умолчанию plist определяет несколько ProgramArguments, Вы могли бы удалить большинство этих параметров и вместо этого положиться на Ваш конфигурационный файл my.cnf MySQL, чтобы определить их. Например:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key><false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key><false/>
<key>UserName</key><string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>WorkingDirectory</key><string>/usr/local/mysql</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
</array>
</dict>
</plist>

В этом случае опции basedir , datadir, plugin_dir, log_error и pid_file были удалены из определения plist, а затем Вы Вы могли бы определить их в my.cnf.

2.4.4. Установка и использование MySQL Preference Pane

MySQL Installation Package включает MySQL preference pane, которая позволяет Вам запустить, остановить и управлять автоматизированным запуском во время начальной загрузки Вашей установки MySQL.

Эта preference pane установлена по умолчанию и перечислена в окне System Preferences.

Рис. 2.50. MySQL Preference Pane: расположение

Чтобы установить MySQL Preference Pane:

  1. Загрузите образ диска (.dmg), который содержит установщик пакета MySQL. Двойной щелчок по файлу смонтирует образ диска и покажет его содержание.

    Рис. 2.51. MySQL Package Installer: содержание DMG

  2. Пройдите процесс установки сервера MySQL, как описано в документации в разделе 2.4.2.

  3. Нажмите Customize на шаге Installation Type. Опция "Preference Pane" перечислена там и включена по умолчанию, удостоверьтесь, что это так.

    Рис. 2.52 MySQL Installer on OS X: Customize

  4. Завершите процесс установки сервера MySQL.

MySQL preference pane запускает и останавливает только MySQL, установленный из пакета установки MySQL, который был установлен в местоположении по умолчанию.

Как только MySQL preference pane установлен, Вы можете управлять своим сервером MySQL, используя preference pane. Для этого откройте System Preferences... в меню Apple. Выберите MySQL preference pane, щелкая по эмблеме MySQL в пределах нижнего раздела списка preference panes.

Рис. 2.53. MySQL Preference Pane: расположение

Рис. 2.54. MySQL Preference Pane: использование

MySQL Preference Pane показывает текущий статус сервера MySQL, показывая stopped (красный), если сервер не работает и running (зеленый), если сервер был уже запущен. Также показывает текущую установку того, был ли сервер MySQL установлен запускаться автоматически.

  • Чтобы запустить сервер MySQL, используя preference pane:

    Кликните Start MySQL Server. Вы можете быть запрошены об имени и пароле пользователя с привилегиями администратора, чтобы запустить сервер MySQL.

  • Чтобы остановить сервер MySQL, используя preference pane:

    Кликните Stop MySQL Server. Вы можете быть запрошены об имени и пароле пользователя с привилегиями администратора, чтобы запустить сервер MySQL.

  • Чтобы автоматически запустить сервер MySQL, когда система загружается:

    Проверьте, что флажок рядом с Automatically Start MySQL Server on Startup установлен.

  • Чтобы автоматически не запускать сервер MySQL, когда система загружается:

    Проверьте, что флажок рядом с Automatically Start MySQL Server on Startup снят.

Вы можете закрыть окно System Preferences... , как только Вы завершили свои настройки.

2.5. Установка MySQL в Linux

Linux поддерживает много различных решений для того, чтобы установить MySQL. Мы рекомендуем, чтобы Вы использовали один из дистрибутивов от Oracle, для которого несколько методов для установки доступны:

Как альтернатива, Вы можете использовать диспетчер пакетов на своей системе, чтобы автоматически загрузить и установить MySQL с пакетами от родных репозитариев программного обеспечения Вашего дистрибутива Linux. Эти родные пакеты часто на несколько версий позади в настоящее время доступного выпуска. Вы также обычно будете неспособны установить выпуски развития (DMR), поскольку они обычно не делаются доступными в родных репозитариях. Для получения дополнительной информации об использовании родных установщиков пакета см. раздел 2.5.6.

Для многих установок Linux Вы будете хотеть настроить MySQL, который будет запущен автоматически, когда Ваша машина запустится. Многие из родных установок пакета выполняют эту работу для Вас, но для исходных текстов и решений для RPM, Вы, возможно, должны настроить это отдельно. Необходимый скрипт, mysql.server , может быть найден в каталоге support-files в соответствии с каталогом установки MySQL или в исходном дереве MySQL. Вы можете установить это как /etc/init.d/mysql для автоматического запуска MySQL и завершения работы. См. раздел 5.3.3.

2.5.1. Установка MySQL в Linux, используя репозитарий Yum

MySQL обеспечивает репозитарий программного обеспечения стиля Yum для следующих платформ Linux:

  • EL6 и EL7-платформы (например, соответствующие версии Red Hat Enterprise Linux, Oracle Linux и CentOS).

  • Fedora 23 и 24.

В настоящее время MySQL Yum для вышеупомянутых платформ обеспечивает пакеты RPM для того, чтобы они установили сервер MySQL, клиента, инструментальные средства MySQL, утилиты MySQL, Connector/ODBC и Connector/Python (не все пакеты доступны для всех платформ).

Прежде, чем начать

Как популярное, общедоступное, программное обеспечение, MySQL в его оригинальной или повторно упакованной форме широко установлен на многих системах из различных источников, включая различные сайты для скачивания программного обеспечения, репозитарии программного обеспечения и так далее. Следующие инструкции предполагают, что MySQL не установлен на Вашей системе, используя распределенный третьей стороне пакет RPM, если это не так, следуйте инструкциям, данным в разделе 2.10.1.2 или на Replacing a Third-Party Distribution of MySQL Using the MySQL Yum Repository.

Шаги для новой установки MySQL

Следуйте за шагами ниже, чтобы установить последнюю версию GA MySQL из репозитария MySQL Yum:

  1. Добавление репозитария MySQL Yum

    Во-первых, добавьте репозитарий MySQL Yum к списку репозитариев своей системы. Это одноразовая работа, которая может быть выполнена, устанавливая RPM, обеспеченный MySQL. Следуйте за этими шагами:

    1. Перейдите на страницу Download MySQL Yum Repository ( http://dev.mysql.com/downloads/repo/yum/) в MySQL Developer Zone.

    2. Выберите и загрузите пакет выпуска для своей платформы.
    3. Установите загруженный пакет выпуска следующей командой, заменяя platform-and-version-specific-package-name названием загруженного пакета RPM:
      shell> sudo yum localinstall platform-and-version-specific-package-name.rpm
      

      Для систем EL6 команда:

      shell> sudo yum localinstall mysql57-community-release-el6-{version-number}.noarch.rpm
      

      Для систем EL7 команда:

      shell> sudo yum localinstall mysql57-community-release-el7-{version-number}.noarch.rpm
      

      Для Fedora 23:

      shell> sudo dnf localinstall mysql57-community-release-fc23-{version-number}.noarch.rpm
      

      Для Fedora 24:

      shell> sudo dnf localinstall mysql57-community-release-fc24-{version-number}.noarch.rpm
      

      Команда установки добавляет репозитарий MySQL Yum к списку репозитариев Вашей системы и загружает ключ GnuPG, чтобы проверить целостность пакетов программ. См. раздел 2.1.3.2 для деталей о проверке ключа GnuPG.

      Вы можете проверить, что репозитарий был успешно добавлен следующей командой (для dnf-систем замените yum на dnf):

      shell> yum repolist enabled | grep "mysql.*-community.*"
      

    Как только репозитарий включен на Вашей системе, любое обновление в масштабе всей системы командой yum update (или dnf upgrade для dnf-систем) обновит пакеты MySQL на Вашей системе, а также заменит любые имеющие отношение к третьей стороне пакеты, если Yum найдет замены для них в репозитарии MySQL Yum, см. раздел 2.10.1.2 и, для обсуждения некоторых возможных эффектов этого на Вашей системе, см. Обновление совместно используемых библиотек клиента.

  2. Выбор ряда выпуска

    Используя репозитарий, последний ряд GA (в настоящее время MySQL 5.7) выбран для установки по умолчанию. Если это то, что Вы хотите, Вы можете пропустить к следующему шагу.

    В пределах репозитария различные серии выпуска MySQL Community Server размещены в различных подрепозитариях. Подрепозитарий для последнего ряда GA (в настоящее время MySQL 5.7) включен по умолчанию, а подрепозитарии для всех других рядов (например, MySQL 8.0) отключены по умолчанию. Используйте эту команду, чтобы видеть все подрепозитарии в репозитарии и видеть, кто из них включен или отключен (для dnf-систем, замените yum на dnf):

    shell> yum repolist all | grep mysql
    

    Чтобы установить последний выпуск из последнего ряда GA, никакая конфигурация не необходима. Чтобы установить последний выпуск из определенного ряда кроме последнего ряда GA, отключите подрепозитарий для последнего ряда GA и включите подрепозитарий для определенного ряда прежде, чем выполнить команду установки. Если Ваша платформа поддерживает yum-config-manager, Вы можете сделать это, этими командами, которые отключают подрепозитарий для 5.7 и включают для ряда 8.0:

    shell> sudo yum-config-manager --disable mysql57-community
    shell> sudo yum-config-manager --enable mysql80-community
    

    Для dnf-систем:

    shell> sudo dnf config-manager --disable mysql57-community
    shell> sudo dnf config-manager --enable mysql80-community
    

    Помимо использования yum-config-manager или dnf config-manager, Вы можете также выбрать ряд выпуска, редактируя вручную файл /etc/yum.repos.d/mysql-community.repo. Это типичный вход для серийного подрепозитария выпуска в файле:

    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    Найдите вход для подрепозитария, который Вы хотите сконфигурировать, и отредактируйие опцию enabled. Определите enabled=0, чтобы отключить подрепозитарий, или enabled=1 для включения. Например, чтобы установить MySQL 8.0, удостоверьтесь, что Вы имеете enabled=0 для вышеупомянутого входа подрепозитария для MySQL 5.7 и enabled=1 для входа ряда 8.0:

    # Enable to use MySQL 8.0
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    Вы должны только включить подрепозитарию для одного ряда выпуска в любое время. Когда подрепозитарии больше чем для одного ряда выпуска будут включены, последний ряд будет использоваться Yum.

    Проверьте, что правильные подрепозитарии были включены и отключены, выполняя следующую команду и проверяя ее вывод (для dnf-систем замените yum на dnf):

    shell> yum repolist enabled | grep mysql
    
  3. Установка MySQL

    Установка MySQL делается следующей командой (для dnf-систем замените yum на dnf):

    shell> sudo yum install mysql-community-server
    

    Это устанавливает пакет для сервера MySQL (mysql-community-server), а также пакеты для компонентов, требуемых чтобы выполнять сервер, включая пакеты для клиента (mysql-community-client), сообщения об ошибках и наборы символов для клиента и сервера (mysql-community-common) и совместно используемые библиотеки клиента (mysql-community-libs).

  4. Запуск сервера MySQL

    Запустите сервер MySQL следующей командой:

    shell> sudo service mysqld start
    Starting mysqld:[ OK ]
    

    Вы можете проверить состояние сервера MySQL следующей командой:

    shell> sudo service mysqld status
    mysqld (pid 3066) is running.
    

При начальном запуске сервера происходит следующее, учитывая, что каталог данных сервера пуст:

  • Сервер инициализирован.

  • SSL-сертификат и ключевые файлы произведены в каталоге данных.
  • Плагин validate_password установлен и включен.
  • Учетная запись пользователя 'root'@'localhost создается. Пароль для суперпользователя установлен и сохранен в файле журнала ошибок. Чтобы показать это, используйте следующую команду:
    shell> sudo grep 'temporary password' /var/log/mysqld.log
    

    Измените пароль как можно скорее, входя в систему с временным паролем и установите пользовательский пароль для учетной записи:

    shell> mysql -uroot -p
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
    

    Плагин MySQL validate_password установлен по умолчанию. Это потребует, чтобы пароли содержали по крайней мере одну прописную букву, одну строчную букву, одну цифру, один специальный символ и что полная длина пароля по крайней мере 8 символов.

Информация о совместимости для EL7-платформ: следующие пакеты RPM от родных репозитариев программного обеспечения платформ являются несовместимыми с пакетом от репозитария MySQL Yum, который устанавливает сервер MySQL. Как только Вы установили MySQL, используя репозитарий MySQL Yum, Вы не будете в состоянии установить эти пакеты (и наоборот).

  • akonadi-mysql.

Установка дополнительных продуктов MySQL и компонентов через Yum

Вы можете использовать Yum, чтобы установить и управлять отдельными компонентами MySQL. Некоторые из этих компонентов размещены в подрепозитариях репозитария MySQL Yum: например, MySQL Connectors должны быть найдены в подрепозитарии MySQL Connectors Community, а MySQL Workbench в MySQL Tools Community. Вы можете использовать следующую команду, чтобы перечислить пакеты для всех компонентов MySQL, доступных для Вашей платформы из репозитария MySQL Yum (для dnf-систем замените yum на dnf):

shell> sudo yum --disablerepo=\* --enablerepo='mysql*-community*' list available

Установите любые пакеты своего выбора со следующей командой, заменяя package-name на имя пакета (для dnf-систем замените yum на dnf):

shell> sudo yum install package-name

Например, чтобы установить инструментальные средства MySQL на Fedora 24:

shell> sudo dnf install mysql-workbench-community

Чтобы установить совместно используемые библиотеки клиента:

shell> sudo yum install mysql-community-libs

Обновление MySQL через Yum

Помимо установки, Вы можете также выполнить обновления для продуктов MySQL и компонентов, используя репозитарий MySQL Yum. См. раздел 2.10.1.2.

2.5.2. Установка MySQL на Linux, используя MySQL репозитарий APT

Репозитарий MySQL APT обеспечивает deb-пакеты для установки и управления сервером MySQL, клиентом и другими компонентами на следующих платформах Linux:

  • Debian 8.x (jessie)

  • Ubuntu 14.04 LTS (Trusty Tahr)
  • Ubuntu 16.04 (Xenial Xerus)

Инструкции для того, чтобы использовать репозитарий MySQL APT доступны на A Quick Guide to Using the MySQL APT Repository.

2.5.3. Установка MySQL на Linux, используя MySQL репозитарий SLES

Репозитарий MySQL SLES обеспечивает пакеты RPM для установки и управления сервером MySQL, клиентом, и другими компонентами на SUSE Enterprise Linux Server.

Инструкции для того, чтобы использовать репозитарий MySQL SLES доступны на A Quick Guide to Using the MySQL SLES Repository.

Репозитарий MySQL SLES находится в разработке. Мы поощряем Вас пробовать это и предоставлять нам обратную связь. Пожалуйста, сообщите о любых ошибках или несогласованностях, которые Вы наблюдаете, через Bugs Database.

2.5.4. Установка MySQL на Linux, используя RPM-пакеты Oracle

Рекомендуемый способ установить MySQL на RPM-Linux дистрибутивах при использовании пакетов RPM, обеспеченных Oracle. Есть два источника для того, чтобы получить их, для Community Edition MySQL:

RPM-дистрибутивы MySQL также обеспечены другими поставщиками. Знайте, что они могут отличаться от созданных Oracle в особенностях, способностях и соглашениях (включая коммуникационную установку), и что инструкции по установке в этом руководстве не обязательно относятся к ним.

RPM-пакеты для MySQL перечислены в следующих таблицах:

Таблица 2.6. RPM-пакеты для MySQL Community Edition

ИмяОбзор
mysql-community-server Сервер и связанные инструменты
mysql-community-client Клиент MySQL и утилиты
mysql-community-common Общие файлы для сервера и библиотек клиента
mysql-community-devel Заголовочные файлы и библиотеки для приложений-клиентов базы данных MySQL
mysql-community-libs Совместно используемые библиотеки для приложений-клиентов базы данных MySQL
mysql-community-libs-compat Совместно используемые библиотеки совместимости для предыдущих установок MySQL
mysql-community-embedded Библиотека MySQL embedded
mysql-community-embedded-devel Заголовочные файлы и библиотеки для MySQL как встраиваемой библиотеки
mysql-community-test Испытательный набор для сервера MySQL

Таблица 2.7. RPM-пакеты для MySQL Enterprise Edition

ИмяОбзор
mysql-commercial-server Сервер и связанные инструменты
mysql-commercial-client Клиент MySQL и утилиты
mysql-commercial-common Общие файлы для сервера и библиотек клиента
mysql-commercial-devel Заголовочные файлы и библиотеки для приложений-клиентов базы данных MySQL
mysql-commercial-libs Совместно используемые библиотеки для приложений-клиентов базы данных MySQL
mysql-commercial-libs-compat Совместно используемые библиотеки совместимости для предыдущих установок MySQL
mysql-commercial-embedded Библиотека MySQL embedded
mysql-commercial-embedded-devel Заголовочные файлы и библиотеки для MySQL как встраиваемой библиотеки
mysql-commercial-test Испытательный набор для сервера MySQL

У полных имен для RPM есть следующий синтаксис:

packagename-version-distribution-arch.rpm

Значения distribution и arch указывают на дистрибутив Linux и тип процессора, для которого был создан пакет. См. таблицу ниже для списков идентификаторов дистрибутива:

Таблица 2.8. Идентификаторы дистрибутива пакета MySQL Linux RPM

Значение дистрибутива Намеченное использование
el6, el7 Red Hat Enterprise Linux/Oracle Linux/CentOS 6 или 7
fc23, fc24 Fedora 23 или 24
sles12 SUSE Linux Enterprise Server 12

Чтобы уидеть все файлы в пакете RPM (например, mysql-community-server), используйте следующую команду:

shell> rpm -qpl mysql-community-server-version-distribution-arch.rpm

Обсуждение в остальной части этого раздела применяется только к процессу установки, используя пакеты RPM, непосредственно загруженные из Oracle, а не через репозитарий MySQL.

Отношения зависимости существуют среди некоторых из пакетов. Если Вы планируете установить многие из пакетов, Вы можете хотеть загрузить вместо этого файл tar, который содержит все упомянутые выше пакеты RPM, так, чтобы Вы не загрузили их отдельно.

В большинстве случаев, Вы должны установить пакеты mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common и mysql-community-libs-compat, чтобы получить функциональную, стандартную установку MySQL. Чтобы выполнить такую стандартную, минимальную установку, пойдите в папку, которая содержит все те пакеты (и предпочтительно никакие другие пакеты RPM с аналогичными именами) и примените следующую команду:

shell> sudo yum install mysql-community-{server,client,common,libs}-*

Замените yum на zypper для систем SLES или на dnf для dnf-систем (подобноe Fedora 23 или 24).

В то время как очень предпочтительно использовать высокоуровневый инструмент управления пакетами, например, yum, чтобы установить пакеты, пользователи, которые предпочитают прямые команды rpm могут заменить yum install на rpm -Uvh , однако, использование rpm -Uvh делает процесс установки более склонным к отказу, из-за потенциальной зависимости пакетов.

Чтобы установить только программы клиента, Вы можете пропустить mysql-community-server в Вашем списке пакетов, примените следующую команду:

shell> sudo yum install mysql-community-{client,common,libs}-*

Замените yum на zypper для SLES и на dnf для dnf-систем (Fedora 23 и 24).

Стандартная установка MySQL, используя пакеты RPM приводит к файлам и ресурсам, создаваемым в соответствии с системными каталогами, показанными в следующей таблице.

Таблица 2.9. Расположение установки MySQL для пакетов RPM Linux из зоны разработки MySQL

Файлы или ресурсы Местоположение
Программы клиента и скрипты /usr/bin
Сервер mysqld /usr/sbin
Конфигурационный файл /etc/my.cnf
Каталог данных /var/lib/mysql
Файл журнала ошибок

Для платформ RHEL, Oracle Linux, CentOS или Fedora: /var/log/mysqld.log

Для SLES: /var/log/mysql/mysqld.log

Значение secure_file_priv/var/lib/mysql-files
Скрипт System V init

Для RHEL, Oracle Linux, CentOS или Fedora: /etc/init.d/mysqld

Для SLES: /etc/init.d/mysql

Сервис Systemd

Для RHEL, Oracle Linux, CentOS или Fedora: mysqld

Для SLES: mysql

Файл Pid /var/run/mysql/mysqld.pid
Сокет/var/lib/mysql/mysql.sock
Каталог ключей /var/lib/mysql-keyring
Unix manual pages /usr/share/man
Включаемые файлы (заголовки) /usr/include/mysql
Библиотеки /usr/lib/mysql
Разные файлы поддержки (например, сообщения об ошибках и файлы набора символов) /usr/share/mysql

Установка также создает пользователя и группу mysql.

Установка предыдущих версий MySQL, используя более старые пакеты, возможно, создала конфигурационный файл /usr/my.cnf. Перенесите настройки из него в /etc/my.cnf.

MySQL автоматически не запущен в конце процесса установки. Для Red Hat Enterprise Linux, Oracle Linux, CentOS и Fedora используют следующую команду, чтобы запустить MySQL:

shell> sudo service mysqld start

Для SLES команда та же самая, но имя службы отличается:

shell> sudo service mysql start

Если операционная система поддерживает systemd, команды service, такие как stop, start, status и restart должны использоваться, чтобы управлять службой сервера MySQL. Служба mysqld включена по умолчанию, и она запускается в системе. Заметьте, что определенные вещи могли бы работать по-другому в systemd-платформами: например, изменение местоположения каталога данных могло бы вызвать проблемы. См. раздел 2.5.9.

При начальном запуске сервера происходит следующее, учитывая, что каталог данных сервера пуст:

  • Сервер инициализирован.

  • SSL-сертификаты и ключевые файлы произведены в каталоге данных.
  • Плагин validate_password установлен и включен.
  • Учетная запись пользователя 'root'@'localhost' создается. Пароль для суперпользователя установлен и сохранен в файле журнала ошибок. Чтобы показать это, используйте следующую команду для RHEL, Oracle Linux, CentOS и Fedora:
    shell> sudo grep 'temporary password' /var/log/mysqld.log
    

    Используйте следующую команду для систем SLES:

    shell> sudo grep 'temporary password' /var/log/mysql/mysqld.log
    

    Следующий шаг: войти в систему с временным паролем и установить пользовательский пароль для учетной записи пользователя:

shell> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

Плагин MySQL validate_password установлен по умолчанию. Это потребует, чтобы пароли содержали по крайней мере одну прописную букву, одну строчную букву, одну цифру, один специальный символ и что полная длина пароля по крайней мере 8 символов.

Если что-то идет не так, как надо во время установки, Вы могли бы найти информацию об отладке в файле журнала ошибок /var/log/mysqld.log.

Для некоторых дистрибутивов Linux может быть необходимо увеличить предел описателей файла, доступных mysqld. См. раздел B.5.2.17.

Установка библиотек клиента от разных версий MySQL. Возможно установить много версий библиотеки клиента, это касается случая, если Вы хотите поддержать совместимость с более старыми приложениями. Чтобы установить более старую библиотеку клиента, используйте опцию --oldpackage для rpm. Например, чтобы установить mysql-community-libs-5.5 на EL6, которая имеет libmysqlclient.21 из MySQL 8.0, используйте команду:

shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm

Пакет отладки. Специальная разновидность сервера MySQL, собранного с debug package была включена в пакеты RPM сервера. Это выполняет отладку, проверку памяти и производит файл следа, когда сервер работает. Чтобы использовать эту версию, запустите MySQL как /usr/sbin/mysqld-debug, вместо того, чтобы запустить это как службу или /usr/sbin/mysqld. См. раздел 26.5.3 для опций отладки, которые Вы можете использовать.

Восстановление RPM из исходных SRPM. Исходный код пакетов SRPM для MySQL доступен для скачивания. Они могут использоваться как есть, чтобы восстановить MySQL RPM со стандартной цепочкой rpmbuild .

2.5.5. Установка MySQL на Linux, используя пакеты Debian от Oracle

Oracle обеспечивает пакеты Debian для того, чтобы они установили MySQL на системах Debian Linux. Пакеты доступны через два различных канала:

  • MySQL APT Repository. Это лучший метод для того, чтобы установить MySQL на системах подобных Debian, поскольку это обеспечивает простой и удобный способ установить и обновить продукты MySQL. Для деталей см. раздел 2.5.2.

  • MySQL Developer Zone's Download Area. Для деталей см. раздел 2.1.2. Следующее некоторая информация о пакетах Debian, доступных там и инструкции для того, чтобы установить их:

    • Различные пакеты Debian обеспечены в MySQL Developer Zone для того, чтобы они установили различные компоненты MySQL на различных платформах Debian или Ubuntu (в настоящее время Debian 8 и Ubuntu 14 и 16 поддержаны). Привилегированный метод должен использовать связку архивов tar, которая содержит пакеты, необходимые для основной установки MySQL. У связок tar есть имена в формате mysql-server_MVER-DVER_CPU.deb-bundle.tar. MVER версия MySQL и DVER версия Linux. CPU указывает на тип процессора или семейство, для которого пакет создан, как показано в следующей таблице:

      Таблица 2.10. Идентификаторы CPU пакетов установки MySQL для Debian и Ubuntu

      CPU Намеченный тип процессора
      i386 Pentium или выше, 32 bit
      amd64 64-bit x86
    • После загрузки tar-архива распакуйте его следующей командой:

      shell> tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
      
    • Вы, возможно, должны установить библиотеку libaio, если ее еще нет в системе:
      shell> sudo apt-get install libaio1
      
    • Предварительно сконфигурируйте пакет сервера MySQL следующей командой:
      shell> sudo dpkg-preconfigure mysql-community-server_*.deb
      

      Вас попросят предоставить пароль пользователя root для Вашей установки MySQL. Вам могут также задать другие вопросы относительно установки.

      Удостоверьтесь, что Вы помните пароль root, который Вы устанавливаете. Пользователи, которые хотят установить пароль позже, могут оставить область password пустой в диалоговом окне, и только нажать OK. В этом случае доступ root к серверу заверен, используя MySQL Socket Peer-Credential Authentication Plugin для соединений, используя файл сокета Unix. Вы можете установить пароль позже, используя mysql_secure_installation.

    • Для основной установки сервера MySQL, установите пакет общих файлов базы данных, пакет клиента, метапакет клиента, пакет сервера и метапакет сервера (в этом порядке!). Вы можете сделать это единственной командой:

      shell> sudo dpkg -i mysql-{common,community-client,client,community-server,server}_*.deb
      

      Если Вы предупреждаетесь относительно зависимостей dpkg, Вы можете установить их используя apt-get:

      sudo apt-get -f install
      

      Вот где файлы установлены в системе:

      • Все конфигурационные файлы (к примеру, my.cnf) находятся в /etc/mysql.

      • Все двоичные модули, библиотеки, заголовки и т.д. находятся в /usr/bin и /usr/sbin.
      • Каталог данных находится в /var/lib/mysql.

Дистрибутивы Debian MySQL также обеспечены другими поставщиками. Знайте, что они могут отличаться от созданных Oracle, и что инструкции в этом руководстве не обязательно относятся к их установке.

2.5.6. Установка MySQL на Linux из родных репозитариев программного обеспечения

Много дистрибутивов Linux включают версию сервера MySQL, инструментов клиента и компонентов развития в их родных репозитариях программного обеспечения и могут быть установлены со стандартными системами управления пакета платформ. Этот раздел обеспечивает исходные мысли для того, чтобы установить MySQL, используя эти системы управления пакета.

Родные пакеты часто на несколько версий позади в настоящее время доступного выпуска. Вы также обычно будете неспособны установить выпуски (DMR), поскольку они обычно не делаются доступными в родных репозитариях. Перед переходом мы рекомендуем, чтобы Вы проверили другие опции установки, описанные в разделе 2.5.

Конкретные инструкции для дистрибутивов:

  • Red Hat Linux, Fedora, CentOS

    Для EL6 или EL7 и Fedora 23 или 24, Вы можете установить MySQL, используя репозитарий MySQL Yum вместо родного репозитария программного обеспечения платформы. См. раздел 2.5.1.

    Для Red Hat и подобных дистрибутивов, дистрибутив MySQL разделен на многие отдельные пакеты, mysql для инструментов клиента, mysql-server для сервера и связанных инструментов и mysql-libs для библиотек. Библиотеки требуются, если Вы хотите обеспечить связь с различными языками и средами, такими как Perl, Питон и другие.

    Чтобы установить, используйте yum, чтобы определить пакеты, которые Вы хотите установить. Например:

    root-shell> yum install mysql mysql-server mysql-libs mysql-server
    Loaded plugins: presto, refresh-packagekit
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package mysql.x86_64 0:5.1.48-2.fc13 set to be updated
    ---> Package mysql-libs.x86_64 0:5.1.48-2.fc13 set to be updated
    ---> Package mysql-server.x86_64 0:5.1.48-2.fc13 set to be updated
    --> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.48-2.fc13.x86_64
    --> Running transaction check
    ---> Package perl-DBD-MySQL.x86_64 0:4.017-1.fc13 set to be updated
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package ArchVersion RepositorySize
    ================================================================================
    Installing:
     mysql x86_645.1.48-2.fc13 updates889 k
     mysql-libsx86_645.1.48-2.fc13 updates1.2 M
     mysql-serverx86_645.1.48-2.fc13 updates8.1 M
    Installing for dependencies:
     perl-DBD-MySQLx86_644.017-1.fc13updates136 k
    
    Transaction Summary
    ================================================================================
    Install 4 Package(s)
    Upgrade 0 Package(s)
    
    Total download size: 10 M
    Installed size: 30 M
    Is this ok [y/N]: y
    Downloading Packages:
    Setting up and reading Presto delta metadata
    Processing delta metadata
    Package(s) data still to download: 10 M
    (1/4): mysql-5.1.48-2.fc13.x86_64.rpm| 889 kB 00:04
    (2/4): mysql-libs-5.1.48-2.fc13.x86_64.rpm | 1.2 MB 00:06
    (3/4): mysql-server-5.1.48-2.fc13.x86_64.rpm | 8.1 MB 00:40
    (4/4): perl-DBD-MySQL-4.017-1.fc13.x86_64.rpm| 136 kB 00:00
    --------------------------------------------------------------------------------
    Total 201 kB/s |10 MB 00:52
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing : mysql-libs-5.1.48-2.fc13.x86_641/4
    Installing : mysql-5.1.48-2.fc13.x86_64 2/4
    Installing : perl-DBD-MySQL-4.017-1.fc13.x86_64 3/4
    Installing : mysql-server-5.1.48-2.fc13.x86_644/4
    
    Installed:
    mysql.x86_64 0:5.1.48-2.fc13mysql-libs.x86_64 0:5.1.48-2.fc13
    mysql-server.x86_64 0:5.1.48-2.fc13
    
    Dependency Installed:
    perl-DBD-MySQL.x86_64 0:4.017-1.fc13
    Complete!
    

    MySQL и сервер MySQL должны теперь быть установлены. Типовой конфигурационный файл установлен в /etc/my.cnf. Скрипт init, чтобы запустить и остановить сервер, будет установлен в /etc/init.d/mysqld. Чтобы запустить сервер MySQL используют service:

    root-shell> service mysqld start
    

    Чтобы позволить серверу быть запущенным и остановленным автоматически во время начальной загрузки, используйте chkconfig:

    root-shell> chkconfig --levels 235 mysqld on
    

    Это позволяет серверу MySQL быть запущенным (и остановленным) автоматически на указанном уровне выполнения.

    Таблицы базы данных будут автоматически созданы для Вас, если они еще не существуют. Вы должны, однако, выполнить mysql_secure_installation, чтобы установить пароли на Вашем сервере.

  • Debian, Ubuntu, Kubuntu

    Для Debian 8 и Ubuntu 14 и 16 MySQL может быть установлен, используя MySQL APT Repository вместо родного репозитария программного обеспечения платформы. См. раздел 2.5.2 .

    В Debian и связанных дистрибутивах, есть два пакета для MySQL в их репозитариях программного обеспечения, mysql-client и mysql-server, для компонентов клиента и сервера соответственно. Вы должны определить версию явно, например, mysql-client-5.1, чтобы гарантировать, что Вы устанавливаете версию MySQL, которую хотите.

    Чтобы загрузить и установить, включая любые зависимости, используют apt-get, определяя пакеты, которые Вы хотите установить.

    Перед установкой удостоверьтесь, что Вы обновляете Ваши индексные файлы apt-get, чтобы гарантировать, что Вам загружают последнюю доступную версию.

    Типовая установка пакетов MySQL могла бы быть похожей на это (некоторые разделы обрезаны для ясности):

    root-shell> apt-get install mysql-client-5.1 mysql-server-5.1
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following packages were automatically installed and are no longer required:
    linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic
    Use 'apt-get autoremove' to remove them.
    The following extra packages will be installed:
    bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl
    libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx
    mysql-common postfix
    Suggested packages:
    dbishell libipc-sharedcache-perl tinyca procmail postfix-mysql postfix-pgsql
    postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb
    The following NEW packages will be installed
    bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl
    libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx
    mysql-client-5.1 mysql-common mysql-server-5.1 postfix
    0 upgraded, 13 newly installed, 0 to remove and 182 not upgraded.
    Need to get 1907kB/25.3MB of archives.
    After this operation, 59.5MB of additional disk space will be used.
    Do you want to continue [Y/n]? Y
    Get: 1 http://gb.archive.ubuntu.com jaunty-updates/main mysql-common 5.1.30really5.0.75-0ubuntu10.5 [63.6kB]
    Get: 2 http://gb.archive.ubuntu.com jaunty-updates/main libmysqlclient15off 5.1.30really5.0.75-0ubuntu10.5 [1843kB]
    Fetched 1907kB in 9s (205kB/s)
    Preconfiguring packages ...
    Selecting previously deselected package mysql-common.
    (Reading database ... 121260 files and directories currently installed.)
    ...
    Processing 1 added doc-base file(s)...
    Registering documents with scrollkeeper...
    Setting up libnet-daemon-perl (0.43-1) ...
    Setting up libplrpc-perl (0.2020-1) ...
    Setting up libdbi-perl (1.607-1) ...
    Setting up libmysqlclient15off (5.1.30really5.0.75-0ubuntu10.5) ...
    Setting up libdbd-mysql-perl (4.008-1) ...
    Setting up libmysqlclient16 (5.1.31-1ubuntu2) ...
    Setting up mysql-client-5.1 (5.1.31-1ubuntu2) ...
    Setting up mysql-server-5.1 (5.1.31-1ubuntu2) ...
     * Stopping MySQL database server mysqld
     ...done.
    2013-09-24T13:03:09.048353Z 0 [Note] InnoDB: 8.0.1 started; log sequence number 1566036
    2013-09-24T13:03:10.057269Z 0 [Note] InnoDB: Starting shutdown...
    2013-09-24T13:03:10.857032Z 0 [Note] InnoDB: Shutdown completed; log sequence number 1566036
     * Starting MySQL database server mysqld
     ...done.
     * Checking for corrupt, not cleanly closed and upgrade needing tables.
    ...
    Processing triggers for libc6 ...
    ldconfig deferred processing now taking place
    

    apt-get установит много пакетов, включая сервер MySQL, чтобы обеспечить типичные инструменты и окружающую среду приложения. Это может означать, что Вы устанавливаете большое количество пакетов в дополнение к основному пакету MySQL.

    Во время установки будет создаваться начальная база данных, и Вы будете запрошены относительно пароля MySQL root. Конфигурационный файл будет создан в /etc/mysql/my.cnf. Скрипт init будет создан в /etc/init.d/mysql.

    Сервер будет уже запущен. Вы можете вручную запустить и остановить использование сервера:

    root-shell> service mysql [start|stop]
    

    Служба будет автоматически добавлена к 2, 3 и 4 уровням выполнения, со скриптами остановки в уровнях single, shutdown и restart.

2.5.7. Установка MySQL на Linux с docker

Структура развертывания docker поддерживает легкую установку и конфигурацию серверов MySQL. Для инструкций см. https://hub.docker.com/r/mysql/mysql-server/. Эта страница также обеспечивает обширную документацию об использовании MySQL с docker.

2.5.8. Установка MySQL на Linux с juju

Структура развертывания juju поддерживает легкую установку и конфигурацию серверов MySQL. Для инструкций см. https://jujucharms.com/mysql/.

2.5.9. Управление сервером MySQL с systemd

Если Вы устанавливаете MySQL, используя дистрибутив RPM на следующих платформах Linux, запуском сервера и завершением работы управляет systemd:

  • Red Hat Enterprise Linux 7; Oracle Linux 7; CentOS 7

  • SUSE Linux Enterprise Server 12
  • Fedora 23 и 24

Чтобы получить поддержку systemd, если Вы устанавливаете из исходных текстов, сконфигурируйте дистрибутив, используя опцию -DWITH_SYSTEMD=1 для CMake. См. раздел 2.8.4.

Следующее обсуждение затрагивает эти темы:

Краткий обзор systemd

systemd обеспечивает автоматический запуск сервера и завершение работы. Это также включает ручное управлене сервером, используя команду systemctl. Например:

systemctl {start|stop|restart|status} mysqld

Альтернативно, используйте команду service:

service mysqld {start|stop|restart|status}

Для systemctl или service, если имя службы MySQL не mysqld, используют соответствующее имя (например, mysql на SLES-системах).

Поддержка systemd включает эти файлы:

  • mysqld.service: конфигурация модуля службы systemd с деталями о сервисе mysqld.

  • mysqld@.service: аналог mysqld.service, но используемый для того, чтобы управлять многими копиями MySQL.
  • mysqld.tmpfiles.d: файл, содержащий информацию, чтобы поддержать tmpfiles. Этот файл установлен под именем mysql.conf.
  • mysqld_pre_systemd: Скрипт для файла модуля. Помогает в создании файла журнала ошибок, только если его местоположение соответствует образцу /var/log/mysql*.log. В других случаях каталог журнала ошибок должен быть перезаписываемым, или журнал ошибок должен присутствовать и быть перезаписываемым для пользователя, выполняющего процесс mysqld.

На платформах, для которых поддержка systemd установлена, такие скрипты, как mysqld_safe скрипт инициализации System V не установлены, потому что они не нужны. Например, mysqld_safe может обработать перезапуски сервера, но systemd обеспечивает ту же самую возможность и делает это совместимо с управлением другими службами вместо того, чтобы использовать определенную для приложения программу.

На платформах, для которых установлена поддержка systemd у systemd есть способность управления многими копиями MySQL. Следовательно, mysqld_multi и mysqld_multi.server не установлены, потому что они не нужны.

Конфигурирование MySQL, используя systemd

Чтобы добавить или изменить опции для MySQL, доступны эти методы:

  • Используйте ограниченный systemd конфигурационный файл.

  • Примите меры, чтобы systemd установил переменные окружения для процесса сервера MySQL.
  • Установите переменную systemd MYSQLD_OPTS.

Чтобы использовать ограниченный systemd конфигурационный файл, создайте каталог /etc/systemd/system/mysqld.service.d. В нем создайте файл, который содержит раздел [Service], перечисляющий желаемые настройки. Например:

[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit
Environment="LD_PRELOAD=/path/to/malloc/library"
Environment="TZ=time_zone_setting"

Обсуждение здесь использует override.conf как название этого файла. Более новые версии systemd поддерживают следующую команду, которая открывает редактор и разрешает Вам редактировать файл:

systemctl edit mysqld

Всякий раз, когда Вы создаете или изменяете override.conf, перезагрузите конфигурацию systemd, затем скажите systemd перезапустить службу MySQL:

systemctl daemon-reload
systemctl restart mysqld

С systemd метод конфигурации override.conf должен использоваться для определенных параметров, а не настроек в группах [mysqld_safe] или [mysqld] файла опций MySQL:

  • Для некоторых параметров override.conf должен использоваться, потому что сам systemd должен знать их значения, и он не может считать файлы опции MySQL, чтобы получить их.

  • Параметры, которые определяют значения, устанавливаемые только используя опции, известные mysqld_safe , должны быть определены, используя systemd, потому что нет никакого соответствующего параметра для mysqld.

Вы можете установить следующие параметры в override.conf:

  • Чтобы определить файл ID процесса, надо использовать override.conf и изменить оба параметра PIDFile и ExecStart, задав имя пути к файлу. Любая установка файла ID процесса в файлах опции MySQL будет проигнорирована.

  • Чтобы определить число описателей файла, доступных серверу MySQL, надо использовать LimitNOFILE в override.conf вместо опции --open-files-limit для mysqld_safe или mysqld.
  • Чтобы установить максимальный основной размер файла, надо использовать LimitCore в override.conf вместо опции --core-file-size в mysqld_safe .
  • Чтобы установить приоритет планирования для сервера MySQL, надо использовать Nice в override.conf вместо --nice в mysqld_safe .

Некоторые параметры MySQL сконфигурированы, используя переменные окружения:

  • LD_PRELOAD: Установите эту переменную, если сервер MySQL должен пользоваться определенной библиотекой распределения памяти.

  • TZ: Установите эту переменную, чтобы определить часовой пояс по умолчанию для сервера.

Есть разные способы определить значение переменных среды, которые должны быть заданы для процесса сервера MySQL, которым управляет systemd:

  • Используйте строки Environment в файле override.conf. Для синтаксиса см. пример в предыдущем обсуждении, которое описывает, как использовать этот файл.

  • Определите значения в файле /etc/sysconfig/mysql (создайте файл, если он не существует). Назначьте значения, используя следующий синтаксис:
    LD_PRELOAD=/path/to/malloc/library
    TZ=time_zone_setting
    

    После изменения /etc/sysconfig/mysql перезапустите сервер, чтобы сделать изменения эффективными:

    systemctl restart mysqld
    

Чтобы определить опции для mysqld, не изменяя конфигурационные файлы systemd непосредственно, установите или сбросьте переменную systemd MYSQLD_OPTS. Например:

systemctl set-environment MYSQLD_OPTS="--general_log=1"
systemctl unset-environment MYSQLD_OPTS

После изменения окружения systemd перезапустите сервер, чтобы сделать изменения эффективными:

systemctl restart mysqld

Конфигурирование нескольких копий MySQL, используя systemd

На платформах, для которых установлена поддержка systemd, у systemd есть способность управления несколькими копиями MySQL. Следовательно, mysqld_multi и mysqld_multi.server не установлены, потому что они не нужны.

Чтобы использовать несколько копий, измените my.cnf, чтобы включить конфигурацию ключевых опций для каждой копии. Например, чтобы управлять двумя копиями replica01 и replica02, добавьте что-то вроде этого к файлу:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysqld-replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysqld-replica02.log

Имена, показанные здесь, используют @ как разделитель потому, что это единственный разделитель, поддержанный systemd.

Копии тогда управляют нормальные команды systemd, такие как:

systemctl start mysqld@replica01
systemctl start mysqld@replica02

Чтобы позволить копиям стартовать во время загрузки, сделайте это:

systemctl enable mysqld@replica01
systemctl enable mysqld@replica02

Использование подстановочных знаков также поддержано. Например, эта команда выводит на экран состояние всех копий:

systemctl status 'mysqld@replica*'

Для управления многими копиями MySQL на той же самой машине, systemd автоматически использует другой файл модуля (mysqld@.service вместо mysqld.service). В этом файле модуля %I и %i ссылаются на параметр, который передают после маркера @ и используется, чтобы управлять определенной копией. Для команды такой, как эта:

systemctl start mysqld@mysql1

systemd запускает сервер, используя такую команду:

mysqld --defaults-group-suffix=@%I ...

Результат состоит в том, что группы опций [server], [mysqld] и [mysqld@mysql1] считаны и используются для этой копии.

Перемещение от mysqld_safe к systemd

Так как mysqld_safe не установлен, когда systemd используется, опции, ранее определенные для той программы (например, в группе опций [mysqld_safe]) должны быть определены иначе:

  • Некоторые опции mysqld_safe также поняты под mysqld и могут быть перемещены от группы опций [mysqld_safe] в группу [mysqld]. Это не включает --pid-file или --open-files-limit. Чтобы определить те опции, используйте файл override.conf для systemd, описанный выше.

  • Для некоторых опций mysqld_safe есть подобные у mysqld. Например, опция mysqld_safe для того, чтобы включить журналирование в syslog: --syslog. Для mysqld включите системную переменную log_syslog вместо этого. Для деталей см. раздел 6.4.2.
  • Опции mysqld_safe , не понятые под mysqld, могут быть определены в override.conf или переменных окружения. Например, с mysqld_safe , если сервер должен пользоваться определенной библиотекой распределения памяти, это определено, используя --malloc-lib . Для установок, которые управляют сервером с systemd, установите переменную окружения LD_PRELOAD, как описано выше.

2.6. Установка MySQL на Solaris и OpenSolaris

MySQL на Solaris и OpenSolaris доступны во многих различных форматах.

  • Для информации об установке с использованием родного формата Solaris PKG см. раздел 2.6.1 .

  • В OpenSolaris стандартные репозитарии включают пакеты MySQL, созданные для OpenSolaris, которые включают записи для Service Management Framework (SMF), чтобы включить управлению, используя команды SMF. См. раздел 2.6.2.
  • Чтобы использовать стандартный вариант tar, примените примечания, обеспеченные в разделе 2.2. Проверьте примечания и подсказки в конце этого раздела для Solaris, в которых Вы, возможно, нуждаетесь прежде или после установки.

Получить двоичный дистрибутив MySQL для Solaris в формате tarball или PKG можно на сайте http://dev.mysql.com/downloads/mysql/8.0.html.

Дополнительные примечания, устанавливая и используя MySQL на Solaris:

  • Если Вы хотите использовать MySQL с пользователем и группой mysql, используйте groupadd и useradd:

    groupadd mysql
    useradd -g mysql -s /bin/false mysql
    
  • Если Вы устанавливаете MySQL, используя двоичный дистрибутив tar, Вы можете столкнуться с проблемой даже прежде, чем Вы распаковали дистрибутив MySQL, поскольку Solaris tar не может обработать длинные имена файла. Это означает, что Вы можете видеть ошибки, когда Вы пытаетесь распаковать MySQL.

    Если это происходит, Вы должны использовать GNU tar (gtar), чтобы распаковать дистрибутив. В Solaris 10 и OpenSolaris gtar обычно располагается в /usr/sfw/bin/gtar, но, возможно, не будет включен в определение пути по умолчанию.

  • Используя Solaris 10 для x86_64, Вы должны установить любые файловые системы, на которых Вы намереваетесь сохранить файлы InnoDB, с опцией forcedirectio. По умолчанию установка сделана без этой опции. Иначе будет существенное понижение скорости работы, используя механизм хранения InnoDB на этой платформе.
  • Если Вы хотели бы, чтобы MySQL запустился автоматически, Вы можете скопировать support-files/mysql.server в /etc/init.d и создайте символическую ссылку к /etc/rc3.d/S99mysql.server.
  • Если слишком много процессов пытаются соединиться очень быстро с mysqld, Вы должны видеть эту ошибку в журнале MySQL:
    Error in accept: Protocol error
    

    Вы могли бы попытаться запустить сервер с опцией --back_log=50 как обходное решение для этого.

  • Чтобы сконфигурировать основные файлы в Solaris, Вы должны использовать команду coreadm. Из-за значений безопасности производства ядра на setuid(), по умолчанию, Solaris не поддерживает файлы ядра на программах setuid(). Однако, Вы можете изменить это поведение, используя coreadm. Если Вы включаете setuid() файлы ядра для текущего пользователя, они будут произведены, используя режим 600 и принадлежать суперпользователю.

2.6.1. Установка MySQL на Solaris, применяя Solaris PKG

Вы можете установить MySQL на Solaris и OpenSolaris, используя двоичный формат Solaris PKG вместо tar-архива.

У пакета установки есть зависимость от Oracle Developer Studio 12.5 Runtime Libraries, которые должны быть установлены прежде, чем Вы выполните пакет установки MySQL. См. опции загрузки для Oracle Developer Studio здесь. Пакет установки позволяет Вам устанавливать только библиотеки выполнения вместо полной Oracle Developer Studio, см. Installing Only the Runtime Libraries on Oracle Solaris 10 and Linux и Installing Only the Runtime Libraries on Oracle Solaris 11.

Чтобы использовать этот пакет, загрузите и распакуйте соответствующий файл mysql-VERSION-solaris11-PLATFORM.pkg.gz. Например:

shell> gunzip mysql-8.0.1-solaris11-x86_64.pkg.gz

Чтобы установить новый пакет, используйте pkgadd и следуйте за экранными подсказками. У Вас должны быть привилегии root:

shell> pkgadd -d mysql-8.0.1-solaris11-x86_64.pkg

The following packages are available:
1 mysql MySQL Community Server (GPL)
  (i86pc) 8.0.1

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:

Установщик PKG устанавливает все необходимые файлы и инструменты, а затем инициализирует Вашу базу данных, если ее нет. Чтобы завершить установку, Вы должны установить пароль root для MySQL как предусмотрено в инструкциях в конце установки. Альтернативно, Вы можете выполнить скрипт mysql_secure_installation, который идет с установкой.

По умолчанию пакет PKG устанавливает MySQL под /opt/mysql. Вы можете изменить только путь корня установки, используя pkgadd, который может использоваться, чтобы установить MySQL в иной зоне Solaris. Если Вы должны установить в определенный каталог, используйте двоичный дистрибутив tar.

pkg копирует подходящий скрипт запуска для MySQL в /etc/init.d/mysql. Чтобы включить MySQL в запуск и завершение работы автоматически, Вы должны создать ссылку между этим файлом и каталогами init. Например, чтобы гарантировать безопасный запуск и завершение работы MySQL Вы могли использовать следующие команды, чтобы добавить правильные ссылки:

shell> ln /etc/init.d/mysql /etc/rc3.d/S91mysql
shell> ln /etc/init.d/mysql /etc/rc0.d/K02mysql

Чтобы удалить MySQL, имя пакета mysql. Вы можете использовать это в комбинации с pkgrm, чтобы удалить установку.

Чтобы обновить, используя формат файла пакета Solaris, Вы должны удалить существующую установку прежде, чем установить обновленный пакет. Удаление пакета не удаляет существующую информацию о базе данных, только сервер и файлы поддержки. Типичная последовательность обновления поэтому:

shell> mysqladmin shutdown
shell> pkgrm mysql
shell> pkgadd -d mysql-8.0.1-solaris11-x86_64.pkg
shell> mysqld_safe &
shell> mysql_upgrade

Вы должны проверить примечания в разделе 2.10 прежде, чем выполнить любое обновление.

2.6.2. Установка MySQL на OpenSolaris через IPS

OpenSolaris включает стандартные пакеты для MySQL в основном репозитарии. Пакеты MySQL основаны на определенном выпуске MySQL и обновлены периодически. Для последнего выпуска Вы должны использовать Solaris PKG, tar или исходные тексты. Пакеты OpenSolaris включают файлы SMF так, чтобы Вы могли легко управлять своей установкой MySQL, включая автоматический запуск и восстановление, используя родные инструменты управления службы.

Чтобы установить MySQL на OpenSolaris, используйте pkg. Вы должны быть зарегистрированы как root или использовать pfexec, как показано в примере ниже:

shell> pfexec pkg install SUNWmysql80

Пакет установил три отдельных пакета, SUNWmysql80lib, который содержит библиотеки клиента MySQL, SUNWmysql80r, который содержит компоненты, включая SMF и конфигурационные файлы, и SUNWmysql80u, который содержит скрипты, утилиты и прочие файлы. Вы можете установить эти пакеты индивидуально, если Вы нуждаетесь только в соответствующих компонентах.

Файлы MySQL установлены в /usr/mysql, который имеет сслылки из подкаталогов (bin, lib, ...) на каталоги, специфичные для конкретной версии. Для MySQL 8.0 полная установка расположена в /usr/mysql/8.0. Каталог данных по умолчанию /var/mysql/8.0/data. Конфигурационный файл установлен в /etc/mysql/8.0/my.cnf. Это расположение разрешает многим версиям MySQL быть установленными, не перезаписывая данные от других версий.

После того, как пакет установлен, Вы должны инициализировать каталог данных (см. раздел 2.9.1 ) и используйте mysql_secure_installation, чтобы защитить Вашу установку.

Использование SMF, чтобы управлять Вашей установкой MySQL

После того, как установлен пакет, Вы можете запустить и остановить свой сервер MySQL, используя установленную конфигурацию SMF. Имя службы mysql, или если Вы устанавливали много копий, Вы должны использовать полное имя версии, например, mysql:version_80. Запустить и позволить MySQL быть запущенным во время загрузки:

shell> svcadm enable mysql

Чтобы смотреть журналы SMF, используйте эту команду:

shell> svcadm enable svc:/application/database/mysql

Чтобы проверить, работает ли служба MySQL:

shell> svcs -xv svc:/application/database/mysql

Отключить MySQL от запуска в ходе загрузки и закрыть сервер MySQL, если он работает:

shell> svcadm disable mysql

Чтобы перезапустить MySQL, например, после того, как конфигурационный файл изменяется, используйте опцию restart:

shell> svcadm restart mysql

Вы можете также использовать SMF, чтобы сконфигурировать каталог данных и включить полный 64-битный режим. Например, чтобы установить каталог данных, используемый MySQL:

shell> svccfg
svc:> select mysql:version_80
svc:/application/database/mysql:version_80> setprop mysql/data=/data0/mysql

По умолчанию 32-битные исполняемые модули используются. Чтобы включить 64-битный сервер на 64-битных платформах, установите параметр enable_64bit. Например:

svc:/application/database/mysql:version_80> setprop mysql/enable_64bit=1

Вы должны освежить SMF после установки этих опций:

shell> svcadm refresh mysql

2.7. Установка MySQL на FreeBSD

Этот раздел предоставляет информацию об установке MySQL на разновидностях Unix FreeBSD.

Вы можете установить MySQL на FreeBSD при использовании двоичного дистрибутива, обеспеченного Oracle. Для получения дополнительной информации см. раздел 2.2.

Самый легкий способ установить MySQL, это использовать порты mysql-server и mysql-client, доступные в http://www.freebsd.org/. Использование этих портов приносит Вам следующую пользу:

  • Рабочий MySQL со всей оптимизацией, который работает с Вашей версией FreeBSD.

  • Автоматическая конфигурация и построение.
  • Скрипты запуска, установленные в /usr/local/etc/rc.d.
  • Способность использовать pkg_info -L, чтобы увидеть, какие файлы установлены.
  • Способность использовать pkg_delete, чтобы удалить MySQL, если Вы больше не хотите его на своей машине.

Процесс сборки MySQL требует GNU make (gmake ). Если GNU make недоступна, Вы должны установить ее прежде, чем собрать MySQL.

Установить с использованием системы портов:

# cd /usr/ports/databases/mysql80-server
# make
...
# cd /usr/ports/databases/mysql80-client
# make
...

Стандартная установка порта помещает сервер в /usr/local/libexec/mysqld со скриптом запуска для сервера MySQL, помещенным в /usr/local/etc/rc.d/mysql-server.

Некоторые дополнительные примечания по выполнению BSD:

  • Удалить MySQL после установки, используя систему портов:

    # cd /usr/ports/databases/mysql80-server
    # make deinstall
    ...
    # cd /usr/ports/databases/mysql80-client
    # make deinstall
    ...
    
  • Если Вы получаете проблемы с текущей датой в MySQL, установка переменной TZ должна помочь. См. раздел 5.9.

2.8. Установка MySQL из исходных текстов

Для списка систем, на которых MySQL, как известно, работает см. http://www.mysql.com/support/supportedplatforms/database.html .

Прежде, чем Вы начнете установку из исходных текстов, проверьте, производит ли Oracle предварительно собранное двоичный дистрибутив для Вашей платформы и работает ли это. Мы прикладываем много усилий в обеспечение того, что наши сборки созданы с самыми лучшими опциями для оптимальной работы. Инструкции для того, чтобы установить двоичные дистрибутива доступны в разделе 2.2.

Исходный код MySQL содержит внутреннюю документацию, использующую Doxygen. Произведенный контент Doxygen доступен на http://dev.mysql.com/doc/dev/mysql-server/latest/. Также возможно произвести этот контент в местном масштабе из исходного дистрибутива MySQL, используя инструкции в разделе 2.8.7.

Методы установки из исходных текстов

Есть два метода для того, чтобы установить MySQL из исходных текстов:

  • Используйте стандартный исходный дистрибутив MySQL. Чтобы получить его, см. раздел 2.1.2. Для инструкций по сборке из стандартного дистрибутива см. раздел 2.8.2.

    Стандартные дистрибутивы доступны как сжатые файлы tar, Zip-архивы и RPM-пакеты. У файлов дистрибутива есть названия формы mysql-VERSION.tar.gz, mysql-VERSION.zip или mysql-VERSION.rpm, где VERSION число вроде 8.0.1. Имена файла для исходных текстов можно отличить от имен для предварительно собранных двоичных дистрибутивов тем, что имена исходных текстов являются общими и не включают имени платформы, тогда как имена двоичных дистрибутивов включают имя платформы, указывающее на тип системы, для которой предназначен дистрибутив (например, pc-linux-i686 или winx64).

  • Используйте дерево развития MySQL. Для информации о сборке из одного из деревьев развития см. раздел 2.8.3.

Системные требования установки

Установка MySQL из исходных текстов требует нескольких средств разработки. Некоторые из этих инструментов необходимы независимо от того, используете ли Вы стандартные исходные тексты или дерево развития. Другие требования зависят от того, который метод установки Вы используете.

Чтобы установить MySQL из исходных текстов, следующие системные требования должны быть удовлетворены, независимо от метода установки:

  • CMake, который используется в качестве структуры сборки на всех платформах. CMake можно скачать с http://www.cmake.org.

  • Хорошая программа make. Хотя некоторые платформы идут со своим собственным make, настоятельно рекомендовано применять GNU make 3.75 или выше. Это может уже быть доступно на Вашей системе как gmake. GNU make скачивается с http://www.gnu.org/software/make/.
  • Исходный текст MySQL 8.0 использует особенности C++11. Чтобы включить хороший уровень поддержки C++11 на всех поддержанных платформах, следующие минимальные версии компилятора применяются:

    • GCC: 4.8 или выше.

    • Clang: 3.4 или выше (Xcode 7 в OS X).
    • Solaris Studio: 12.4 или выше (сборка только клиента Solaris).
    • Visual Studio: 2015.
    • CMake: В Windows необходимая версия Visual Studio приводит к необходимой версии CMake 3.2.3 или выше.

  • Библиотеки Boost C++ обязаны создавать MySQL (но не использовать его). Текущая версия Boost должна быть установлена. Чтобы получить Boost и его инструкции по установке, посетите http://www.boost.org. После того, как Boost установлено, создавайте систему, где файлы Boost расположены, определяя опцию WITH_BOOST в CMake. Например:

    shell> cmake . -DWITH_BOOST=/usr/local/boost_1_60_0
    

    Скорректируйте путь по мере необходимости, чтобы соответствовать Вашей установке.

  • Достаточная свободная память. Если Вы сталкиваетесь с проблемами, такими как internal compiler error, собирая большие исходные файлы, может случиться так, что у Вас есть слишком маленькая память. Собирая на виртуальной машине, попытайтесь увеличить распределение памяти.
  • Perl необходим, если Вы намереваетесь выполнить испытательные скрипты. Большинство Unix-систем включают Perl. В Windows Вы можете использовать такую версию, как ActiveState Perl.

Чтобы установить MySQL из стандартного исходного дистрибутива, один из следующих инструментов обязан распаковать файл дистрибутива:

  • Для файлов .tar.gz: GNU gunzip расжимает архив и соответствующий tar для распаковки. Если Ваша программа tar понимает опцию z, это может расжать и распаковать файл.

    GNU tar работает. Стандартная tar, предоставленная некоторыми операционными системами, не в состоянии распаковать длинные имена файла. Вы должны загрузить и установить GNU tar или при наличии, использовать предварительно установленную версию GNU tar. Обычно это доступно как gnutar, gtar или как tar в каталоге GNU или Free Software, например, such as /usr/sfw/bin или /usr/local/bin. GNU tar доступен на http://www.gnu.org/software/tar/.

  • Для архивов .zip: WinZip или другой инструмент, который может читать файлы .zip.
  • Для пакетов .rpm: программа rpmbuild , используемая, чтобы создать дистрибутив, распаковывает это.

Чтобы установить MySQL из дерева развития, следующие дополнительные инструменты требуются:

  • Система управления Git обязана получать исходный код развития. GitHub Help обеспечивает инструкции для загрузки и установки Git на различных платформах. MySQL официально присоединился к GitHub в сентябре 2014. Для получения дополнительной информации о перемещении MySQL к GitHub, ознакомьтесь с объявлением в блоге MySQL Release Engineering: MySQL on GitHub.

  • bison 2.1 или выше доступен на http://www.gnu.org/software/bison/. Версия 1 более не поддерживается. Используйте последнюю версию bison где только возможно, если Вы испытываете проблемы, обновляйтесь до более поздней версии, вместо того, чтобы вернуться к более ранней.

    bison доступен на http://www.gnu.org/software/bison/. bison для Windows можно скачать с http://gnuwin32.sourceforge.net/packages/bison.htm. Загрузите пакет, маркированный как Complete package, excluding sources. В Windows местоположение по умолчанию для bison C:\Program Files\GnuWin32. Некоторые утилиты могут быть не в состоянии найти bison из-за пробела в имени каталога. Кроме того, Visual Studio может просто зависнуть, если есть пробелы в пути. Вы можете решить эти проблемы, устанавливая в каталог, который не содержит пробела, например, в C:\GnuWin32.

  • В OpenSolaris и Solaris Express m4 должен быть установлен в дополнение к bison. m4 доступен на http://www.gnu.org/software/m4/.

Если Вы должны установить какие-либо программы, измените Вашу переменную окружения PATH, чтобы включить любые каталоги, в которых расположены программы. См. раздел 5.2.10.

Если Вы сталкиваетесь с проблемами и потребностью зарегистрировать отчет об ошибках, пожалуйста, используйте инструкции в разделе 1.7.

2.8.1. Расположение MySQL для исходной установки

По умолчанию когда Вы устанавливаете MySQL после компилирования из исходных текстов, шаг установки устанавливает файлы в /usr/local/mysql. Составляющие местоположения в соответствии с каталогом установки те же самые, что касаются двоичных дистрибутивов. См. таблицу 2.3 и раздел 2.3.1. Чтобы сконфигурировать местоположения установки, отличающиеся от значений по умолчанию, используйте опции, описанные в разделе 2.8.4.

2.8.2. Установка MySQL, используя стандартные исходные тексты

Установить MySQL из стандартного исходного дистрибутива:

  1. Проверьте, что Ваша система удовлетворяет требованиям инструментов, перечисленные в разделе 2.8.

  2. Получите файл дистрибутива, используя инструкции в разделе 2.1.2.
  3. Сконфигурируйте, соберите и установите дистрибутив, используя инструкции в этом разделе.
  4. Выполните постпроцессы установки, используя инструкции в разделе 2.9.

В MySQL 8.0 CMake используется в качестве структуры сборки на всех платформах. Инструкции, данные здесь, должны позволить Вам произвести рабочую установку. Для дополнительной информации об использовании CMake см. http://dev.mysql.com/doc/internals/en/cmake.html.

Если Вы начинаете с исходных текстов в RPM, используйте следующую команду, чтобы сделать двоичный RPM, который Вы можете установить. Если у Вас нет rpmbuild, используйте rpm.

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

Результат один или более двоичных пакетов RPM, которые Вы устанавливаете, как обозначено в разделе 2.5.4 .

Последовательность установки из сжатого файла tar или архива Zip подобна процессу установки из двоичного дистрибутива (см. раздел 2.2), за исключением того, что это используется на всех платформах и включает шаги, чтобы сконфигурировать и собрать дистрибутив. Например, со сжатым исходным файлом tar в Unix, основная последовательность команд установки похожа на это:

# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql

# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions

# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

Процедура, показанная здесь, не настраивает паролей для учетных записей MySQL. После следования процеде, продолжите работать по разделу 2.9 для постустановки и тестирования.

Выполните конфигурацию перед установкой

В Unix установите пользователя и группу mysql, которая будет использоваться, чтобы выполнить сервер MySQL и иметь каталог базы данных. Для деталей см. раздел 2.2. Затем выполните следующие шаги как пользователь mysql, за исключением отмеченного.

Получите и распакуйте дистрибутив

Выберите каталог, в соответствии с которым Вы хотите распаковать дистрибутив и перейдите в него.

Получите файл дистрибутива, используя инструкции в разделе 2.1.2.

Распакуйте дистрибутив в текущий каталог:

  • Чтобы распаковать сжатый файл tar, tar может рассжать и распаковать дистрибутив, если это имеет опцию z:

    shell> tar zxvf mysql-VERSION.tar.gz
    

    Если Ваш tar не имеет опции z, используйте gunzip, чтобы расжать дистрибутив и tar, чтобы его распаковать:

    shell> gunzip < mysql-VERSION.tar.gz | tar xvf -
    

    Альтернативно, CMake может расжать и распаковать дистрибутив:

    shell> cmake -E tar zxvf mysql-VERSION.tar.gz
    
  • Чтобы распаковать архив Zip, используйте WinZip или другой инструмент, который может читать файлы .zip.

Распаковка файла дистрибутива создает каталог mysql-VERSION.

Сконфигурируйте дистрибутив

Перейдите в каталог распакованного дистрибутива:

shell> cd mysql-VERSION

Сконфигурируйте исходный каталог. Минимальная команда конфигурации не включает опций, чтобы переопределить значения по умолчанию конфигурации:

shell> cmake .

В Windows определите среду проектирования. Например, следующие команды конфигурируют MySQL для 32 или 64-битной сборки:

shell> cmake . -G "Visual Studio 12 2013"
shell> cmake . -G "Visual Studio 12 2013 Win64"

В OS X используйте Xcode IDE:

shell> cmake . -G Xcode

Когда Вы выполняете cmake, Вы могли бы хотеть добавить опции к командной строке. Вот некоторые примеры:

  • -DBUILD_CONFIG=mysql_release: Сконфигурируйте источник с теми же самыми опции, используемыми Oracle, чтобы произвести официальные двоичные дистрибутивы MySQL.

  • -DCMAKE_INSTALL_PREFIX=dir_name: Сконфигурируйте дистрибутив для установки под особым местоположением.
  • -DCPACK_MONOLITHIC_INSTALL=1: Вызывает make package, чтобы произвести единственный файл установки, а не много файлов.
  • -DWITH_DEBUG=1 : Собрать дистрибутив с отладкой.

Для более обширного списка опций см. раздел 2.8.4.

Чтобы перечислить параметры конфигурации, используйте одну из следующих команд:

shell> cmake . -L # overview
shell> cmake . -LH# overview with help text
shell> cmake . -LAH # all params with help text
shell> ccmake . # interactive display

Если CMake вылетает, Вы, возможно, должны были бы реконфигурировать, выполняя его снова с различными вариантами. Если Вы действительно реконфигурировали, примите во внимание следующее:

  • Если CMake выполнен после того, как он был ранее выполнен, он может использовать информацию, которая была собрана во время предыдущего запуска. Эта информация хранится в CMakeCache.txt. Когда CMake запускается, он ищет этот файл и читает его содержание, если он существует, при условии, что информация все еще правильна. Это предположение недопустимо, когда Вы реконфигурировали.

  • Каждый раз, когда Вы выполняете CMake, Вы должны выполнить make снова, чтобы повторно собрать. Однако, Вы можете хотеть удалить старые файлы объекта потому, что они были собраны, используя иные параметры конфигурации.

Чтобы препятствовать тому, чтобы старые файлы объекта или информация о конфигурации использовались, выполните эти команды на Unix прежде, чем запустить повторно CMake:

shell> make clean
shell> rm CMakeCache.txt

Или под Windows:

shell> devenv MySQL.sln /clean
shell> del CMakeCache.txt

Если Вы создаете из дерева исходного текста (как описано позже), файл CMakeCache.txt и все созданные файлы находятся в рабочем каталоге, таким образом, Вы можете удалить каталог.

Если Вы собираетесь послать почту в список рассылки MySQL, чтобы попросить помощи в конфигурации, сначала регистрируйте файлы каталога CMakeFiles для полезной информации об отказе. Чтобы зарегистрировать отчет об ошибках, пожалуйста, используйте инструкции в разделе 1.7.

Создание (сборка) дистрибутива

В Unix:

shell> make
shell> make VERBOSE=1

Вторая команда задает VERBOSE для показа команды для каждого собираемого файла.

Используйте gmake вместо этого на системах, где Вы используете GNU make и это было установлено как gmake.

В Windows:

shell> devenv MySQL.sln /build RelWithDebInfo

Возможно создать вне дерева исходных текстов. Если каталог исходных текстов mysql-src, Вы можете создать пакет в каталоге, названном bld примерно так:

shell> mkdir bld
shell> cd bld
shell> cmake ../mysql-src

Если Вы дошли до стадии компиляции, но дистрибутив не создается, см. раздел 2.8.5. Если это не решает проблему, пожалуйста, введите ее в нашу базу данных ошибок, используя инструкции, данные в разделе 1.7. Если Вы установили последние версии необходимых инструментов, и они разрушаются при попытке обработать наши конфигурационные файлы, пожалуйста, сообщите об этом также. Однако, если Вы получаете ошибку command not found или подобную проблему для необходимых инструментов, не сообщайте об этом. Вместо этого удостоверьтесь, что все необходимые инструменты установлены, и что Ваше значение переменной PATH задано правильно.

Установите дистрибутив

В Unix:

shell> make install

Это устанавливает файлы в соответствии со сконфигурированным каталогом установки (по умолчанию, /usr/local/mysql). Вы, возможно, должны выполнить команду как root.

Чтобы установить в определенном каталоге, добавьте параметр DESTDIR к командной строке:

shell> make install DESTDIR="/opt/mysql"

Альтернативно, произведите файлы пакета установки, которые Вы можете установить, где Вам нравится:

shell> make package

Эта работа производит один или больше файлов .tar.gz, которые могут быть установлены как двоичные пакеты дистрибутива. См. раздел 2.2. Если Вы выполняете CMake с -DCPACK_MONOLITHIC_INSTALL=1, работа производит единственный файл. Иначе это производит много файлов.

В Windows произведите каталог данных, затем создайте архив .zip :

shell> devenv MySQL.sln /build RelWithDebInfo /project initial_database
shell> devenv MySQL.sln /build RelWithDebInfo /project package

Вы можете установить получающийся .zip где Вам нравится. См. раздел 2.3.5.

Выполните постустановку

Остаток процесса установки вовлекает создание конфигурационного файла, создание основных баз данных и запуск сервера MySQL. Для инструкций см. раздел 2.9.

У учетных записей, которые перечислены в таблицах привилегий MySQL, первоначально нет никаких паролей. После запуска сервера Вы должны настроить пароли для них, используя инструкции в разделе 2.9.

2.8.3. Установка MySQL, используя дерево развития

Этот раздел описывает, как установить MySQL из исходного кода последнего достижения, который размещен на GitHub. Чтобы получить исходный код сервера MySQL с этого репозитария, Вы можете настроить местный репозитарий MySQL Git.

В GitHub MySQL Server и другие проекты MySQL найдены на странице MySQL. MySQL Server единственный репозитарий, который содержит ответвления для нескольких рядов MySQL.

MySQL официально присоединился к GitHub в сентябре 2014. Для получения дополнительной информации о перемещении MySQL к GitHub обратитесь к блогу MySQL Release Engineering MySQL on GitHub.

Предпосылки для установки из исходных текстов развития

Чтобы установить MySQL из дерева развития, Ваша система должна удовлетворять требованиям инструментов, обрисованным в общих чертах в разделе 2.8.

Установка репозитария MySQL Git

Чтобы настроить репозитарий MySQL Git на Вашей машине, используйте эту процедуру:

  1. Клонируйте репозитарий MySQL Git к своей машине. Следующая команда клонирует репозитарий к названному каталогу mysql-server. Начальная загрузка займет время, в зависимости от скорости Вашего соединения.

    ~$ git clone https://github.com/mysql/mysql-server.git
    Cloning into 'mysql-server'...
    remote: Counting objects: 1198513, done.
    remote: Total 1198513 (delta 0), reused 0 (delta 0), pack-reused 1198513
    Receiving objects: 100% (1198513/1198513), 1.01 GiB | 7.44 MiB/s, done.
    Resolving deltas: 100% (993200/993200), done.
    Checking connectivity... done.
    Checking out files: 100% (25510/25510), done.
    
  2. Когда работа клона завершается, содержание Вашего местного репозитария MySQL Git окажется подобным следующему:
    ~$ cd mysql-server
    ~/mysql-server$ ls
    BUILD Docs libmysqld README unittest
    client Doxyfile-perfschema lib services regex VERSION
    cmake extra man scripts vio
    CMakeLists.txt include mysql-test sqlwin
    cmd-line-utils INSTALL mysys sql-common zlib
    config.h.cmake lib binlog events mysys_ssl storage
    configure.cmake lib binlog standalone packaging strings
    COPYING libevent plugin support-files
    dbug libmysql rapid test clients
    
  3. Используйте git branch -r, чтобы рассмотреть отдаленные ответвления отслеживания для репозитария MySQL.
    ~/mysql-server$ git branch -r
    origin/5.5
    origin/5.6
    origin/5.7
    origin/8.0
    origin/HEAD -> origin/5.7
    origin/cluster-7.2
    origin/cluster-7.3
    origin/cluster-7.4
    origin/cluster-7.5
    
  4. Чтобы рассмотреть ответвления, которые проверены в Вашем местном репозитарии, дайте команду git branch. Когда Вы клонировали репозитарий MySQL Git, ответвления MySQL 5.7 были проверены автоматически. Звездочка идентифицирует эти ответвления 5.7 как активное ответвление.
    ~/mysql-server$ git branch
    * 5.7
    
  5. Чтобы проверить иное ответвление MySQL, выполните команду git checkout, определяя имя ответвления. Например, для контроля MySQL 8.0:
    ~/mysql-server$ git checkout 8.0
    Checking out files: 100% (9600/9600), done.
    Branch 8.0 set up to track remote branch 8.0 from origin.
    Switched to a new branch '8.0'
    
  6. Запустите git branch, чтобы проверить, что MySQL 8.0 присутствует. MySQL 8.0, который является последним ответвлением, которое Вы проверили, отмечен звездочкой, указывающей, что это активное ответвление.
    ~/mysql-server$ git branch
    5.7
    * 8.0
    
  7. Используйте команду git checkout, чтобы переключиться между ответвлениями. Например:
    ~/mysql-server$ git checkout 5.7
    
  8. Чтобы получить изменения, произведенные после Вашей начальной установки репозитария MySQL Git, переключитесь на ответвление, которое Вы хотите обновить, и скомандуйте git pull:
    ~/mysql-server$ git checkout 8.0
    ~/mysql-server$ git pull
    

    Чтобы исследовать историю, используйте git log:

    ~/mysql-server$ git log
    

    Вы можете также просмотреть историю и исходный код прямо на сайте GitHub MySQL.

    Если Вы видите изменения или код, о котором Вы имеете вопрос, посылаете электронное письмо в список рассылки MySQL internals. См. раздел 1.6.1. Для информации о содействии см. Contributing to MySQL Server.

  9. После того, как Вы клонировали репозитарий MySQL Git и проверили ответвление, которое Вы хотите создать, Вы можете создать сервер MySQL из исходного кода. Инструкции обеспечены в разделе 2.8.2, за исключением того, что Вы пропускаете часть о получении и распаковке дистрибутива.

    Будьте осторожны относительно установки созданного из исходного дерева дистрибутива на производственной машине. Команда установки может перезаписать Вашу живую установку. Если Вам уже устанавливали MySQL и не хотите перезаписывать его, выполните CMake со значениями для опций CMAKE_INSTALL_PREFIX, MYSQL_TCP_PORT и MYSQL_UNIX_ADDR, отличающимися от используемых Вашим производственным сервером. Для дополнительной информации о препятствовании тому, чтобы серверы вмешивались друг в друга, см. раздел 6.7.

2.8.4. Исходные параметры конфигурации MySQL

CMake обеспечивает большое управление тем, как Вы конфигурируете дистрибутив MySQL. Как правило, Вы делаете это с использованием опции в командной строке. Для информации об опциях, поддержанных CMake, выполните любую из этих команд в верхнем каталоге исходных текстов:

shell> cmake . -LH
shell> ccmake .

Вы можете также влиять на CMake через использование определенных переменных окружения. См. раздел 5.9.

Следующая таблица показывает доступные варианты опций CMake. В столбце Default PREFIX означает значение опции CMAKE_INSTALL_PREFIX, которая определяет каталог основы установки. Это значение используется в качестве родительского местоположения для нескольких из подкаталогов установки.

Таблица 2.11. Обзор параметров конфигурации MySQL (CMake)

ФорматыОписание Значение по умолчаниюВведено
BUILD_CONFIGИспользуйте те же самые опции, как официальные выпуски
CMAKE_BUILD_TYPEТип сборки RelWithDebInfo
CMAKE_CXX_FLAGSФлаги для компилятора C++
CMAKE_C_FLAGSФлаги для компилятора C
CMAKE_INSTALL_PREFIXКаталог основы установки /usr/local/mysql
COMPILATION_COMMENT Комментарий об окружающей среде компиляции
CPACK_MONOLITHIC_INSTALL Создает ли пакет единственный файлOFF
DEFAULT_CHARSETНабор символов сервера по умолчанию latin1
DEFAULT_COLLATIONСопоставление сервера по умолчанию latin1_swedish_ci
DISABLE_PSI_CONDИсключить инструментовку условия Performance SchemaOFF
DISABLE_PSI_FILEИсключить инструментовку файлов Performance SchemaOFF
DISABLE_PSI_IDLE Исключить инструментовку неактивности Performance Schema OFF
DISABLE_PSI_MEMORYИсключить инструментовку памяти Performance SchemaOFF
DISABLE_PSI_METADATAИсключить инструментовку метаданных Performance SchemaOFF
DISABLE_PSI_MUTEXИсключить инструментовку Performance Schema mutexOFF
DISABLE_PSI_RWLOCKИсключить инструментовку Performance Schema rwlockOFF
DISABLE_PSI_SOCKETИсключить инструментовку сокета Performance SchemaOFF
DISABLE_PSI_SPИсключить инструментовку сохраненных подпрограмм в Performance SchemaOFF
DISABLE_PSI_STAGEИсключить инструментовку этапа Performance SchemaOFF
DISABLE_PSI_STATEMENTИсключить инструментовку запросов Performance SchemaOFF
DISABLE_PSI_STATEMENT_DIGEST Исключить инструментовку Performance Schema statement_digest OFF
DISABLE_PSI_TABLEИсключить инструментовку таблиц Performance SchemaOFF
DISABLE_SHAREDНе создавать совместно используемые библиотеки, собирайте зависимый от позиции кодOFF
DOWNLOAD_BOOSTЗагрузить ли библиотеку Boost OFF
DOWNLOAD_BOOST_TIMEOUT Тайм-аут в секундах для того, чтобы загрузить библиотеку Boost 600
-DUSE_LD_GOLDИспользовать ли загрузчик GNU gold loader OFF8.0.0
-DWITH_PROTOBUF Какой буферный пакет протокола использовать bundled
ENABLED_LOCAL_INFILEВключить ли LOCAL для LOAD DATA INFILEOFF
ENABLED_PROFILING Включить ли код профилирования запросаON
ENABLE_DEBUG_SYNC Включить ли поддержку Debug SyncON
ENABLE_DOWNLOADSЗагрузить ли дополнительные файлы OFF
ENABLE_DTRACEВключать ли поддержку DTrace
ENABLE_GCOVВключать ли поддержку gcov
ENABLE_GPROFВключить gprof (только оптимизация в Linux) OFF
FORCE_UNSUPPORTED_COMPILER Разрешить ли неподдержанный компиляторOFF
IGNORE_AIO_CHECKС -DBUILD_CONFIG=mysql_release проигнорировать проверку libaioOFF
INSTALL_BINDIR Пользовательский каталог исполняемых модулейPREFIX/bin
INSTALL_DOCDIRКаталог документации PREFIX/docs
INSTALL_DOCREADMEDIRКаталог файла README PREFIX
INSTALL_INCLUDEDIRКаталог заголовочных файлов PREFIX/include
INSTALL_INFODIRКаталог файлов Info PREFIX/docs
INSTALL_LAYOUT Выберите предопределенное расположение установки STANDALONE
INSTALL_LIBDIRКаталог файлов библиотек PREFIX/lib
INSTALL_MANDIRКаталог Manual page PREFIX/man
INSTALL_MYSQLKEYRINGDIRКаталог файлов данных плагина keyring_fileЗависит от платформы
INSTALL_MYSQLSHAREDIR Совместно используемый каталог данныхPREFIX/share
INSTALL_MYSQLTESTDIRКаталог mysql-test PREFIX/mysql-test
INSTALL_PKGCONFIGDIR Каталог для файла mysqlclient.pc pkg-config INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIRКаталог плагинов PREFIX/lib/plugin
INSTALL_SBINDIRКаталог выполнения сервера PREFIX/bin
INSTALL_SECURE_FILE_PRIVDIR Значение по умолчанию secure_file_priv Зависит от платформы
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR Значение по умолчанию secure_file_priv для libmysqld
INSTALL_SHAREDIR Каталог установки aclocal/mysql.m4PREFIX/share
INSTALL_STATIC_LIBRARIES Установить ли статические библиотекиON
INSTALL_SUPPORTFILESDIR Дополнительный каталог файлов поддержки PREFIX/support-files
MAX_INDEXESМаксимум индексов на таблицу 64
MUTEX_TYPEТип InnoDB mutexevent
MYSQL_DATADIRКаталог данных
MYSQL_MAINTAINER_MODE Включить ли среду проектирования для MySQL maintainer OFF
MYSQL_PROJECT_NAMEИмя проекта Windows/OS X 3306
MYSQL_TCP_PORTПорт TCP/IP3306
MYSQL_UNIX_ADDRФайл сокета Unix /tmp/mysql.sock
ODBC_INCLUDESКаталог включений ODBC
ODBC_LIB_DIRКаталог библиотек ODBC
OPTIMIZER_TRACEПоддержать ли отслеживание оптимизатора
SYSCONFDIRКаталог файла опций
SYSTEMD_PID_DIRКаталог для файла PID под systemd /var/run/mysqld
SYSTEMD_SERVICE_NAME Название службы MySQL под systemdmysqld
TMPDIR Значение по умолчанию tmpdir
WIN_DEBUG_NO_INLINEЗапретить ли функцию inlining OFF
WITHOUT_SERVERНе создавать серверOFF
WITHOUT_xxx_STORAGE_ENGINE Исключить механизм хранения xxx
WITH_ASANВключить AddressSanitizerOFF
WITH_AUTHENTICATION_PAM Создать плагин аутентификации PAMOFF
WITH_BOOSTМестоположение источников библиотеки Boost
WITH_CLIENT_PROTOCOL_TRACING Создать клиентский протокол, прослеживающий структуру ON
WITH_DEBUGВключать ли поддержку отладки OFF
WITH_DEFAULT_COMPILER_OPTIONS Использовать ли опции компилятора по умолчаниюON
WITH_DEFAULT_FEATURE_SET Использовать ли набор функций по умолчаниюON
WITH_EDITLINE Какой библиотекой libedit/editline пользоваться bundled
WITH_EMBEDDED_SERVERСоздать ли встроенный сервер OFF
WITH_EMBEDDED_SHARED_LIBRARYСоздавать ли совместно используемую встроенную библиотеку сервераOFF
WITH_INNODB_EXTRA_DEBUG Включать ли дополнительную поддержку отладки InnoDBOFF
WITH_INNODB_MEMCACHEDПроизвести ли совместно используемые библиотеки memcachedOFF
WITH_KEYRING_TESTСоздать тестовую программу ключей OFF
WITH_LIBEVENTКакой библиотекой libevent пользоваться bundled
WITH_LIBWRAPВключать ли libwrap (TCP wrappers) OFF
WITH_LZ4Тип поддержки LZ4bundled
WITH_MECABКомпилировать MeCab
WITH_MSANВключить MemorySanitizerOFF
WITH_MSCRT_DEBUGВключить отслеживание утечки памяти Visual Studio CRTOFF
WITH_NUMA Установить политику распределения памяти NUMA
WITH_RAPIDСоздать ли плагины цикла быстрого развития ON
WITH_SSLТип поддержки SSLbundled
WITH_SYSTEMDВключить установку файлов поддержки systemd OFF
WITH_TEST_TRACE_PLUGIN Создать испытательный плагин трассировки протоколаOFF
WITH_TSANВключить ThreadSanitizerOFF
WITH_UBSANВключить Undefined Behavior Sanitizer OFF
WITH_UNIXODBCВключить unixODBCOFF
WITH_VALGRINDСобрать ли заголовочные файлы Valgrind OFF
WITH_ZLIBТип поддержки zlibbundled
WITH_xxx_STORAGE_ENGINE Собрать механизм хранения xxx статически в сервер

Следующие разделы предоставляют больше информации об опциях CMake.

Для булевых опций значение может быть определено как 1 или ON, чтобы включить опцию, или как 0 или OFF, чтобы выключить опцию.

Много опций конфигурируют значения по умолчанию времени компиляции, которые могут быть переопределены при запуске сервера. Например, опции CMAKE_INSTALL_PREFIX, MYSQL_TCP_PORT и MYSQL_UNIX_ADDR, которые конфигурируют местоположение каталога установки по умолчанию, номер порта TCP/IP и файл сокета Unix, могут быть изменены при запуске сервера с помощью опций --basedir, --port и --socket mysqld. Где применимо, описания параметра конфигурации указывают на соответствующую опцию запуска mysqld .

Общие параметры

  • -DBUILD_CONFIG=mysql_release

    Эта опция конфигурирует дистрибутив с опциями, используемыми Oracle, чтобы произвести двоичные дистрибутивы для официальных выпусков MySQL.

  • -DCMAKE_BUILD_TYPE=type

    Задает тип сборки:

    • RelWithDebInfo: Включить оптимизацию и произвести информацию об отладке. Это значение по умолчанию.

    • Debug: Выключить оптимизацию и произвести информацию об отладке. Это также используется, если включена WITH_DEBUG. Таким образом, -DWITH_DEBUG=1 имеет тот же самый эффект, как -DCMAKE_BUILD_TYPE=Debug.

  • -DCPACK_MONOLITHIC_INSTALL=bool

    Эта опция затрагивает, производит ли make package много файлов пакетов установки или единственный файл. Если отключено, производится много файлов пакетов установки, которые могут быть полезными, если Вы хотите установить только подмножество из полной установки MySQL. Если включено, это производит единственный файл для того, чтобы установить все.

Опции расположения установки

CMAKE_INSTALL_PREFIX указывает на основной каталог установки. Другие опции с названиями формы INSTALL_xxx указывают, что составляющие местоположения интерпретируются относительно префикса, а их значения относительные пути. Их значения не должны включать префикс.

  • -DCMAKE_INSTALL_PREFIX=dir_name

    Каталог основы установки. Это значение может быть установлено при запуске сервера с опцией --basedir .

  • -DINSTALL_BINDIR=dir_name

    Где установить пользовательские программы.

  • -DINSTALL_DOCDIR=dir_name

    Где установить документацию.

  • -DINSTALL_DOCREADMEDIR=dir_name

    Где установить файлы README.

  • -DINSTALL_INCLUDEDIR=dir_name

    Где установить заголовочные файлы.

  • -DINSTALL_INFODIR=dir_name

    Где установить файлы Info.

  • -DINSTALL_LAYOUT=name

    Выберите предопределенное расположение установки:

    • STANDALONE: То же самое расположение как используется для пакетов .tar.gz и .zip. Это значение по умолчанию.

    • RPM: Расположение, подобное пакетам RPM.
    • SVR4: Расположение пакета Solaris.
    • DEB: (Экспериментальное) расположение пакета DEB.

    Вы можете выбрать предопределенное расположение, но изменить отдельные составляющие местоположения установки, определяя другие опции. Например:

    shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
    

    INSTALL_LAYOUT определяет значение по умолчанию secure_file_priv и keyring_file_data , см. описания этих переменных в разделе 6.1.5.

  • -DINSTALL_LIBDIR=dir_name

    Где установить файлы библиотеки.

  • -DINSTALL_MANDIR=dir_name

    Где установить manual pages.

  • -DINSTALL_MYSQLKEYRINGDIR=dir_path

    Каталог по умолчанию, чтобы использовать в качестве местоположения файла данных плагина keyring_file. Значение по умолчанию зависит от платформы и от значения INSTALL_LAYOUT , см. детали в разделе 6.1.5.

  • -DINSTALL_MYSQLSHAREDIR=dir_name

    Где установить совместно используемые файлы с данными.

  • -DINSTALL_MYSQLTESTDIR=dir_name

    Где установить каталог mysql-test. Чтобы подавить установку этого каталога, явно установите опцию в пустое значение ( -DINSTALL_MYSQLTESTDIR=).

  • -DINSTALL_PKGCONFIGDIR=dir_name

    Каталог, в котором можно установить файл mysqlclient.pc для использования pkg-config. Значение по умолчанию INSTALL_LIBDIR/pkgconfig, если INSTALL_LIBDIR кончается на /mysql, это сначала удаляется.

  • -DINSTALL_PLUGINDIR=dir_name

    Местоположение каталога плагинов. Это значение может быть установлено при запуске сервера с помощью опции --plugin_dir.

  • -DINSTALL_SBINDIR=dir_name

    Где установить mysqld .

  • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

    Значение по умолчанию для secure_file_priv . Зависит от платформы и определяется INSTALL_LAYOUT , подробности в разделе 6.1.5.

    Установить значение для встроенного сервера libmysqld можно, используя INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR.

  • -DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=dir_name

    Значение по умолчанию для secure_file_priv встроенного сервера libmysqld.

  • -DINSTALL_SHAREDIR=dir_name

    Где установить aclocal/mysql.m4.

  • -DINSTALL_STATIC_LIBRARIES=bool

    Установить ли статические библиотеки. Значение по умолчанию ON. Если установлено в OFF, эти библиотеки не установлены: libmysqlclient.a, libmysqld.a, libmysqlservices.a.

  • -DINSTALL_SUPPORTFILESDIR=dir_name

    Где установить дополнительные файлы поддержки.

  • -DMYSQL_DATADIR=dir_name

    Местоположение каталога данных MySQL. Это значение может быть установлено при запуске сервера опцией --datadir.

  • -DODBC_INCLUDES=dir_name

    Местоположение каталога ODBC, может использоваться, конфигурируя Connector/ODBC.

  • -DODBC_LIB_DIR=dir_name

    Местоположение каталога библиотеки ODBC, может использоваться, конфигурируя Connector/ODBC.

  • -DSYSCONFDIR=dir_name

    Каталог файла опций my.cnf по умолчанию.

    Это местоположение не может быть установлено при запуске сервера, но Вы можете запустить сервер с указанным файла опций, используя --defaults-file=file_name, где file_name полный путь к файлу.

  • -DSYSTEMD_PID_DIR=dir_name

    Название каталога, в котором можно создать файл PID, когда MySQL управляет systemd. Значение по умолчанию /var/run/mysqld, это могло бы быть изменено неявно, согласно INSTALL_LAYOUT .

    Эта опция проигнорирована, если включена WITH_SYSTEMD .

  • -DSYSTEMD_SERVICE_NAME=name

    Название службы MySQL, чтобы использовать, когда MySQL управляет systemd. Значение по умолчанию mysqld, это могло бы быть изменено неявно, согласно INSTALL_LAYOUT.

    Эта опция проигнорирована, если включена WITH_SYSTEMD .

  • -DTMPDIR=dir_name

    Местоположение по умолчанию, чтобы использовать для системной переменной tmpdir. Если не указано, значение по умолчанию берется из P_tmpdir в файле <stdio.h>.

Опции механизмов хранения

Механизмы хранения созданы как плагины. Вы можете создать плагин как статический модуль (собранный в сервер) или динамический модуль (созданный как динамическая библиотека, которая должна быть установлена в сервер, используя INSTALL PLUGIN или --plugin-load прежде, чем это сможет использоваться). Некоторые плагины не могут поддержать статическую или динамическую сборку.

Механизмы InnoDB, MyISAM, MERGE, MEMORY и CSV обязательны (всегда собраны в сервер) и не должны быть установлены явно.

Чтобы собрать механизм хранения статически в сервер, надо использовать -DWITH_engine_STORAGE_ENGINE=1. Некоторые допустимые значения engine: ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED и PERFSCHEMA (Performance Schema). Например:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

Невозможно собрать без поддержки Performance Schema. Если надо собрать без особых типов инструментовки, это может быть сделано со следующими опциями:

DISABLE_PSI_COND
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION

Например, чтобы собрать без инструментовки mutex, сконфигурируйте MySQL, используя -DDISABLE_PSI_MUTEX=1.

Чтобы исключить механизм хранения из сборки, примените -DWITH_engine_STORAGE_ENGINE=0:

-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0

Также возможно исключить механизм хранения из сборки через -DWITHOUT_engine_STORAGE_ENGINE=1 (но -DWITH_engine_STORAGE_ENGINE=0 предпочтен). Примеры:

-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

Если ни один -DWITH_engine_STORAGE_ENGINE или -DWITHOUT_engine_STORAGE_ENGINE не определены для данного механизма хранения, механизм создан как совместно используемый модуль, или исключен, если он не может быть создан как совместно используемый модуль.

Опции особенностей

  • -DCOMPILATION_COMMENT=string

    Описательный комментарий об окружающей среде компиляции.

  • -DDEFAULT_CHARSET=charset_name

    Набор символов сервера. По умолчанию, MySQL использует latin1 (cp1252 West European).

    charset_name может быть одним из binary, armscii8, ascii, big5, cp1250, cp1251, cp1256, cp1257, cp850, cp852, cp866, cp932, dec8, eucjpms, euckr, gb2312, gbk, geostd8, greek, hebrew, hp8, keybcs2, koi8r, koi8u, latin1, latin2, latin5, latin7, macce, macroman, sjis, swe7, tis620, ucs2, ujis, utf8, utf8mb4, utf16, utf16le, utf32. Допустимые наборы символов перечислены в файле cmake/character_sets.cmake как значения CHARSETS_AVAILABLE. Это значение может быть установлено при запуске сервера с опцией --character_set_server.

  • -DDEFAULT_COLLATION=collation_name

    Сопоставление сервера. По умолчанию используется latin1_swedish_ci. Используйте SHOW COLLATION, чтобы определить, какие сопоставления доступны для каждого набора символов. Это значение может быть установлено при запуске сервера с опцией --collation_server .

  • -DDISABLE_PSI_COND=bool

    Исключить ли инструментовку условия Performance Schema. Значение по умолчанию OFF (включать).

  • -DDISABLE_PSI_FILE=bool

    Исключить ли инструментовку файлов Performance Schema. Значение по умолчанию OFF (включать).

  • -DDISABLE_PSI_IDLE=bool

    Исключить ли инструментовку ожидания Performance Schema. Значение по умолчанию OFF (включать).

  • -DDISABLE_PSI_MEMORY=bool

    Исключить ли инструментовку памяти Performance Schema. Значение по умолчанию OFF (включать).

  • -DDISABLE_PSI_METADATA=bool

    Исключить ли инструментовку метаданных Performance Schema. Значение по умолчанию OFF (включать).

  • -DDISABLE_PSI_MUTEX=bool

    Исключить ли инструментовку mutex Performance Schema.

  • -DDISABLE_PSI_RWLOCK=bool

    >Исключить ли инструментовку Performance Schema rwlock.
  • -DDISABLE_PSI_SOCKET=bool

    Исключить ли инструментовку сокетов Performance Schema.

  • -DDISABLE_PSI_SP=bool

    Исключить ли инструментовку сохраненных подпрограмм Performance Schema.

  • -DDISABLE_PSI_STAGE=bool

    Исключить ли инструментовку этапа Performance Schema.

  • -DDISABLE_PSI_STATEMENT=bool

    Исключить ли инструментовку запросов Performance Schema.

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    Исключить ли инструментовку Performance Schema statement_digest.

  • -DDISABLE_PSI_TABLE=bool

    Исключить ли инструментовку таблиц Performance Schema.

  • -DDISABLE_SHARED=bool

    Запретить ли сборку совместно используемых библиотек и собирать зависимый от позиции код. Значение по умолчанию OFF (собрать независимый от позиции код).

    Включение этой опции отключает -fPIC, в результате совместно используемые библиотеки не созданы, включая плагины и компоненты. Вызов CMake производит это предупреждение: Dynamic plugins are disabled.

  • -DDOWNLOAD_BOOST=bool

    Загрузить ли библиотеку Boost. Значение по умолчанию OFF.

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

    Тайм-аут в секундах для того, чтобы загрузить библиотеку Boost. Значение по умолчанию составляет 600 секунд.

  • -DENABLE_DEBUG_SYNC=bool

    Собрать ли средство Debug Sync facility в сервер. Это средство используется для тестирования и отладки. Эта опция включена по умолчанию, но не имеет никакого эффекта, если MySQL не сконфигурирован с отладкой. Если отладка включена, и Вы хотите отключить Debug Sync, надо использовать -DENABLE_DEBUG_SYNC=0.

    Когда собрано, Debug Sync отключена по умолчанию во время выполнения. Чтобы включить, запустите mysqld с опцией --debug-sync-timeout=N, где N значение тайм-аута, больше чем 0. Значение по умолчанию 0, которое отключает Debug Sync. N становится тайм-аутом значения по умолчанию для отдельных пунктов синхронизации.

    Синхронизирующая проверка отладки InnoDB доступна, когда отладка собрана с использованием опции WITH_DEBUG.

    Для описания средства Debug Sync и пунктов синхронизации см. MySQL Internals: Test Synchronization.

  • -DENABLE_DOWNLOADS=bool

    Загрузить ли дополнительные файлы. Например, с этой включенной опцией, CMake загружает дистрибутив Google Test, который используется испытательным набором, чтобы выполнить тесты модуля.

  • -DENABLE_DTRACE=bool

    Включать ли поддержку исследований DTrace. Для информации о DTrace см. раздел 6.8.

  • -DENABLE_GCOV=bool

    Включать ли поддержку gcov (Linux только).

  • -DENABLE_GPROF=bool

    Включить ли gprof (Linux только).

  • -DENABLED_LOCAL_INFILE=bool

    Включить ли LOCAL в библиотеке клиента для LOAD DATA INFILE.

    Эта опция управляет на стороне клиента LOCAL, но способность может быть установлена на стороне сервера при запуске сервера с опцией --local-infile . См. раздел 7.1.6.

  • -DENABLED_PROFILING=bool

    Включить ли код профилирования запроса (для SHOW PROFILE и SHOW PROFILES).

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    По умолчанию CMake проверяет на минимальные версии поддержанных компиляторов: gcc 4.4 (Linux, Solaris), Sun Studio 12u2 (Solaris client library), Clang 3.3 (OS X, FreeBSD). Чтобы отключить эту проверку, надо использовать -DFORCE_UNSUPPORTED_COMPILER=ON.

  • -DIGNORE_AIO_CHECK=bool

    Если опция -DBUILD_CONFIG=mysql_release дана на Linux, библиотека libaio должна быть скомпонована по умолчанию. Если Вы не имеете libaio или не хотите устанавливать, Вы можете подавить проверку на это, определяя -DIGNORE_AIO_CHECK=1.

  • -DMAX_INDEXES=num

    Максимальное количество индексов на таблицу. Значение по умолчанию 64. Максимум 255. Значения, меньшие чем 64, проигнорированы, и значение по умолчанию 64 используется.

  • -DMYSQL_MAINTAINER_MODE=bool

    Включить ли среду проектирования разработчика MySQL. Если включена, эта опция заставляет предупреждения компилятора стать ошибками.

  • -DMUTEX_TYPE=type

    Тип mutex, используемый InnoDB. Опции включают:

    • event: Используйте event mutex. Это значение по умолчанию и оригинальная реализация InnoDB mutex.

    • sys: POSIX mutexes в UNIX. Использует в Windows объекты CRITICAL_SECTION при наличии.
    • futex: Linux futex вместо переменных условия, чтобы планировать потоки ожидания.

  • -DMYSQL_PROJECT_NAME=name

    В Windows или OS X название проекта, чтобы соединить в проектное имя файла.

  • -DMYSQL_TCP_PORT=port_num

    Порт TCP/IP. По умолчанию 3306. Это значение может быть установлено при запуске сервера с опцией --port.

  • -DMYSQL_UNIX_ADDR=file_name

    Файл сокета Unix, на котором сервер прислушивается к сокетным соединениям. Это должно быть абсолютным путем. Значение по умолчанию /tmp/mysql.sock. Это значение может быть установлено при запуске сервера с опцией --socket .

  • -DOPTIMIZER_TRACE=bool

    Поддержать ли трассировку оптимизатора. См. MySQL Internals: Tracing the Optimizer.

  • -DUSE_LD_GOLD=bool

    Использовать ли GNU gold.

  • -DWIN_DEBUG_NO_INLINE=bool

    Запретить ли функцию inlining в Windows. Значение по умолчанию выключено (inlining включена).

  • -DWITH_ASAN=bool

    Включить ли AddressSanitizer для компиляторов, которые поддерживают его. Значение по умолчанию выключено.

  • -DWITH_AUTHENTICATION_PAM=bool

    Создать ли плагин аутентификации PAM для исходных деревьев, которые включают этот плагин. См. The PAM Authentication Plugin. Если эта опция определена, но плагин не может быть собран, сборка терпит неудачу.

  • -DWITH_BOOST=path_name

    Библиотека Boost требуется для сборки MySQL. Эти опции CMake включают управление исходным местоположением библиотеки, и загрузить ли это автоматически:

    • -DWITH_BOOST=path_name определяет местоположение каталога библиотеки. Также возможно определить местоположение, устанавливая переменные окружения BOOST_ROOT или WITH_BOOST.

      -DWITH_BOOST=system также разрешена и указывает, что правильная версия Boost установлена на узле компиляции в стандартном местоположении. В этом случае установленная версия используется, а не версия, которая включена в исходные тексты MySQL.

    • -DDOWNLOAD_BOOST=bool определяет, загрузить ли пакет Boost если он не присутствует в указанном местоположении. Значение по умолчанию OFF.
    • -DDOWNLOAD_BOOST_TIMEOUT=seconds тайм-аут в секундах для того, чтобы загрузить библиотеку Boost. Значение по умолчанию составляет 600 секунд.

    Например, если Вы обычно создаете MySQL, помещая вывод объекта в bld, Вы можете собрать с Boost:

    mkdir bld
    cd bld
    cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
    

    Это заставляет загрузить Boost в подкаталог my_boost Вашего домашнего каталога. Если необходимая версия уже там, никакая загрузка не будет сделана. Если необходимая версия Повышения изменяется, более новая версия загружена.

    Если Boost уже установлена в местном масштабе, и Ваш компилятор находит заголовочные файлы самостоятельно, возможно, не надо определить предыдущие опции. Однако, если версия, требуемая изменениями MySQL, не была обновлена, Вы можете иметь проблемы. Используя опции CMake, соберете все нормально.

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    Встроить ли клиентский протокол, прослеживающий структуру в библиотеку клиента. По умолчанию, эта опция включена.

    Для информации о теме, см. раздел 26.2.4.11.

    См. также опцию WITH_TEST_TRACE_PLUGIN.

  • -DWITH_DEBUG=bool

    Включать ли поддержку отладки.

    Конфигурирование MySQL с отладкой позволяет Вам использовать опцию --debug="d,parser_debug" , когда Вы запускаете сервер. Это вызывает анализатор Bison, который используется, чтобы обработать запросы SQL, чтобы вывести трассировку анализатора к стандартному ошибочному выводу сервера. Как правило, этот вывод написан в журнал ошибок.

    Синхронизирующая проверка отладки InnoDB определена под UNIV_DEBUG и доступна, когда отладка собрана с опцией WITH_DEBUG . Когда отладка собрана, опция innodb_sync_debug может использоваться, чтобы включить или отключить проверку отладки InnoDB.

  • -DWITH_DEFAULT_FEATURE_SET=bool

    Использовать ли флаги из cmake/build_configurations/feature_set.cmake.

  • -DWITH_EDITLINE=value

    Которую библиотеку libedit/editline использовать. Разрешенные значения bundled (по умолчанию) и system.

  • -DWITH_EMBEDDED_SERVER=bool

    Создать ли встроенную библиотеку libmysqld сервера.

  • -DWITH_EMBEDDED_SHARED_LIBRARY=bool

    Создать ли совместно используемую встроенную библиотеку libmysqld сервера.

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    Включать ли дополнительную отладку InnoDB.

    Включение WITH_INNODB_EXTRA_DEBUG включает дополнительные проверки отладки InnoDB. Эта опция может быть включена, только когда включена WITH_DEBUG.

  • -DWITH_INNODB_MEMCACHED=bool

    Произвести ли совместно используемые библиотеки memcached (libmemcached.so и innodb_engine.so).

  • -DWITH_KEYRING_TEST=bool

    Создать ли тестовую программу, которая сопровождает плагин keyring_file. Значение по умолчанию OFF. Испытательный исходный код файла расположен в каталоге plugin/keyring/keyring-test.

  • -DWITH_LIBEVENT=string

    Которую библиотеку libevent использовать. Разрешенные значения bundled (по умолчанию), system и yes. Если Вы определяете system или yes, используется системная библиотека libevent, если существует. Если системная библиотека не найдена, используется внутренняя libevent. Библиотека libevent требуется для InnoDB memcached.

  • -DWITH_LIBWRAP=bool

    Включать ли libwrap (TCP wrappers).

  • -DWITH_LZ4=lz4_type

    WITH_LZ4 указывает на источник поддержки zlib:

    • bundled: Использовать lz4 из комплекта дистрибутива. Это значение по умолчанию.

    • system: Использовать системную lz4. Если WITH_LZ4 установлена в это значение, утилита lz4_decompress не собирается. В этом случае системная команда lz4 может использоваться вместо нее.

  • -DWITH_MSAN=bool

    Включить ли MemorySanitizer, для компиляторов, которые поддерживают его. Значение по умолчанию: выключено.

    Для этой опции, чтобы иметь эффект если включена, все библиотеки, скомпонованные с MySQL, должны быть также собраны с включенной опцией.

  • -DWITH_MECAB={disabled|system|path_name}

    Используйте эту опцию, чтобы собрать анализатор MeCab. Если Вы установили MeCab в его каталог установки по умолчанию, установите -DWITH_MECAB=system. Опция system относится к установкам MeCab, выполненным от исходных текстов или из двоичных файлов, используя родную управленческую утилиту пакета. Если Вы устанавливали MeCab в пользовательский каталог установки, определите путь к установке MeCab. Например, -DWITH_MECAB=/opt/mecab. Если опция system не работает, определите путь установки MeCab, который должен работать во всех случаях.

    Подробности есть в разделе 13.9.9.

  • -DWITH_MSCRT_DEBUG=bool

    Включить ли отслеживание утечки памяти Visual Studio CRT. Значение по умолчанию OFF.

  • -DWITH_PROTOBUF=protobuf_type

    Какой буферный пакет протокола использовать. protobuf_type может быть одним из следующих значений:

    • bundled: Используйте пакет из комплекта дистрибутива. Это значение по умолчанию.

    • system: Используйте пакет, установленный в системе.

    Другие значения проигнорированы, с отступлением к bundled.

  • -DWITH_RAPID=bool

    Создать ли плагины цикла быстрого развития. Когда включено, создается каталог rapid, содержащий эти плагины. Значение по умолчанию ON. Если каталог rapid удален из исходного дерева, тогда значение по умолчанию становится OFF.

  • -DWITH_SSL={ssl_type| path_name}

    Тип поддержки SSL или путь к OpenSSL, чтобы использовать.

    • ssl_type может быть:

      • yes: Системная библиотека SSL, если есть. Иначе комплектная библиотека дистрибутива.

      • bundled: Пользуйтесь библиотекой SSL из дистрибутива. Это значение по умолчанию.
      • system: Системная библиотека SSL.

    • path_name путь к установке OpenSSL, чтобы использовать. Это может быть предпочтительным использованию ssl_type=system, поскольку это может препятствовать тому, чтобы CMake обнаружил и использовал более старую или неправильную версию OpenSSL, установленную в системе. Другой разрешенный способ сделать ту же самую вещь состоит в том, чтобы установить CMAKE_PREFIX_PATH в path_name.

  • -DWITH_SYSTEMD=bool

    Включить ли установку файлов поддержки systemd. По умолчанию эта опция отключена. Когда включено, файлы поддержки установлены systemd, и такие скрипты, как mysqld_safe и скрипт инициализации System V не ставятся. На платформах, где systemd не доступен, включение WITH_SYSTEMD приведет к ошибке CMake.

    Для получения дополнительной информации об использовании systemd см. раздел 2.5.9. Этот раздел также включает информацию об определении опций, ранее указанных в группах [mysqld_safe]. Поскольку mysqld_safe не установлен, когда используется systemd, такие опции должны быть определены иначе.

  • -DWITH_TEST_TRACE_PLUGIN=bool

    Создать ли испытательный плагин клиента трассировки протокола (см. раздел 26.2.4.11.1). По умолчанию эта опция отключена. Включение этой опции не имеет никакого эффекта, если WITH_CLIENT_PROTOCOL_TRACING включена. Если MySQL сконфигурирован с обеими включенными опциями, библиотека клиента libmysqlclient создана с испытательным плагином отслеживания протокола, а все стандартные клиенты MySQL загружают плагин. Однако, даже когда испытательный плагин включен, он не имеет никакого эффекта по умолчанию. Управление плагином предоставлено, используя переменные окружения, см. раздел 26.2.4.11.1.

    Не включайте опцию WITH_TEST_TRACE_PLUGIN, если Вы хотите использовать свои собственные плагины трассировки протокола, потому что только один такой плагин может быть загружен за один раз, и ошибка происходит для попыток загрузить второй. Если Вы уже создали MySQL с испытательным плагином отслеживания протокола, Вы должны восстановить MySQL без этого прежде, чем Вы сможете использовать свои собственные плагины.

    Подробности есть в разделе 26.2.4.11.

  • -DWITH_TSAN=bool

    Включить ли ThreadSanitizer для компиляторов, которые поддерживают его. Значение по умолчанию: выключено.

  • -DWITH_UBSAN=bool

    Включить ли Undefined Behavior Sanitizer для компиляторов, которые поддерживают его. Значение по умолчанию: выключено.

  • -DWITH_UNIXODBC=1

    Включает поддержку unixODBC для Connector/ODBC.

  • -DWITH_VALGRIND=bool

    Собрать ли в заголовочных файлах Valgrind, который выставляет Valgrind API в MySQL. Значение по умолчанию OFF.

    Чтобы произвести Valgrind-отладку, -DWITH_VALGRIND=1 обычно объединяется с -DWITH_DEBUG=1. См. Building Debug Configurations.

  • -DWITH_ZLIB=zlib_type

    Некоторые особенности, такие как функции COMPRESS() и UNCOMPRESS() и сжатие протокола клиент-сервер, требуют, чтобы сервер был создан с поддержкой библиотеки сжатия. WITH_ZLIB указывает на источник поддержки zlib:

    • bundled: комплектная библиотека zlib в дистрибутиве. Это значение по умолчанию.

    • system: Системная библиотека zlib. Если WITH_ZLIB установлена в это значение, утилита zlib_decompress не собирается. В этом случае команда openssl zlib может использоваться вместо этого.

  • -DWITHOUT_SERVER=bool

    Создать ли пакет без сервера MySQL. Значение по умолчанию OFF, которое действительно создает сервер.

Флаги компилятора

  • -DCMAKE_C_FLAGS="flags"

    Флаги для компилятора C.

  • -DCMAKE_CXX_FLAGS="flags"

    Флаги для компилятора C++.

  • -DWITH_DEFAULT_COMPILER_OPTIONS=bool

    Использовать ли флаги из cmake/build_configurations/compiler_options.cmake.

    Все флаги оптимизации были тщательно выбраны и проверены командой MySQL. Переопределение их может привести к неожиданным результатам и сделано на ваш собственный риск.

Чтобы определить Ваши собственные флаги компилятора C и C ++, для флагов, которые не затрагивают оптимизацию, используют опции CMake CMAKE_C_FLAGS и CMAKE_CXX_FLAGS.

Обеспечивая Ваши собственные флаги компилятора, Вы могли бы хотеть определить также и CMAKE_BUILD_TYPE.

Например, чтобы создать 32-битную версию на 64-bit Linux-системе:

shell> mkdir bld
shell> cd bld
shell> cmake .. -DCMAKE_C_FLAGS=-m32 \
                   -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_BUILD_TYPE=RelWithDebInfo

Если Вы устанавливаете флаги оптимизации (-Onumber), Вы должны установить опции CMAKE_C_FLAGS_build_type и\или CMAKE_CXX_FLAGS_build_type, где build_type соответствует значению CMAKE_BUILD_TYPE . Чтобы определить иную оптимизацию для типа сборки по умолчанию (RelWithDebInfo), задайте опции CMAKE_C_FLAGS_RELWITHDEBINFO и CMAKE_CXX_FLAGS_RELWITHDEBINFO. Например, чтобы собрать на Linux с -O3 символами отладки, сделайте это:

shell> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
                   -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

2.8.5. Проблемы сборки MySQL

Решение многих проблем вовлекает реконфигурирование. Примите во внимание следующее:

  • Если CMake выполнен после того, как он был ранее выполнен, он может использовать информацию, которая была собрана во время предыдущего запуска. Эта информация хранится в CMakeCache.txt. Когда CMake запускается, он ищет тот файл и читает его содержание, если он существует, при условии, что информация все еще правильна. Это предположение недопустимо, когда Вы реконфигурировали пакет.

  • Каждый раз, когда Вы выполняете CMake, Вы должны запустить make снова, чтобы повторно собрать. Однако, Вы можете хотеть удалить старые файлы объекта, потому что они были собраны, используя иные параметры конфигурации.

Чтобы препятствовать тому, чтобы старые файлы объектов или информация о конфигурации использовались, выполните следующие команды прежде, чем запустить повторно CMake:

В Unix:

shell> make clean
shell> rm CMakeCache.txt

В Windows:

shell> devenv MySQL.sln /clean
shell> del CMakeCache.txt

Если Вы создаете за пределами исходного дерева, удалите и обновите Ваш каталог сборки прежде, чем запустить повторно CMake . Для инструкций по сборке за пределами исходного дерева см. How to Build MySQL Server with CMake.

На некоторых системах предупреждения могут произойти из-за различий в системе. Следующий список описывает другие проблемы, которые произошли чаще всего при сборке MySQL:

  • Определите, какие компиляторы C и C++ использовать, Вы можете определить переменные окружения CC и CXX. Пример:

    shell> CC=gcc
    shell> CXX=g++
    shell> export CC CXX
    

    Чтобы определить Ваши собственные флаги компилятора, используйте опции CMAKE_C_FLAGS и CMAKE_CXX_FLAGS.

  • Чтобы видеть, какие команды выполнены во время сборки, после использования CMake, чтобы сконфигурировать MySQL, выполните make VERBOSE=1 прежде make.
  • Если компиляция терпит неудачу, проверьте включение опции MYSQL_MAINTAINER_MODE. Этот режим заставляет предупреждения компилятора стать ошибками, так что его отключение может позволить компиляции продолжиться.
  • Если Ваша сборка терпит неудачу с такими ошибками, как какая-либо из следующих, Вы должны обновить свою версию make до GNU make:
    make: Fatal error in reader: Makefile, line 18:
    Badly formed macro assignment
    

    Или:

    make: file `Makefile' line 18: Must be a separator (:
    

    Или:

    pthread.h: No such file or directory
    

    Solaris и FreeBSD, как известно, имеют проблемную программу make.

    GNU make 3.75 точно работает.

  • Файл sql_yacc.cc произведен от sql_yacc.yy. Обычно процесс сборки не должен создать sql_yacc.cc, потому что MySQL идет с предварительно произведенной копией. Однако, если Вы действительно должны обновить это, Вы могли бы столкнуться с этой ошибкой:
    "sql_yacc.yy", line xxx fatal: default action causes potential...
    

    Это знак, что Ваша версия yacc является несовершенной. Вы, вероятно, должны установить недавнюю версию bison (GNU-версия yacc) вместо этого.

    Версии bison до 1.75 могут сообщить об этой ошибке:

    sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
    

    Максимальный табличный размер фактически не превышен, ошибка вызвана ошибками в более старых версиях bison.

2.8.6. Конфигурация MySQL и имеющие отношение к третьей стороне инструменты

Имеющие отношение к третьей стороне инструменты, которые должны определить версию MySQL из исходных текстов MySQL, могут читать файл VERSION в верхнем уровне каталога исходных текстов. Файл перечисляет части версии отдельно. Например, если версия 8.0.4-m14, файл похож на это:

MYSQL_VERSION_MAJOR=8
MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=4
MYSQL_VERSION_EXTRA=-m14

Если это не General Availablility (GA), значение MYSQL_VERSION_EXTRA будет непусто. В примере значение соответствует Milestone 14.

Чтобы создать пятизначное число из компонентов версии, используйте эту формулу:

MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH

2.8.7. Производство документации MySQL Doxygen

Исходные тексты MySQL содержат внутреннюю документацию, использующую Doxygen. Произведенный контент Doxygen доступен в http://dev.mysql.com/doc/dev/mysql-server/latest/. Также возможно произвести этот контент в местном масштабе от исходного дистрибутива MySQL, используя следующую процедуру:

  1. Установите doxygen 1.8.11 или выше. Дистрибутивы доступны здесь:

    
    http://www.stack.nl/~dimitri/doxygen/download.html
    

    После установки doxygen, проверьте номер версии:

    shell> doxygen --version
    1.8.11
    
  2. Поставьте PlantUML. Дистрибутивы доступны здесь:
    
    http://plantuml.com/download.html
    

    Когда Вы устанавливаете PlantUML на Windows (проверено на Windows 10), Вы должны выполнить это, по крайней мере, однажды как администратор, чтобы создать регистрационные ключи. Откройте консоль администратора и выполните эту команду:

    java -jar path-to-plantuml.jar
    

    Команда должна открыть окно GUI и не возвратить ошибки на консоль.

  3. Поставьте Graphviz dot. Дистрибутивы доступны здесь:
    http://www.graphviz.org/
    

    После установки Graphviz, проверьте доступность dot:

    shell> which dot
    /usr/bin/dot
    shell> dot -V
    dot - graphviz version 2.28.0 (20130928.0220)
    
  4. Установите переменную среды PLANTUML_JAR_PATH к местоположению, где Вы устанавливали PlantUML. Например:
    export PLANTUML_JAR_PATH=path-to-plantuml.jar
    
  5. Чтобы вызвать doxygen, измените местоположение на верхний каталог Вашего дистрибутива исходного текста MySQL и выполните эти команды:
    mkdir -p generated/doxygen
    doxygen
    

    Осмотрите журнал ошибок. Это доступно в файле doxyerror.log каталога верхнего уровня. Предполагая, что создание выполнено успешно, рассмотрите произведенный вывод, используя браузер. Например:

    firefox generated/doxygen/html/index.html
    

    Вы можете использовать иной браузер.

2.9. Постустановка и тестирование

Этот раздел обсуждает задачи, которые Вы должны выполнить после установки MySQL:

  • В случае необходимости, инициализируйте каталог данных и составьте таблицы привилегий MySQL. Для некоторых методов установки MySQL инициализация каталога данных может быть сделана для Вас автоматически:

    • Операции установки Windows, выполненные MySQL Installer, инициализируют каталог данных автоматически.

    • Установка на Linux, используя дистрибутив RPM сервера.
    • Установка используя родную систему упаковки на многих платформах, включая Linux Debian, Ubuntu Linux, Gentoo Linux и пр.
    • Установка на OS X из дистрибутива DMG.

    Для других платформ и типов установки, включая установку из общего двоичного дистрибутива и исходных текстов, Вы должны инициализировать каталог данных самостоятельно. Для инструкций см. раздел 2.9.1.

  • Запустите сервер и удостоверьтесь, что к нему можно получить доступ. Для инструкций см. разделы 2.9.2 и 2.9.3.
  • Назначьте пароли на учетную запись root в таблицах привилегий, если это не было уже сделано во время инициализации каталога данных. Пароли предотвращают несанкционированный доступ к серверу MySQL. Для инструкций см. раздел 2.9.4.
  • Произвольно примите меры, чтобы сервер запустился и остановился автоматически, когда Ваша система запускается и останавливается. Для инструкций см. раздел 2.9.5.
  • Заполните таблицы часового пояса, чтобы включить распознавание названных часовых поясов. Для инструкций см. раздел 11.6.

Когда Вы готовы создать дополнительные учетные записи пользователя, Вы можете найти информацию о системе управления доступом MySQL и ведении учеток в разделах 7.2 и 7.3.

2.9.1. Инициализация каталога данных

После установки MySQL Вы должны инициализировать каталог данных, включая таблицы в системной базе данных mysql. Для некоторых методов установки MySQL инициализация каталога данных может быть сделана автоматически, как описано в разделе 2.9. Для других методов установки, включая установку из двоичного дистрибутива и исходных текстов, Вы должны инициализировать каталог данных самостоятельно.

Этот раздел описывает, как инициализировать каталог данных на Unix и подобных Unix системах. Для Windows см. раздел 2.3.7. Для некоторых предложенных команд, которые Вы можете использовать для теста, является ли сервер доступным и рабочим должным образом см. раздел 2.9.3.

В примерах, показанных здесь, сервер работает в соответствии с пользовательской учетной записью mysql. Это предполагает, что такая учетная запись существует. Создайте учетную запись, если она не существует, или замените названием иной существующей учетной записью, которую Вы планируете использовать для того, чтобы выполнить сервер. Для информации о создании учетной записи см. раздел 2.2.

  1. Перейдите в верхний каталог Вашей установки MySQL, представленный здесь BASEDIR:

    shell> cd BASEDIR
    

    BASEDIR вероятно, будет вроде /usr/local/mysql или /usr/local. Следующие шаги предполагают, что Вы изменили местоположение на этот каталог.

    Вы найдете несколько файлов и подкаталогов в BASEDIR. Самые важные в целях установки bin и scripts, которые содержат сервер, клиент и утилиты.

  2. Создайте каталог, который обеспечивает местоположение, чтобы использовать в качестве значения системной переменной secure_file_priv, которая ограничивает операции импорта/экспорта определенным каталогом. См. раздел 6.1.5.
    shell> mkdir mysql-files
    shell> chmod 750 mysql-files
    
  3. В случае необходимости гарантируйте, что содержание дистрибутива доступно для mysql. Если Вы устанавливали дистрибутив как mysql, ничего делать дополнительно не надо. Если Вы устанавливали дистрибутив как root, его содержание будет принадлежать root. Измените его принадлежность на mysql, выполняя следующие команды как root в каталоге установки. Первая команда изменяет признак владельца файлов на mysql. Вторая изменяет атрибут группы на mysql.
    shell> chown -R mysql .
    shell> chgrp -R mysql .
    
  4. В случае необходимости инициализируйте каталог данных, включая базу данных mysql, содержащую таблицы привилегий MySQL, которые определяют, как пользователям разрешают соединиться с сервером.

    Как правило, инициализация каталога данных должна быть сделана только в первый раз, когда Вы устанавливаете MySQL. Если Вы обновляете существующую установку, Вы должны выполнить mysql_upgrade (см. раздел 5.4.5). Однако, команда, которая инициализирует каталог данных, не перезаписывает существующих таблиц привилегий, таким образом, должно быть безопасно работать при любых обстоятельствах.

    Используйте сервер, чтобы инициализировать каталог данных:

    shell> bin/mysqld --initialize --user=mysql
    
  5. Если Вы хотите, чтобы сервер был в состоянии развернуться с автоматической поддержкой безопасных соединений, используйте утилиту mysql_ssl_rsa_setup , чтобы создать файлы по умолчанию SSL и RSA:
    shell> mysql_ssl_rsa_setup
    

    Подробности в разделе 5.4.3.

  6. После инициализации каталога данных Вы можете установить заключительные настройки принадлежности установки. Если оставить установку принадлежащей mysql, ничего делать не надо. Иначе большая часть установки MySQL может принадлежать root. Исключение то, что каталоги данных и mysql-files ДОЛЖНЫ принадлежать mysql. Чтобы достигнуть этого, выполните следующие команды как root в каталоге установки. Для некоторых типов дистрибутива можно было бы назвать каталог данных var, а не data, скорректируйте вторую команду соответственно.
    shell> chown -R root .
    shell> chown -R mysql data mysql-files
    

    Если каталог плагинов (указан в переменной plugin_dir) перезаписываем сервером, для пользователя может быть возможно написать выполнимый код в файл в каталоге, используя SELECT ... INTO DUMPFILE. Это может быть предотвращено, делая каталог только для чтения сервера или устанавливая переменную secure_file_priv при запуске сервера к каталогу, где записи SELECT могут быть выполнены безопасно. Например, установите это в mysql-files, создаваемый ранее.

  7. Чтобы определить опции, которые сервер MySQL должен использовать при запуске, поместите их в файл /etc/my.cnf или /etc/mysql/my.cnf. Вы можете использовать такой файл, например, чтобы установить переменную secure_file_priv. См. раздел 6.1.2. Если Вы не делаете этого, сервер запускается с его настройками по умолчанию.
  8. Если Вы хотите, чтобы MySQL запустился автоматически, когда Вы загружаете свою машину, см. раздел 2.9.5.

Инициализация каталога данных составляет таблицы часового пояса в базе данных mysql, но не заполняет их. Чтобы сделать это, используйте инструкции в раздел 11.6.

2.9.1.1. Инициализация каталога данных вручную, используя mysqld

Этот раздел описывает, как инициализировать каталог данных, используя mysqld.

Следующие инструкции предполагают, что Ваше текущее местоположение, это каталог установки MySQL, представленный здесь как BASEDIR:

shell> cd BASEDIR

Чтобы инициализировать каталог данных, вызовите mysqld с опцией --initialize или --initialize-insecure, в зависимости от того, хотите ли Вы, чтобы сервер произвел случайный начальный пароль для 'root'@'localhost'.

В Windows используйте одну из этих команд:

C:\> bin\mysqld --initialize
C:\> bin\mysqld --initialize-insecure

В Unix-системах важно удостовериться, что каталоги базы данных и файлы принадлежат учетной записи mysql так, чтобы сервер имел доступ к ним на чтение и запись, когда Вы выполняете это позже. Чтобы гарантировать это, выполните mysqld как root и включите опцию --user:

shell> bin/mysqld --initialize --user=mysql
shell> bin/mysqld --initialize-insecure --user=mysql

Иначе выполните программу в то время как зарегистрированы как mysql, в этом случае Вы можете опустить опцию --user.

Независимо от платформы, надо использовать --initialize для безопасности по умолчанию (то есть, включая генерацию случайного пароля для root). В этом случае пароль отмечен как выдохшийся, и Вы должны будете выбрать новый. С опцией --initialize-insecure пароль не генерируется, предполагается, что Вы назначите пароль на учетную запись прежде, чем поместить сервер в производственное использование.

Могло бы быть необходимо определить другие опции, например, --basedir или --datadir, если mysqld не идентифицирует правильные местоположения для каталога установки или каталога данных. Например (вводите команду в одну строку):

shell> bin/mysqld --initialize --user=mysql
                     --basedir=/opt/mysql/mysql
                     --datadir=/opt/mysql/mysql/data

Альтернативно, поместите соответствующие настройки опции в файл опции и передайте название этого файла к mysqld. Для Unix-систем предположите, что имя файла опции /opt/mysql/mysql/etc/my.cnf. Поместите эти строки в файл:

[mysqld]
basedir=/opt/mysql/mysql
datadir=/opt/mysql/mysql/data

Вызовите mysqld следующим образом (введите команду в одну строку с опцией --defaults-file сначала):

shell> bin/mysqld --defaults-file=/opt/mysql/mysql/etc/my.cnf
                     --initialize --user=mysql

В Windows предположите, что C:\my.ini содержит эти строки:

[mysqld]
basedir=C:\\Program Files\\MySQL\\MySQL Server 8.0
datadir=D:\\MySQLdata

Вызовите mysqld следующим образом (введите команду в одну строку с опцией --defaults-file в начале):

C:\> bin/mysqld --defaults-file=C:\my.ini --initialize

Когда вызвано с опциями --initialize или --initialize-insecure, mysqld выполняет следующую последовательность инициализации.

Сервер пишет любые сообщения своему стандартному ошибочному выводу. Это может быть перенаправлено к журналу ошибок, ищите там, если Вы не видите сообщения на своем экране. Для информации о журнале ошибок, включая то, где это расположено, см. раздел 6.4.2.

В Windows используйте опцию --console, чтобы перенаправить сообщения на консоль.

  1. Сервер проверяет существование каталога данных:

    • Если каталог данных не существует, сервер создает его.

    • Если каталог данных существует, но не пуст (то есть, он содержит файлы или подкаталоги), сервера завершается после сообщения об ошибке:
      [ERROR] --initialize specified but the data directory exists. Aborting.
      

      В этом случае удалите или переименуйте каталог данных и попробуйте еще раз.

      Существующему каталогу данных разрешают быть непустым, если у каждой записи в нем есть имя, которое начинается с точки (.).

  2. В пределах каталога данных сервер создает системную базу данных mysql и ее таблицы, включая таблицы привилегий, серверные таблицы справки и таблицы часового пояса. Для полного списка и описания таблиц см. раздел 7.2.

  3. Сервер инициализирует системное пространство таблиц и связанные структуры данных для управления таблицами InnoDB.

    После того, как mysqld настраивает системное пространство таблиц InnoDB, изменения некоторых характеристик табличного пространства требуют установки совершенно нового экземпляра. Это включает имя первого файла в системном табличном пространстве и число журналов отмены. Если Вы не хотите использовать значения по умолчанию, удостоверьтесь что настройки для параметров конфигурации innodb_data_file_path и innodb_log_file_size находятся в конфигурационном файле MySQL прежде, чем выполнить mysqld. Также удостоверьтесь, что определили по мере необходимости другие параметры, которые затрагивают создание и местоположение файлов InnoDB такие, как innodb_data_home_dir и innodb_log_group_home_dir.

    Если те опции находятся в Вашем конфигурационном файле, но тот файл не находится в местоположении, которое MySQL читает по умолчанию, определите местоположение файла, используя опцию --defaults-extra-file при запуске mysqld.

  4. Сервер создает учетную запись пользователя 'root'@'localhost' . Действие сервера относительно пароля для этой учетной записи зависит от того, как Вы вызываете это:

    • С --initialize , но без --initialize-insecure сервер производит случайный пароль, отмечает его как выдохшийся и пишет сообщение, выводящее на экран пароль:

      [Warning] A temporary password is generated for root@localhost:
      iTag*AfrH5ej
      
    • С --initialize-insecure, (с или без --initialize, так как --initialize-insecure подразумевает --initialize), сервер не производит пароль и пишет предупреждающее сообщение:
      [Warning] root@localhost is created with an empty password!
                Please consider switching off the --initialize-insecure option.
      
  5. Сервер заполняет серверные таблицы справки, если контент доступен (в файле fill_help_tables.sql). Сервер не заполняет таблицы часового пояса, чтобы сделать это, см. раздел 11.6.

  6. Если опция --init-file была дана, чтобы назвать файл SQL, сервер выполняет запросы в файле. Эта опция позволяет Вам выполнить пользовательские последовательности начальной загрузки.

    Когда сервер работает в режиме начальной загрузки, некоторая функциональность недоступна, что ограничивает запросы, разрешенные в файле. Они включают запросы, которые касаются ведения учетных записей (например, CREATE USER или GRANT), репликацию и глобальные операционные идентификаторы.

  7. На этом все.

После того, как Вы инициализируете каталог данных, запуская сервер с --initialize или --initialize-insecure, запускайте сервер обычно (то есть, без любой из этих опций) и назначайте новый парполь для 'root'@'localhost':

  1. Запустите сервер. Инструкции раздел 2.9.2.

  2. Соединитесь с сервером:

    • Если Вы использовали --initialize, но не --initialize-insecure, чтобы инициализировать каталог данных, соединитесь с сервером как root с использованием случайного пароля, который сервер произвел во время последовательности инициализации:

      shell> mysql -u root -p
      Enter password: (enter the random root password here)
      

      Смотрите в журнале ошибок сервера, если Вы не знаете этот пароль.

    • Если Вы использовали --initialize-insecure, чтобы инициализировать каталог данных, соединитесь с сервером как root без пароля:
      shell> mysql -u root --skip-password
      
  3. После соединения, назначьте новый пароль root:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

Последовательность инициализации каталога данных, выполненная сервером, не заменяет действия, выполненные mysql_secure_installation или mysql_ssl_rsa_setup . См. разделы 5.4.2 и 5.4.3.

2.9.2. Запуск сервера

Этот раздел описывает, как запускают сервер на Unix-системах. Для Windows см. раздел 2.3.5.5. Для некоторых предложенных команд, которые Вы можете использовать для теста, является ли сервер доступным и рабочим должным образом см. раздел 2.9.3.

Запустите сервер MySQL, если Ваша установка включает mysqld_safe :

shell> bin/mysqld_safe --user=mysql &

Для систем Linux, на которых MySQL установлен, используя пакеты RPM, запуск сервера и завершение работы управляется, используя systemd, а не mysqld_safe , соответственно, mysqld_safe не установлен.

Запустите сервер, если Ваша установка включает поддержку systemd:

shell> systemctl start mysqld

Замените соответствующим именем службы, если оно отличается от mysqld, например, mysql на SLES-системах.

Важно, чтобы сервер MySQL был выполнен, используя непривилегированную учетную запись (не root). Чтобы гарантировать это, выполните mysqld_safe как root и включите опцию --user. Иначе, Вы должны выполнить программу в то время как зарегистрированы, как mysql, тогда Вы можете опустить опцию --user. Для дальнейших инструкций о том, как выполнить MySQL как непривилегированный пользователь см. раздел 7.1.5 .

Если команда немедленно терпит неудачу и печатает mysqld ended , ищите информацию в журнале ошибок (который по умолчанию является файлом host_name.err в каталоге данных).

Если сервер неспособен получить доступ к каталогу данных или считать таблицы привилегий, он пишет сообщение в свой журнал ошибок. Такие проблемы могут произойти, если Вы забыли составить таблицы привилегий, инициализируя каталог данных прежде, чем перейти к этому шагу, или если Вы выполняли команду, которая инициализирует каталог данных без опции --user. Удалите каталог data и выполните команду уже с опцией --user.

Если у Вас есть другие проблемы, запуская сервер, см. раздел 2.9.2.1. Для получения дополнительной информации о mysqld_safe , см. раздел 5.3.2. Для получения дополнительной информации о поддержке systemd см. раздел 2.5.9.

2.9.2.1. Поиск неисправностей и проблем при запуске сервера MySQL

Этот раздел обеспечивает предложения по поиску неисправностей для проблем запуска сервера. Для дополнительных предложений для систем Windows см. раздел 2.3.6.

Если у Вас есть проблемы с запуском сервера, вот некоторые вещи, которые стоит попробовать:

  • Проверьте журнал ошибок, чтобы видеть, почему сервер не запускается. Файлы системного журнала расположены в каталоге данных (обычно это C:\Program Files\MySQL\MySQL Server 8.0\data в Windows, /usr/local/mysql/data в двоичных дистрибутивах Unix/Linux и /usr/local/var в дистрибутивах Unix/Linux из исходных текстов). Смотрите в каталоге данных файлы с названиями формы host_name.err и host_name.log, где host_name название Вашего узла сервера. Исследуйте последние несколько строк этих файлов. Полезно использовать tail, чтобы вывести их на экран:

    shell> tail host_name.err
    shell> tail host_name.log
    
  • Определите любые специальные опции, необходимые механизмам хранения, которые Вы используете. Вы можете создать файл my.cnf и определить опции запуска для механизмов, которые Вы планируете использовать. Если Вы собираетесь использовать механизмы хранения, которые поддерживают транзакционные таблицы (InnoDB, NDB), убедитесь, что у Вас есть способ сконфигурировать их прежде, чем запустить сервер. Если Вы используете InnoDB, см. подробности в разделах 16.6 и 16.13.

    Хотя механизмы хранения используют значения по умолчанию для опций, которые Вы опускаете, Oracle рекомендует, чтобы Вы рассмотрели доступные параметры и определили явные значения для любых опций, значения по умолчанию которых не являются подходящими для Вашей установки.

  • Удостоверьтесь, что сервер знает, где найти каталог данных. mysqld использует этот каталог в качестве своего текущего каталога. Тут он ожидает найти базы данных и писать файлы системного журнала. Сервер также пишет файл pid (process ID) в этом каталоге.

    Местоположение каталога данных по умолчанию вносится в исполняемый модуль на шаге компиляции. Чтобы определить, каковы настройки пути по умолчанию, вызовите mysqld с опциями --verbose и --help . Если каталог данных расположен где-то в другом месте на Вашей системе, определите то местоположение с помощью опции --datadir для mysqld или mysqld_safe , в командной строке или в файле опции. Иначе сервер не будет работать должным образом. Как альтернатива Вы можете определить mysqld местоположение основного каталога, в соответствии с которым MySQL установлен с помощью опции --basedir , mysqld ищет каталог data там.

    Чтобы проверить эффект определения опций пути, вызовите mysqld с теми опциями, сопровождаемыми --verbose и --help. Например, если Вы изменяете местоположение в каталог, где установлен mysqld и затем выполняете следующую команду, это показывает эффект запуска сервера с основным каталогом /usr/local:

    shell> ./mysqld --basedir=/usr/local --verbose --help
    

    Вы можете определить другие опции, например, --datadir, но --verbose и --help должны быть последними.

    Как только Вы определите настройки пути, запустите сервер без --verbose и --help.

    Если mysqld в настоящее время работает, Вы можете узнать, какие настройки пути он использует, выполняя эту команду:

    shell> mysqladmin variables
    

    Или:

    shell> mysqladmin -h host_name variables
    

    host_name название узла сервера MySQL.

  • Удостоверьтесь, что сервер может получить доступ к каталогу данных. Владелец и разрешения каталога данных и его содержания должны позволить серверу читать и изменять данные.

    Если Вы получаете Errcode 13 (Permission denied) при запуске mysqld , это означает, что привилегии каталога данных или его содержания не разрешают доступ серверу. В этом случае измените разрешения для вовлеченных файлов и каталогов так, чтобы сервер имел право использовать их. Вы можете также запустить сервер как root, но это поднимает вопросы безопасности.

    Если каталог данных или его файлы или подкаталоги не принадлежат учетной записи, которую Вы используете для того, чтобы выполнить сервер, измените их владельца на ту учетную запись. Если учетную запись называют mysql, используйте эти команды:

    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql/var
    

    Даже с правильной принадлежностью, MySQL может быть не в состоянии запуститься, если есть другое защитное программное обеспечение, работающее на Вашей системе, которая управляет доступом приложения к различным частям файловой системы. В этом случае реконфигурируйте то программное обеспечение, чтобы позволить mysqld получить доступ к каталогам, которые это использует во время нормального функционирования.

  • Проверьте, что сетевые интерфейсы, которые сервер хочет использовать, доступны.

    Если любая из следующих ошибок происходит, это означает, что некоторая другая программа (возможно, другой сервер mysqld) использует порт TCP/IP или файл сокета Unix, который нужен mysqld:

    Can't start server: Bind on TCP/IP port: Address already in use
    Can't start server: Bind on unix socket...
    

    Примените ps, чтобы определить, есть ли у Вас другой запущенный mysqld . Если так, закройте сервер прежде, чем запустить mysqld снова. Если другой сервер работает, и Вы действительно хотите выполнить много серверов, Вы можете найти информацию о том, как это сделать в разделе 6.7.

    Если никакой другой сервер не работает, выполните команду telnet your_host_name tcp_ip_port_number. Значение по умолчанию для порта MySQL 3306. Нажмите несколько раз Enter. Если Вы не получаете сообщение об ошибке, подобное telnet: Unable to connect to remote host: Connection refused, некоторая другая программа использует порт TCP/IP, который нужен mysqld. Разыщите, какая это программа, и отключите ее, или скажите mysqld слушать другой порт опцией --port. В этом случае определите тот же самый номер порта для программ клиента, соединяясь с сервером, используя TCP/IP.

    Другая причина, по которой порт может быть недоступным, состоит в том, что у Вас есть брандмауэр, который блокирует соединения с ним. Если так, измените настройки брандмауэра, чтобы разрешить доступ к порту.

    Если сервер запускается, но Вы не можете соединиться с ним, удостоверьтесь, что у Вас есть запись в /etc/hosts, похожая на это:

    127.0.0.1 localhost
    
  • Если Вы не можете заставить mysqld стартовать, попытайтесь сделать файл трассировки, чтобы найти проблему при использовании опции --debug. См. раздел 26.5.3.

2.9.3. Тестирование сервера

После того, как каталог данных инициализирован, и Вы запустили сервер, выполните некоторые простые тесты, чтобы удостовериться, что это работает удовлетворительно. Этот раздел предполагает, что Ваше текущее местоположение каталог установки MySQL, и что у него есть подкаталог bin, содержащий программы MySQL, используемые здесь. Если это не так, скорректируйте пути команды соответственно.

Альтернативно, добавьте каталог bin к переменной окружения PATH. Это позволяет Вашей оболочке найти программы MySQL должным образом, так, чтобы Вы могли выполнить программу, вводя только ее имя, а не ее путь. См. раздел 5.2.10.

Используйте mysqladmin , чтобы проверить, что сервер работает. Следующие команды обеспечивают простые тесты, чтобы все проверить:

shell> bin/mysqladmin version
shell> bin/mysqladmin variables

Если Вы не можете соединиться с сервером, определите опцию -u root, чтобы соединиться как root. Если Вы назначили пароль для root, Вы должны будете также определить -p в командной строке и ввести пароль когда запрошено. Например:

shell> bin/mysqladmin -u root -p version
Enter password: (enter root password here)

Вывод от mysqladmin version изменяется немного в зависимости от Вашей платформы и версии MySQL, но должен быть подобным показанному здесь:

shell> bin/mysqladmin version
mysqladmin Ver 14.12 Distrib 8.0.1, for pc-linux-gnu on i686
...
Server version 8.0.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 14 days 5 hours 5 min 21 sec

Threads: 1 Questions:    366 Slow queries: 0
Opens:   0 Flush tables:   1 Open tables: 19
Queries per second avg: 0.000

Чтобы видеть, что еще Вы можете сделать с mysqladmin , вызовите его с опцией --help.

Проверьте, что Вы можете закрыть сервер (добавьте опцию -p, если пароль для root установлен):

shell> bin/mysqladmin -u root shutdown

Проверьте, что Вы можете запустить сервер снова. Сделайте это при использовании mysqld_safe или вызывая напрямую mysqld. Например:

shell> bin/mysqld_safe --user=mysql &

Если mysqld_safe падает, см. раздел 2.9.2.1.

Выполните некоторые простые тесты, чтобы проверить, что Вы можете получить информацию от сервера. Вывод должен быть подобным показанному здесь.

Используйте mysqlshow , чтобы видеть, какие базы данных существуют:

shell> bin/mysqlshow
+--------------------+
| Databases          |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

Список установленных баз данных может измениться, но будет всегда включать минимум mysql и information_schema.

Если Вы определяете имя базы данных, mysqlshow выводит на экран список таблиц в пределах базы данных:

shell> bin/mysqlshow mysql
Database: mysql
+---------------------------+
| Tables                    |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

Используйте mysql , чтобы выбрать информацию из таблицы в базе данных mysql:

shell> bin/mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+------+-----------+-----------------------+
| User | Host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+

В этом пункте работает Ваш сервер, и Вы можете получить доступ к этому. Чтобы улучшить безопасность, если Вы еще не назначили пароль на начальную учетную запись, следуйте инструкциям в разделе 2.9.4.

Для получения дополнительной информации о mysql, mysqladmin и mysqlshow , см. разделы 5.5.1, 5.5.2 и 5.5.7.

2.9.4. Обеспечение безопасности MySQL

Процесс установки MySQL вовлекает инициализацию каталога данных, включая базу данных mysql, содержащую таблицы привилегий, которые определяют учетные записи MySQL. Для деталей см. раздел 2.9.

Этот раздел описывает, как назначить пароль на начального пользователя root, созданного во время процесса установки MySQL, если Вы еще не сделали этого.

В Windows Вы можете также выполнить процесс, описанный в этом разделе во время установки с MySQL Installer (см. раздел 2.3.3). На всех платформах дистрибутив MySQL включает mysql_secure_installation, утилиту командной строки, которая автоматизирует большую часть процесса обеспечения установки MySQL. Инструментальные средства MySQL доступны на всех платформах, и также предлагают способность управлять учетными записями пользователя (см. главу 28).

Пароль может уже быть назначен на начальную учетную запись при этих обстоятельствах:

  • В Windows установки, выполненные, используя MySQL Installer, дают Вам опцию назначения пароля.

  • Установка, используя OS X installer, производит начальный случайный пароль, который установщик выводит на экран пользователю в диалоговом окне.
  • Установка, используя пакеты RPM, производит начальный случайный пароль, который написан в журнал ошибок сервера.
  • Для инициализации каталога данных, выполненной вручную, используя mysqld --initialize , mysqld производит начальный случайный пароль, маркирует как истекший и пишет это в журнал ошибок сервера. Для деталей см. раздел 2.9.1.1 .

Таблица mysql.user определяет начальную учетную запись пользователя MySQL и ее привилегии доступа. Установка MySQL создает только учетную запись пользователя 'root'@'localhost', которая имеет все привилегии и может сделать что-либо. Если у учетной записи root есть пустой пароль, Ваша установка MySQL не защищена: любой может соединиться с сервером MySQL как root без пароля .

'root'@'localhost' также есть в таблице mysql.proxies_priv, которая позволяет предоставить привилегию PROXY для ''@'', то есть, для всех пользователей и всех узлов. Это позволяет root возможность настраивать прокси-пользователей, так же как делегировать к другим учетным записям полномочия настроить пользователей. См. раздел 7.3.10.

Чтобы назначить пароль для MySQL root, используйте следующую процедуру. Замените new_password в примерах паролем, который Вы хотите использовать.

Запустите сервер, если он не работает. Для инструкций см. раздел 2.9.2.

Начальная учетная запись root, возможно, не имеет пароля. Выберите, какая из следующих процедур применяется:

  • Если root существует с начальным случайным паролем, который истек, соединитесь с сервером как root, используя этот пароль, затем выберите новый пароль. Дело обстоит так, если каталог данных был инициализирован, используя mysqld --initialize вручную или через использование установщика, который не дает Вам опцию определения пароля во время работы установки. Поскольку пароль существует, Вы должны использовать его, чтобы соединиться с сервером. Но потому что пароль истек, Вы не можете использовать доступ ни для чего, кроме как выбрать новый пароль.

    1. Если Вы не знаете начального случайного пароля, смотрите в журнале ошибок сервера.

    2. Соединитесь с сервером как root с использованием пароля:
      shell> mysql -u root -p
      Enter password: (enter the random root password here)
      
    3. Выберите новый пароль, чтобы заменить случайный пароль:
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
      
  • Если учетная запись root существует, но не имеет никакого пароля, соединитесь с сервером как root не используя пароля, затем назначьте пароль. Дело обстоит так, если Вы инициализировали каталог данных, используя mysqld --initialize-insecure.

    1. Соединитесь с сервером как root без использования пароля:

      shell> mysql -u root --skip-password
      
    2. Теперь назначьте пароль:
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
      

После назначения пароля root, Вы должны предоставлять этот пароль всякий раз, когда Вы соединяетесь с сервером, используя учетную запись. Например, чтобы соединиться с сервером, используя клиент mysql, используйте эту команду:

shell> mysql -u root -p
Enter password: (enter root password here)

Чтобы закрыть сервер через mysqladmin, используйте эту команду:

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)

Для дополнительной информации об установке паролей, см. раздел 7.3.6. Если Вы забываете Ваш пароль для root после его установки, см. раздел B.5.3.2.

Чтобы настроить дополнительные учетные записи, см. раздел 7.3.2.

2.9.5. Запуск и остановка MySQL автоматически

Этот раздел обсуждает методы для запуска и остановки сервера MySQL.

Вообще, Вы запускаете mysqld одним из этих способов:

  • Вызовите mysqld . Это работает на любой платформе.

  • В Windows Вы можете настроить службу MySQL, которая работает автоматически, когда Windows запускается. См. раздел 2.3.5.8.
  • В Unix-системах Вы можете вызвать mysqld_safe , который пытается определить надлежащие опции для mysqld и затем выполняет его с теми опциями. См. раздел 5.3.2.
  • В Linux с поддержкой systemd Вы можете использовать его, чтобы управлять сервером. См. раздел 2.5.9.
  • На системах, которые используют System V-каталоги (то есть, /etc/init.d и определенные каталоги на уровне выполнения), вызовите mysql.server. Этот скрипт используется прежде всего при системном запуске и завершении работы. Это обычно устанавливается под именем mysql. Скрипт mysql.server запускает сервер, вызывая mysqld_safe . См. раздел 5.3.3.
  • В OS X установите демон launchd, чтобы включить автоматический запуск MySQL при системном запуске. Демон запускает сервер, вызывая mysqld_safe . Для деталей см. раздел 2.4.3. MySQL Preference Pane также обеспечивает управление для запуска и остановки MySQL через System Preferences. См. раздел 2.4.4.
  • В Solaris/OpenSolaris используйте управленческую структуру (SMF) системы, чтобы управлять запуском MySQL. Для получения дополнительной информации см. раздел 2.6.2.

systemd, скрипты mysqld_safe и mysql.server , Solaris/OpenSolaris SMF и OS X Startup Item (или MySQL Preference Pane) могут использоваться, чтобы запустить сервер вручную или автоматически во время запуска ОС. systemd, скрипт mysql.server и Startup Item также могут использоваться, чтобы остановить сервер.

Следующяя таблица показывает, какие группы опций сервер и стартовые скрипты читают из файлов опций.

Таблица 2.12. Стартовые скрипты MySQL и поддерживаемые сервером группы опций

СкриптГруппа опций
mysqld[mysqld], [server], [mysqld-major_version]
mysqld_safe[mysqld], [server], [mysqld_safe]
mysql.server[mysqld], [mysql.server], [server]

[mysqld-major_version] указывает, что группы с именами вида [mysqld-5.7] и [mysqld-8.0] считаны серверами, имеющими версии 5.7.x, 8.0.x и т.д. Эта функция может быть использована, чтобы определить опции, которые могут быть предназначены только для чтения серверами в пределах данного ряда выпуска.

Для обратной совместимости mysql.server также читает группу [mysql_server], а mysqld_safe также читает группу [safe_mysqld]. Чтобы быть актуальным, Вы должны обновить свои файлы опции, чтобы не использовать группы [mysql.server] и [mysqld_safe].

Для получения дополнительной информации о конфигурационных файлах MySQL, их структуре и содержании см. раздел 5.2.6.

2.10. Обновления или откат MySQL

Этот раздел описывает шаги, чтобы обновить или понизить версию MySQL.

Обновление общая процедура, поскольку Вы поднимаете исправления ошибок в пределах того же самого ряда выпуска MySQL или применяете существенные изменения между выпусками. Вы выполняете эту процедуру сначала на некоторых испытательных системах, чтобы удостовериться, что все работает гладко, и затем на производственных системах.

Понижение менее распространено. Как правило, Вы отменяете обновление из-за некоторой совместимости или исполнительной проблемы, которая происходит на производственной системе, но не была раскрыта во время начальной проверки обновления на испытательных системах. Как с процедурой обновления, выполните и проверьте процедуру понижения на некоторых испытательных системах сначала, перед использованием этого на производственной системе.

2.10.1. Обновление MySQL

MySQL Server 8.0 включает глобальный словарь данных, содержащий информацию об объектах базы данных в транзакционных таблицах. В предыдущей серии MySQL данные о словаре хранились в метафайлах с данными и нетранзакционных системных таблицах. Этот раздел описывает, как обновить Ваш каталог данных от основанной на файлах структуры до структуры словаря данных.

Процесс, описанный здесь, требует, чтобы Вы обновились до MySQL 8.0 от MySQL 5.7 версий GA (5.7.9 или выше). Обновления от версий не-GA MySQL 5.7 или от ряда MySQL, предшествующего 5.7, не поддержаны.

После того, как Вы обновляете сервер, это влечет за собой некоторые общие операционные различия, см. раздел 15.6.

В следующем обсуждении команды MySQL, которые должны быть выполнены, используя учетную запись MySQL с административными привилегиями, включают -u root в командной строке, чтобы определить пользователя MySQL root. Команды, которые требуют пароля для root, также включают опцию -p. Поскольку -p не сопровождается никаким значением опции, это запрос для пароля. Введите пароль когда запрошено.

Запросы SQL могут быть выполнены, используя клиент mysql (соединитесь как root, чтобы гарантировать, что у Вас есть необходимые привилегии).

Поддержанные методы обновления

Поддержанные методы обновления включают:

  • Оперативное обновление: Вовлекает закрытие старой версии MySQL, замену старых двоичных файлов MySQL или пакетов на новые, перезапуск MySQL на существующем каталоге данных и выполнение mysql_upgrade .

  • Логическое обновление: Вовлекает экспорт существующих данных из старой версии MySQL, используя mysqldump, устанавливая новую версию MySQL, загружая файл дампа в новую версию MySQL и выполняя mysql_upgrade .

Если Вы выполняете сервер MySQL в Windows, используйте процедуру обновления, описанную в разделе 2.3.8 .

Если Ваша текущая установка MySQL была установлена на Enterprise Linux platform или Fedora, используя MySQL Yum Repository, см. раздел 2.10.1.2.

Если Ваша текущая установка MySQL была установлена на Ubuntu, используя MySQL APT repository, см. раздел 2.10.1.3.

Поддержанные пути обновления

Если иное не сказано, следующие пути обновления поддержаны:

  • Обновление от серийной версии выпуска GA до более новой серийной версии выпуска поддержано. Пропуск серийных версий выпуска также поддержан. В настоящее время нет никаких выпусков состояния GA для MySQL 8.0.

  • Обновление одного уровня выпуска поддержано. Например, обновление от 5.7 до 8.0 поддержано. Обновление до последней серийной версии выпуска рекомендуется прежде, чем обновить до следующего уровня выпуска. Например, обновите до последних 5.7 выпусков прежде, чем обновить до 8.0.

    Для MySQL 8.0 требуется, чтобы Вы обновлли от MySQL 5.7 версий GA (5.7.9 или выше). Обновления от версий non-GA MySQL 5.7 не поддержаны.

  • Обновление больше, чем одного уровня выпуска поддержано, но только если Вы обновляете один уровень выпуска за один раз. Например, если Вы в настоящее время выполняете MySQL 5.6 и хотите обновить до более нового ряда, обновите до MySQL 5.7 сначала прежде, чем обновить до MySQL 8.0 и т.д. Для информации об обновлении до MySQL 5.7 см. MySQL 5.7 Reference Manual .

  • Прямые обновления, которые пропускают уровень выпуска (например, обновляя непосредственно от MySQL 5.6 к 8.0) не рекомендуются или поддерживаются.

Следующие условия относятся ко всем путям обновления:

  • Обновления между релизами General Availability (GA) поддержаны.

  • Обновления между выпусками milestone (или от выпуска milestone до выпуска GA) не поддержаны. Например, обновление от 8.0.0 до 8.0.1 не поддержано, поскольку ни один не является выпуском состояния GA.
  • Поскольку обновления между версиями MySQL выпускают ряд, который достиг состояния GA, Вы можете переместить файлы с данными MySQL между различными версиями на системах с той же самой архитектурой. Это не обязательно истинно для обновлений между выпусками milestone. Использование выпусков milestone на ваш собственный риск.

Прежде, чем Вы начнете

Перед обновлением изучите следующую информацию и выполните рекомендуемые шаги:

  • Перед обновлением, защитите свои данные, создавая резервную копию Ваших текущих баз данных и файлов системного журнала. Резервное копирование должно включать системную базу данных mysql, которая содержит таблицы словаря данных MySQL и системные таблицы. См. раздел 8.2.

  • Изучите Release Notes, которая предоставляет информацию об особенностях, которые новые в MySQL 8.0 или отличаются от таковых в более ранних выпусках MySQL. Некоторые из этих изменений могут привести к несовместимостям.

    Для списков переменных сервера MySQL и опций, которые были добавлены, устарели или удалены в MySQL 8.0, см. раздел 1.5. Если Вы используете какой-либо из этих элементов, обновление требует изменений конфигурации.

  • Изучите раздел 2.10.1.1. Этот раздел описывает изменения, которые могут потребовать действия прежде или после обновления.
  • Проверьте раздел 2.10.3, чтобы видеть, были ли изменения форматов таблиц или наборов символов или сопоставлений произведены между Вашей текущей версией MySQL и версией, до которой Вы обновляетесь. Если такие изменения привели к несовместимости между версиями MySQL, Вы должны будете обновить затронутые таблицы, используя инструкции в разделе 2.10.4.
  • Если Вы используете репликацию, изучите раздел 19.4.3.
  • Если Вы используете транзакции XA с InnoDB, выполните XA RECOVER прежде, чем обновить, чтобы проверить на нейтральные транзакции XA. Если результаты есть, закройте или отмените транзакции через XA COMMIT или XA ROLLBACK.
  • Если Ваша установка MySQL содержит большой объем данных, который мог бы занять много времени, чтобы преобразовать после оперативного обновления, Вы могли бы счесть полезным создать тестовую базу данных для того, чтобы оценить, какие преобразования могли бы быть необходимы, и работа вовлечена, чтобы выполнить их. Сделайте копию своего экземпляра MySQL, который содержит полную копию базы данных mysql, плюс все другие базы данных без данных. Выполните свою процедуру обновления на этом фиктивном случае, чтобы видеть, какие действия могли бы быть необходимы так, чтобы Вы могли лучше оценить работу, вовлеченную, выполняя фактическое преобразование данных на Вашем оригинальном случае базы данных.
  • Восстановление и переустановка языковых интерфейсов MySQL рекомендуются всякий раз, когда Вы устанавливаете или обновляете до нового выпуска MySQL. Это относится к интерфейсам MySQL, таким как расширения PHP mysql, модуль Perl DBD::mysql и Python MySQLdb.

Подтверждение предпосылок обновления для Вашего MySQL 5.7

Прежде, чем запустить MySQL 8.0, чтобы обновить каталог данных, очень важно гарантировать готовность обновления Вашей установки при использовании Вашего MySQL 5.7, чтобы выполнить несколько предварительных проверок. Процесс обновления иначе может потерпеть неудачу.

Выполните предварительные проверки:

  1. Не должно быть никаких таблиц, которые используют устаревшие типы данных, таблиц InnoDB, которые используют неродное разделение, или триггеров, у которых отсутствует или пустое определение или недопустимый контекст создания. Этот контекст обозначен атрибутами character_set_client, collation_connection , Database Collation, выведенными на экран SHOW TRIGGERS или в таблице INFORMATION_SCHEMA TRIGGERS. Чтобы идентифицировать таблицы и триггеры, которые подходят под эти требования, выполните эту команду:

    mysqlcheck -u root -p --all-databases --check-upgrade
    

    Если mysqlcheck сообщает о каких-либо ошибках, исправьте проблемы.

  2. Не должно быть никаких разделенных таблиц, которые используют механизм хранения, у которого нет родной поддержки разделения. Чтобы идентифицировать такие таблицы, выполните этот запрос:
    SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
           WHERE ENGINE NOT IN ('innodb', 'ndbcluster') AND
           CREATE_OPTIONS LIKE '%partitioned%';
    

    Любая таблица, о которой сообщает запрос, должна быть изменена, чтобы использовать InnoDB или сделана неразделенной. Изменить табличный механизм хранения на InnoDB можно так:

    ALTER TABLE table_name ENGINE = INNODB;
    

    Для информации о преобразовании таблиц MyISAM в InnoDB см. раздел 16.8.4.

    Чтобы сделать разделенную таблицу неразделенной, выполните этот запрос:

    ALTER TABLE table_name REMOVE PARTITIONING;
    
  3. Не должно быть никаких таблиц в системной базе данных MySQL 5.7 mysql, у которых есть то же самое имя как у таблицы, используемой словарем данных MySQL 8.0. Чтобы идентифицировать таблицы с теми именами, выполните этот запрос:
    SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
           WHERE LOWER(TABLE_SCHEMA) = 'mysql' and LOWER(TABLE_NAME) IN
           ('catalogs', 'character_sets', 'collations', 'column_type_elements',
            'columns', 'events', 'foreign_key_column_usage', 'foreign_keys',
            'index_column_usage', 'index_partitions', 'index_stats', 'indexes',
            'parameter_type_elements', 'parameters', 'routines', 'schemata',
            'st_spatial_reference_systems', 'table_partition_values',
            'table_partitions', 'table_stats', 'tables', 'tablespace_files',
            'tablespaces', 'triggers', 'version', 'view_routine_usage',
            'view_table_usage');
    

    Любые таблицы, о которых сообщает запрос, должны быть переименованы (используя RENAME TABLE). Это может также повлечь за собой изменения приложений, которые используют затронутые таблицы.

  4. Не должно быть никаких таблиц, у которых есть имена с ограничением внешнего ключа больше, чем 64 символа. Чтобы идентифицировать таблицы со слишком длинными именами ограничения, выполните этот запрос:
    SELECT CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAME
           FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
           WHERE LENGTH(CONSTRAINT_NAME) > 64;
    

    Любые таблицы, о которых сообщает запрос, должны быть изменены, чтобы не иметь имена ограничения больше, чем 64 символа (используя ALTER TABLE).

  5. Ваш MySQL 5.7 не должен использовать функции, которые не поддержаны MySQL 8.0. Любые изменения здесь обязательно привязаны к определенной установке, но следующие примеры иллюстрируют вид вещей, которые надо искать:

    • Таблицы, которые используют механизм хранения, не поддержанный в MySQL 8.0, должны быть изменены, чтобы использовать поддержанный механизм.

      Пример: MySQL 8.0 еще не поддерживает MySQL Cluster, таким образом, таблицы NDB должны быть изменены, чтобы использовать иной механизм хранения.

    • Некоторые опции запуска сервера и системные переменные были удалены в MySQL 8.0. См. раздел 1.5 . Если Вы используете какой-либо из этих элементов, обновление требует изменений конфигурации.

      Пример: Поскольку словарь данных предоставляет информацию об объектах базы данных, сервер больше не проверяет имена каталогов в каталоге данных, чтобы найти базы данных. Следовательно, опция --ignore-db-dir является устаревшей и была удалена. Чтобы обработать это, удалите любые случаи применения --ignore-db-dir из Вашей конфигурации запуска. Кроме того, удалите или переместите названные подкаталоги каталога данных прежде, чем обновить до MySQL 8.0. Альтернативно, позвольте серверам 8.0 добавлять те каталоги к словарю данных как базы данных, затем удалите каждую из тех баз данных с использованием DROP DATABASE.

Выполнение оперативного обновления

Этот раздел описывает, как выполнить оперативное обновление. Перед переходом иззучите раздел "Прежде, чем Вы начнете" и гарантируете, что Ваша установка готова к обновлению.

Если Вы обновляете установку, первоначально произведенную, устанавливая много пакетов RPM, обновляйте все пакеты, не только некоторые. Например, если Вы ранее устанавливали сервер и клиент, не обновляйте только RPM сервера.

Для систем Linux, на которых MySQL установлен, используя пакеты RPM, запуск сервера и завершение работы, управляется systemd, и mysqld_safe не установлен. Если Вы устанавливали MySQL на системе Linux, используя пакеты RPM, используйте systemd для запуска сервера и завершения работы вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9.

Выполните оперативное обновление:

  1. Рассмотрите изменения, описанные в разделе 2.10.1.1.

  2. С Вашим MySQL 5.7 сервером, если там зашифрованы табличные пространства InnoDB выполните ротацию главного ключа, выполняя этот запрос:
    ALTER INSTANCE ROTATE INNODB MASTER KEY;
    
  3. Сконфигурируйте свой MySQL 5.7 сервер, чтобы выполнить медленное завершение работы, выполняя это:
    SET GLOBAL innodb_fast_shutdown = 0;
    

    С медленным завершением работы InnoDB выполняет полную чистку и буферное слияние изменений перед закрытием, которое гарантирует, что журналы отмены пусты, и файлы с данными полностью подготовлены в случае различий в формате файла между выпусками.

  4. Закройте старый сервер MySQL. Например:
    mysqladmin -u root -p shutdown
    
  5. Обновите пакеты (замените старые новыми для MySQL 8.0).

    Для поддержанных дистрибутивов Linux лучший метод для того, чтобы заменить пакеты MySQL, это использовать репозитарии программного обеспечения MySQL, см. раздел 2.10.1.2, раздел 2.10.1.3 или Upgrading MySQL with the MySQL SLES Repository.

  6. Запустите MySQL 8.0, используя существующий каталог данных. Например:

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

    Если там зашифрованы табличные пространства InnoDB, используйте опцию --early-plugin-load, чтобы загрузить плагин.

    Сервер автоматически обнаруживает, присутствуют ли таблицы словаря данных. В противном случае сервер создает их в каталоге данных, заполняет их метаданными и затем возобновляет его нормальную последовательность запуска. Во время этого процесса сервер обновляет метаданные для всех объектов базы данных, включая базы данных, табличные пространства, систему и пользовательские таблицы, представления и сохраненные программы (хранимые процедуры и функции, триггеры и события планировщика событий). Сервер также удаляет файлы, которые ранее использовались для хранения метаданных. Например, после обновления, Вы заметите, что Ваши таблицы больше не имеют файлов .frm.

    Если этот шаг прошел нормально, сервер выполняет уборку:

    • В каталоге данных сервер создает каталог, названный backup_metadata_57 и перемещает в него файлы с именами db.opt и суффиксами .frm, .par, .TRG, .TRN или .isl. Это файлы, ранее используемые для хранения метаданных.

      Файлы в backup_metadata_57 сохраняют оригинальную иерархию файловой системы. Например, если t1.frm был расположен в подкаталоге my_schema1, сервер перемещает это в каталог backup_metadata_57/my_schema1.

    • В базе данных mysql сервер переименовывает таблицы event и proc в event_backup_57 и proc_backup_57.

    Если этот шаг терпит неудачу, сервер возвращает все изменения каталога данных. В этом случае Вы должны удалить все файлы системного журнала redo, запустить MySQL 5.7 на том же самом каталоге данных и установить причину любых ошибок. Тогда выполните другое медленное завершение работы сервера 5.7 и запустите MySQL 8.0, чтобы попробовать еще раз.

  7. Если MySQL 8.0 запускается успешно, выполните mysql_upgrade :
    mysql_upgrade -u root -p
    

    mysql_upgrade исследует все таблицы во всех базах данных для несовместимостей с текущей версией MySQL. Это делает любые остающиеся изменения, требуемые в системной базе данных mysql между MySQL 5.7 и MySQL 8.0 так, чтобы Вы могли использовать в своих интересах новые привилегии или функции. mysql_upgrade также создает Performance Schema, INFORMATION_SCHEMA и объекты схемы sys, современные для MySQL 8.0.

    mysql_upgrade не должен использоваться, когда сервер работает с --gtid-mode=ON . См. " Режим GTID и mysql_upgrade".

    mysql_upgrade не обновляет содержание таблиц справки. Для инструкций обновления см. раздел 6.1.10.

  8. Закройте и перезапустите сервер MySQL, чтобы гарантировать, что любые изменения, произведенные в системных таблицах, вступают в силу. Например:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

    Когда в первый раз Вы запустили MySQL 8.0 Вы, возможно, заметили, что он написал несколько сообщений в свой журнал ошибок относительно необновленных таблиц. Если mysql_upgrade был выполнен успешно, не должно быть таких сообщений второй раз, когда Вы запускаете сервер.

Выполнение логического обновления

Этот раздел описывает, как выполнить логическое обновление.

Для систем Linux, на которых MySQL установлен, используя пакеты RPM, запуск сервера и завершение работы управляются systemd, и mysqld_safe не установлен. Если Вы устанавливали MySQL на системе Linux, используя пакеты RPM, используйте systemd для запуска сервера и завершения работы вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9.

Выполните логическое обновление:

  1. Изучите изменения, описанные в разделе 2.10.1.1.

  2. На сервере MySQL 5.7 используйте mysqldump, чтобы экспортировать Ваши данные:
    mysqldump -u root -p --add-drop-table --routines --events --all-databases
              --ignore-table=mysql.innodb_table_stats
              --ignore-table=mysql.innodb_index_stats
              --force > data-for-upgrade.sql
    

    Опции --routines и --events должны быть даны явно, чтобы включать сохраненные подпрограммы и события как определения объекта в файле дампа. Иначе, они появятся только как строки в таблицах mysql.proc и mysql.event, которые не будут использоваться в MySQL 8.0, когда файл дампа будет перезагружен (определения для соответствующих объектов, будут сохранены в таблицах словаря данных вместо этого).

    Вы можете опустить опцию --ignore-table , файл дампа перезагрузится позже, если Вы будете включать опцию --force в команду загрузки. Однако, в этом случае, будьте готовы видеть несколько предупреждений, когда те две таблицы загружаются, предупреждения нужно проигнорировать.

  3. Закройте старый сервер MySQL. Например:
    mysqladmin -u root -p shutdown
    
  4. Установите MySQL 8.0. Для инструкций по установке см. главу 2.
  5. Инициализируйте новый каталог данных, как описано в разделе 2.9.1. Например:
    mysqld --initialize --datadir=/path/to/8.0-datadir
    

    Скопируйте временный пароль для 'root'@'localhost', выведенный на Ваш экран или написанный в Ваш журнал ошибок для более позднего использования.

  6. Запустите MySQL 8.0, используя новый каталог данных. Например:
    mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir
    

    Если там зашифрованы табличные пространства InnoDB, используйте опцию --early-plugin-load, чтобы загрузить плагин.

  7. Сбросьте временный root пароль:
    shell> mysql -u root -p
    Enter password: ****<- enter temporary root password
    mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
    
  8. Загрузите ранее созданный файл дампа в новый сервер MySQL. Например:
    mysql -u root -p --force < data-for-upgrade.sql
    

    Если Вы не определяли опцию --ignore-table , чтобы подавить дамп таблиц mysql.event и mysql.proc для команды mysqldump, они вновь появятся, когда Вы перезагрузите файл дампа.

  9. После загрузки файла дампа, выполните mysql_upgrade :
    mysql_upgrade -u root -p
    

    mysql_upgrade исследует все таблицы во всех базах данных для несовместимостей с текущей версией MySQL. Это делает любые остающиеся изменения, требуемые в системной базе данных mysql между MySQL 5.7 и MySQL 8.0 так, чтобы Вы могли использовать новые привилегии или возможности. mysql_upgrade также создает Performance Schema, INFORMATION_SCHEMA и объекты схемы sys, современные для MySQL 8.0.

    mysql_upgrade не должен использоваться, когда сервер работает с --gtid-mode=ON. См. " Режим GTID и mysql_upgrade".

    mysql_upgrade не обновляет содержание таблиц справки. Для инструкций обновления см. раздел 6.1.10.

  10. Закройте и перезапустите сервер MySQL, чтобы гарантировать, что любые изменения, произведенные в системных таблицах, вступают в силу. Например:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir
    

Поиск неисправностей обновления

  • Если проблемы происходят, и mysqld не запускает, проверьте, что у Вас нет старого файла my.cnf от Вашей предыдущей установки. Вы можете проверить это с помощью опции --print-defaults (например, mysqld --print-defaults ). Если эта команда выводит на экран что-нибудь кроме названия программы, у Вас есть активный файл my.cnf, который затрагивает работу клиента или сервера.

  • Если после обновления Вы испытываете такие проблемы, как Commands out of sync с собранными программами клиента или неожиданные дампы памяти, Вы, вероятно, использовали старый заголовок или файлы библиотеки, собирая Ваши программы. В этом случае проверьте дату Вашего файла mysql.h и библиотеки libmysqlclient.a, чтобы проверить, что они от нового дистрибутива MySQL. В противном случае повторно соберите свои программы с новыми заголовками и библиотеками. Перекомпиляция может также быть необходимой для программ, собранных с совместно используемой библиотеки клиента, если старший номер версии библиотеки изменился (например, с libmysqlclient.so.15 на libmysqlclient.so.16).
  • Если Вы создали определяемую пользователем функцию (UDF) с именем и обновляете MySQL до версии, которая осуществляет новую встроенную функцию с тем же самым именем, UDF становится недоступным. Чтобы исправить это, надо использовать DROP FUNCTION, чтобы удалить UDF, а затем CREATE FUNCTION, чтобы обновить UDF с иным непротиворечивым именем. То же самое верно, если новая версия MySQL осуществляет встроенную функцию с тем же самым именем, как существующая сохраненная функция. См. раздел 10.2.4 для правил, описывающих, как сервер интерпретирует ссылки на различные виды функций.

2.10.1.1. Изменения, затрагивающие обновления до MySQL 8.0

Прежде, чем обновить до MySQL 8.0, рассмотрите изменения, описанные в этом разделе, чтобы идентифицировать проблемы обновления, которые относятся к Вашей текущей установке MySQL и приложениям.

В дополнение к изменениям, обрисованным в общих чертах в этом разделе, рассмотрите Release Notes.

Изменения, отмеченные как Known issue или Incompatible change являются несовместимостями с более ранними версиями MySQL, и могут потребовать Вашего внимания прежде, чем Вы обновитесь. Наша цель состоит в том, чтобы избежать этих изменений, но иногда они необходимы, чтобы исправить проблемы, которые были бы хуже, чем несовместимость между выпусками. Если какая-либо проблема обновления, применимая к Вашей установке, вовлекает несовместимость, которая требует специальной обработки, следуйте инструкциям, данным в описании несовместимости. Иногда это вовлекает дамп и перезагрузку таблиц или использование CHECK TABLE или REPAIR TABLE.

Для дампа и инструкций перезагрузки см. раздел 2.10.4. Любая процедура, которая вовлекает REPAIR TABLE с опцией USE_FRM должна быть сделана перед обновлением. Использование этого запроса с версией MySQL, отличающейся от той, с которой создавалась таблица (то есть, используя это после обновления) может повредить таблицу. См. раздел 14.7.2.5.

Изменения словаря данных

Incompatible change: MySQL Server 8.0 включает глобальный словарь данных, содержащий информацию об объектах базы данных в транзакционных таблицах. В предыдущей серии MySQL данные о словаре хранились в метафайлах с данными и нетранзакционных системных таблицах. В результате процедура обновления несколько отличается от предыдущего выпуска MySQL и требует, чтобы Вы проверили готовность обновления своей установки, проверяя определенные предпосылки. Для получения дополнительной информации см. здесь. Данные, включенные в словарь сервера, влекут за собой некоторые общие операционные различия, см. раздел 15.6.

Изменения конфигурации
  • Incompatible change: механизм хранения MySQL теперь ответственен за обеспечение его собственного обработчика разделения, и сервер MySQL больше не оказывает поддержку разделения. InnoDB единственный механизм хранения, обеспечивающий родной обработчик разделения, который поддержан в MySQL 8.0. Механизм хранения NDB также оказывает родную поддержку разделения, но это еще не поддержано в MySQL 8.0. Разделенная таблица, используя любой другой механизм хранения должна быть преобразована к InnoDB, или надо удалить разделение до обновления сервера.

    Для информации о преобразовании таблицы MyISAM к InnoDB см. раздел 16.8.4.

    Табличный запрос создания, который привело бы к разделенной таблице, используя механизм хранения без такой поддержки, терпит неудачу с ошибкой (ER_CHECK_NOT_IMPLEMENTED) в MySQL 8.0. Если Вы импортируете базы данных из файла дампа, создаваемого в MySQL 5.7 (или ранее), используя mysqldump в MySQL 8.0, Вы должны удостовериться, что любые запросы, составляющие разделенные таблицы, также не определяют неподдержанный механизм хранения, удаляя любые ссылки на разделение или определяя механизм хранения как InnoDB. Допустимо установить InnoDB как значение по умолчанию.

    Процедура, данная здесь, описывает, как идентифицировать разделенные таблицы, которые должны быть изменены прежде, чем обновиться до MySQL 8.0.

    См. раздел 20.6.2 для дополнительной информации.

  • Incompatible change: Несколько кодов ошибки сервера не используются и были удалены (список см. здесь). Должны быть обновлены приложения, которые проверяют любой из них.

Изменения InnoDB
  • Incompatible change: Есть различия в формате журнала redo поэтому, выполняя оперативное обновление до MySQL 8.0 от MySQL 5.7 надо, чтобы MySQL 5.7 был закрыт, используя innodb_fast_shutdown = 0 перед обновлением. Требуется, чтобы Вы обновлялись от версии GA MySQL 5.7, то есть, 5.7.9 или выше. Обновления от версий non-GA MySQL 5.7 не поддержаны.

Изменения в SQL
  • После обновления рекомендуется, чтобы Вы проверили подсказки оптимизатора, определенные в коде программы, чтобы гарантировать, что подсказки все еще достигают желаемой стратегии оптимизации. Улучшения оптимизатора могут иногда представлять определенные ненужные подсказки. В некоторых случаях ненужная подсказка может даже быть контрпроизводительной.

2.10.1.2. Обновление MySQL с репозитарием MySQL Yum

Для поддержанных платформ (см. раздел 2.5.1) Вы можете выполнить оперативное обновление для MySQL (то есть, заменяя старую версию и затем выполняя новую версию от старых файлов с данными) с репозитарием MySQL Yum.

  • Прежде, чем выполнить любое обновление MySQL, следуйте тщательно инструкциям в разделе 2.10.1. Особенно важно зарезервировать Вашу базу данных перед обновлением.

  • Следующие инструкции предполагают, что Вы установили MySQL с репозитарием MySQL Yum или пакетом RPM, непосредственно загруженным с MySQL Developer Zone's MySQL Download page, если это не так, следуйте инструкциям в Replacing a Third-Party Distribution of MySQL Using the MySQL Yum Repository.

  1. Выбор целевого ряда

    По умолчанию репозитарий MySQL Yum обновляет MySQL к последней версии в ряду выпуска, который Вы выбрали во время установки, что означает, например, 5.7.x, установка НЕ будет обновлена к выпуску 8.0.x автоматически. Чтобы обновить к другому ряду выпуска, Вы должны сначала отключить подрепозитарий для ряда, который был выбран и включить подрепозитарий для Вашего целевого ряда. Чтобы сделать это, см. общие инструкции, данные здесь. Для того, чтобы обновить от MySQL 5.7 к 8.0, выполните наоборот шаги, иллюстрированные здесь.

    Как правило, чтобы обновить от одного ряда выпуска до другого, пойдите в следующую серию вместо того, чтобы пропустить ряд. Например, если Вы в настоящее время выполняете MySQL 5.6 и хотите обновить до 8.0, обновите до MySQL 5.7 прежде, чем обновить до 8.0.

    Для важной информации об обновлении от MySQL 5.7 к 8.0 см. Upgrading from MySQL 5.7 to 8.0.

  2. Обновление MySQL

    Обновите MySQL и его компоненты следующей командой, для платформ, которые не dnf:

    sudo yum update mysql-server
    

    Для платформ dnf:

    sudo dnf upgrade mysql-server
    

    Альтернативно, Вы можете обновить MySQL, говоря Yum обновить все на Вашей системе, что могло бы занять значительно больше времени, для платформ, которые не dnf:

    sudo yum update
    

    Для dnf-систем:

    sudo dnf upgrade
    
  3. Перезапуск MySQL

    Сервер MySQL всегда перезапускается после обновления Yum. Как только сервер перезапускается, выполните mysql_upgrade , чтобы проверить и возможно решить любые несовместимости между старыми данными и обновленным программным обеспечением. mysql_upgrade также выполняет другие функции, см. подробности в разделе 5.4.5.

Вы можете также обновить только определенный компонент. Используйте следующую команду, чтобы перечислить все установленные пакеты для компонентов MySQL (для dnf-систем, замените yum на dnf):

sudo yum list installed | grep "^mysql"

После идентификации названия пакета компонента Вашего выбора, для платформ, которые не dnf-совместимы, обновите пакет следующей командой, заменяя package-name названием пакета:

sudo yum update package-name

Для dnf-систем:

sudo dnf upgrade package-name
Обновление совместно используемых библиотек клиента

После обновления MySQL, используя Yum, приложения, собранные с более старыми версиями совместно используемых библиотек клиента, должны продолжить работать.

Если Вы повторно собираете приложения и динамически компонуете их с обновленными библиотеками: с новыми версиями совместно используемых библиотек, где есть различия или дополнения в символе версии между новыми и старыми библиотеками (например, между более новыми стандартными совместно используемыми библиотеками клиента 8.0 и некоторыми старыми или из других источников), пользование любыми обновленными приложениями потребует обновленных библиотек в системах, где приложения развернуты. Так что надлежит убедиться, что развернули пакеты для совместно используемых библиотек MySQL на тех системах. Вы можете сделать это, добавляя репозитарий MySQL Yum к системам (см. "Добавление репозитария MySQL Yum") и установить последние совместно используемые библиотеки, используя инструкции, данные здесь.

2.10.1.3. Обновление MySQL с MySQL APT Repository

В Debian 7 или 8 и Ubuntu 12, 14 или 15 Вы можете выполнить оперативное обновление MySQL и его компонентов с помощью MySQL APT. См. Upgrading MySQL with the MySQL APT Repository в A Quick Guide to Using the MySQL APT Repository.

2.10.2. Откат MySQL

Этот раздел описывает, как откатиться к более старой версии MySQL.

В следующем обсуждении команды MySQL, которые должны быть выполнены, используя учетную запись MySQL с административными привилегиями, включают опцию -u root в командной строке, чтобы определить пользователя MySQL root. Команды, которые требуют пароля для root, также включают опцию -p. Так как -p не сопровождается никаким значением опции, пароль будет запрошен по мере надобности явно.

Запросы SQL могут быть выполнены, используя клиент mysql (соединитесь как root, чтобы гарантировать, что у Вас есть необходимые привилегии).

Поддержанные методы

Поддержанные методы включают:

  • Оперативный: Вовлекает закрытие новой версии MySQL, замену новых двоичных модулей или пакетов старыми и перезапуска старой версии MySQL на существующем каталоге данных. Оперативные откаты поддержаны между версиями GA в пределах того же самого ряда выпуска.

  • Логический: Вовлекает использование mysqldump, чтобы вывести все таблицы из новой версии MySQL, а затем загрузку файла дампа в старую версию MySQL. Логические откаты поддержаны между версиями GA в пределах того же самого ряда выпуска и между уровнями выпуска.

Поддержанные пути

Если иначе не сказано, следующие пути поддержаны:

  • От серийной версии выпуска до более старой серийной версии выпуска, используя все методы.

  • Понижение одного уровня выпуска поддержано, используя логический метод. Например, понижение от 8.0 до 5.7 поддержано.
  • Понижение больше чем одного уровня выпуска поддержано, используя логический метод, но только если Вы понижаете один уровень выпуска за один раз. Например, Вы можете понизить от 8.0 до 5.7, а затем до 5.6.

Следующие условия относятся ко всем путям:

  • Откаты между выпусками статуса General Availability (GA).

  • Откаты между выпусками статуса milestone (или от GA до milestone) не поддержаны. Например, понижение от MySQL 8.0.1 к MySQL 8.0.0 не поддержано, поскольку ни один не является выпуском статуса GA.

Прежде, чем Вы начнете

Перед откатом рекомендуются следующие шаги:

  • Изучите Release Notes для версии MySQL, от которой Вы откатываетесь, чтобы гарантировать, что нет никаких особенностей или затруднительных положений, в которых Вы окажетесь.

  • Изучите раздел 2.10.2.1. Этот раздел описывает изменения, которые могут потребовать действия прежде или после отката.

    Процедуры, описанные в следующих разделах, предполагают, что Вы откатываетесь с файлами с данными, создаваемыми или измененными более новой версией MySQL. Однако, если Вы не изменяли свои данные после того, как выполнили обновление, использование резервных копий, сделанных перед обновлением, рекомендуется. Многие из изменений описаны в разделе 2.10.2.1, требуют действия прежде или после того, как откат неприменим. Это приводит к необходимости применения резервных копий, сделанных перед обновлением.

  • Всегда поддерживайте резервные копии своих текущих баз данных и файлов системного журнала перед откатом. Резервное копирование должно включать базу данных mysql, которая содержит системные таблицы MySQL. См. раздел 8.2.

  • Использование новых особенностей, новых параметров конфигурации или новых значений параметра конфигурации, которые не поддержаны предыдущим выпуском, может вызвать ошибки или отказы. Перед понижением версии рекомендуется, чтобы Вы полностью отменили изменения, следующие из использования новых особенностей, и удалили настройки конфигурации, которые не поддержаны выпуском, к которому Вы понижаете версию.
  • Проверьте раздел 2.10.3, чтобы видеть, были ли изменения форматов таблицы или наборов символов или сопоставлений произведены между Вашей текущей версией MySQL и версией, к которой Вы откатываетесь. Если такие изменения привели к несовместимости между версиями MySQL, переделайте удалите затронутые таблицы, используя инструкции в разделе 2.10.4 .
  • Если Вы используете XA с InnoDB, запустите XA RECOVER перед откатом, чтобы проверить на нейтральные транзакции XA. Если результаты возвращены, выполните XA COMMIT или XA ROLLBACK.

Выполнение оперативного отката

Оперативные откаты поддержаны для переходов между выпусками состояния GA в пределах того же самого ряда выпуска.

Для поддержанного пути в пределах MySQL 8.0 рядов выпуска должно быть по крайней мере две доступных версии MySQL 8.0 состояния GA.

Для систем Linux, на которых MySQL установлен, используя пакеты RPM, запуск сервера и завершение работы управляется systemd, и mysqld_safe не установлен. Если Вы устанавливали MySQL на системе Linux, используя пакеты RPM, используйте systemd для запуска сервера и завершения работы вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9.

Выполнить оперативный откат:

  1. Изучите изменения, описанные разделе 2.10.2.1 для понимания шагов, которые будут выполнены перед понижением версии.

  2. Сконфигурируйте MySQL, чтобы выполнить медленное завершение работы, устанавливая innodb_fast_shutdown в 0. Например:
    mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
    

    С медленным завершением работы InnoDB выполняет полную чистку и буферное слияние изменений перед закрытием, которое гарантирует, что файлы с данными полностью подготовлены в случае различий в формате файла между выпусками.

  3. Закройте более новый сервер MySQL. Например:
    mysqladmin -u root -p shutdown
    
  4. После медленного завершения работы, удалите файлы системного журнала InnoDB redo (файлы ib_logfile*) из каталога data, чтобы избежать проблем отката, связанных с тем, что файл системного журнала внесет изменения, которые, возможно, произошли между выпусками.
    rm ib_logfile*
    
  5. Замените двоичные файлы MySQL старыми.
  6. Запустите более старый сервер MySQL, используя существующий каталог данных. Например:
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    
  7. Запустите mysql_upgrade. Например:
    mysql_upgrade -u root -p
    

    mysql_upgrade исследует все таблицы во всех базах данных для несовместимостей с текущей версией MySQL, и пытается восстановить таблицы, если проблемы найдены.

  8. Закройте и перезапустите сервер MySQL, чтобы гарантировать, что любые изменения, произведенные в системных таблицах, вступают в силу. Например:
    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

Выполнение логического отката

Логические откаты поддержаны между выпусками в пределах того же самого ряда выпуска и для возврата к предыдущему уровню выпуска. Только переходы между выпусками состояния GA поддержаны.

Для систем Linux, на которых MySQL установлен, используя пакеты RPM, запуск сервера и завершение работы управляется systemd, и mysqld_safe не установлен. Если Вы устанавливали MySQL на системе Linux, используя пакеты RPM, используйте systemd для запуска сервера и завершения работы вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9.

Выполните логический откат:

  1. Рассмотрите изменения, описанные в разделе 2.10.2.1 для понимания шагов, которые будут выполнены перед понижением версии.

  2. Сделайте дамп всех баз данных. Например:
    mysqldump -u root -p --add-drop-table --routines --events
              --all-databases --force > data-for-downgrade.sql
    
  3. Закройте более новый сервер MySQL. Например:
    mysqladmin -u root -p shutdown
    
  4. Инициализируйте более старый экземпляр MySQL с новым каталогом данных. Например:
    mysqld --initialize --user=mysql
    
  5. Запустите более старый сервер MySQL, используя новый каталог данных. Например:
    mysqld_safe --user=mysql --datadir=/path/to/new-datadir
    
  6. Загрузите файл дампа в более старый сервер MySQL. Например:
    mysql -u root -p --force < data-for-upgrade.sql
    
  7. Выполните mysql_upgrade, например:
    mysql_upgrade -u root -p
    

    mysql_upgrade исследует все таблицы во всех базах данных для выявления несовместимостей с текущей версией MySQL и пытается восстановить таблицы, если проблемы найдены.

  8. Перезапустите сервер MySQL, чтобы гарантировать, что любые изменения, произведенные в системных таблицах, вступают в силу. Например:
    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/new-datadir
    

Проблемы

Если Вы понижаете от одного ряда выпуска до другого, в табличных форматах хранения могут быть несовместимости. В этом случае используйте mysqldump, чтобы вывести Ваши таблицы в дамп перед понижением. После понижения перезагрузите файл дампа, используя mysql или mysqlimport , чтобы обновить Ваши таблицы. Для примеров см. раздел 2.10.5.

Типичный признак нисходящего несовместимого изменения формата таблицы: Вы не можете открыть таблицы. В этом случае используйте следующую процедуру:

  1. Остановите более старый сервер MySQL, к которому Вы понижаете версию.

  2. Перезапустите более новый сервер MySQL, от которого Вы понижаете версию.
  3. Выведите в дамп любые таблицы, которые были недоступны более старому серверу при использовании mysqldump.
  4. Остановите более новый сервер MySQL и перезапустите более старый.
  5. Перезагрузите файл дампа в более старый сервер. Ваши таблицы должны быть доступными.

2.10.2.1. Изменения, затрагивающие откат от MySQL 8.0

Прежде, чем понизить версию от MySQL 8.0, рассмотрите изменения, описанные в этом разделе. Некоторые изменения могут потребовать действия прежде или после понижения версии.

InnoDB
  • Incompatible change: прежде, чем выполнить оперативный откат от MySQL 8.0 к 5.7, Вы должны завершить работу MySQL, используя установку innodb_fast_shutdown в 0 или 1, сопровождаемую удалением файлов системного журнала redo (файлы ib_logfile*).

2.10.3. Проверка, какие таблицы или индексы должны быть восстановлены

Двоичное обновление устанавливает одну версию MySQL по существующей версии, не выводя в дамп и не перезагружая таблицы:

  1. Остановите сервер для существующей версии, если он работает.

  2. Установите иную версию MySQL. Это обновление, если новая версия выше, чем оригинальная версия, откат, если версия ниже.
  3. Запустите сервер для новой версии.

Во многих случаях, таблицы от предыдущей версии MySQL могут использоваться без проблем новой версией. Однако, иногда изменения происходят, которые требуют восстановления таблиц или индексов. Если у Вас есть таблицы, которые затронуты любыми такими проблемами, восстановите таблицы или индексы по мере необходимости с использованием инструкций, данных в разделе 2.10.4.

Модификации обработки наборов символов или сопоставлений могли бы изменить символьный порядок сортировки, который вызывает упорядочивание записей в любом индексе, который использует затронутый набор символов или сопоставление. Такие изменения приводят к нескольким возможным проблемам:

  • Результаты сравнения, которые отличаются от предыдущих результатов

  • Неспособность найти некоторые значения из-за неупорядоченного порядка записей в индексе.
  • Неупорядоченные результаты ORDER BY
  • Таблицы, которые CHECK TABLE помечает как нуждающиеся в ремонте

Решение этих проблем состоит в том, чтобы восстановить любой индекс, использующий затронутый набор символов или сопоставление, удалить и обновить индекс или вывести в дамп и перезагрузить всю таблицу. В некоторых случаях возможно изменить затронутые столбцы, чтобы использовать иное сопоставление. Подробности о пересоздании индексов см. в indexes, see разделе 2.10.4.

Во многих случаях, Вы можете использовать CHECK TABLE ... FOR UPGRADE, чтобы идентифицировать таблицы, для которых требуется восстановление индексов. Это сообщит так:

Table upgrade required.
Please do "REPAIR TABLE `tbl_name`" or dump/reload to fix it!

В этих случаях Вы можете также использовать mysqlcheck --check-upgrade или mysql_upgrade, которые выполняют CHECK TABLE. Однако, использование CHECK TABLE применяется только после обновлений, но не откатов. Кроме того, CHECK TABLE неприменимо ко всем механизмам хранения. Для деталей о том, которые механизмы хранения понимают CHECK TABLE см. раздел 14.7.2.2.

2.10.4. Восстановление таблиц или индексов

Этот раздел описывает, как восстановить таблицу, после таких изменений MySQL как типы данных или наборы символов. Например, ошибка в сопоставлении, возможно, была исправлена, требуя, чтобы таблица восстановилась, чтобы обновить индексирование для символьных столбцов, которые используют сопоставление. Для примеров см. раздел 2.10.3. Вы, возможно, также должны были бы восстановить или обновить таблицу, обозначенную при выполнении CHECK TABLE, mysqlcheck или mysql_upgrade .

Методы для того, чтобы восстановить таблицу включают дамп и перезагрузку или использование ALTER TABLE или REPAIR TABLE. REPAIR TABLE относится только к таблицам типов MyISAM, ARCHIVE и CSV.

Если Вы восстанавливаете таблицы, потому что версия MySQL не будет обрабатывать их после двоичного (оперативного) обновления, Вы должны использовать метод дампа-и-перезагрузки. Выведите таблицы в дамп до обновления, с использованием Вашей оригинальной версии MySQL. Затем перезагрузите таблицы после обновления.

Если Вы используете метод дампа-и-перезагрузки восстановления таблиц только с целью восстановления индексов, Вы можете выполнить дамп прежде или после обновления. Перезагрузка все еще должна быть сделана позже.

Чтобы восстановить таблицу, выводя в дамп и перезагружая ее, используйте mysqldump для создания дампа и mysql , чтобы перезагрузить файл:

mysqldump db_name t1 > dump.sql
mysql db_name < dump.sql

Чтобы восстановить все таблицы в единственной базе данных, определите имя базы данных без любого имени таблицы:

mysqldump db_name > dump.sql
mysql db_name < dump.sql

Чтобы восстановить все таблицы во всех базах данных, используйте опцию --all-databases :

mysqldump --all-databases > dump.sql
mysql < dump.sql

Чтобы восстановить таблицу с ALTER TABLE, используйте изменение null, то есть, команда ALTER TABLE, которая преобразует таблицу, чтобы использовать механизм хранения, который уже используется. Например, если t1 таблица InnoDB, используйте этот запрос:

ALTER TABLE t1 ENGINE = InnoDB;

Если Вы не уверены, который механизм хранения определить в ALTER TABLE, надо использовать SHOW CREATE TABLE, чтобы вывести на экран табличное определение.

Если Вы должны восстановить таблицу InnoDB потому, что CHECK TABLE указывает, что табличное обновление требуется, используйте mysqldump для создания дампа и mysql , чтобы перезагрузить файл, как описано ранее. Если CHECK TABLE указывает, что есть повреждение, обратитесь к разделу 16.20.2 для информации об использовании опции innodb_force_recovery для перезапуска InnoDB. Чтобы понять тип проблемы, с которой столкнулся CHECK TABLE , надо обратиться к замечаниям по InnoDB в разделе 14.7.2.2.

Для MyISAM, ARCHIVE или CSV Вы можете использовать REPAIR TABLE , если проверка указывает, что есть повреждение или что обновление требуется. Например, чтобы восстановить таблицу MyISAM:

REPAIR TABLE t1;

mysqlcheck --repair обеспечивает доступ из командной строки к REPAIR TABLE. Это может быть более удобным средством, потому что Вы можете использовать опции --databases или --all-databases, чтобы восстановить все таблицы в определенных базах данных или во всех базах данных, соответственно:

mysqlcheck --repair --databases db_name ...
mysqlcheck --repair --all-databases

2.10.5. Копирование баз данных MySQL к другой машине

В случаях, когда Вы должны передать базы данных между различными архитектурами, Вы можете использовать mysqldump, чтобы создать файл, содержащий запросы SQL. Вы можете тогда передать файл другой машине и ввести его через клиент mysql.

Используйте mysqldump --help, чтобы видеть, какие опции доступны.

Самый легкий (хотя не самый быстрый) способ переместить базу данных между двумя машинами, это выполнить следующие команды на машине, на которой расположена база данных:

mysqladmin -h 'other_hostname' create db_name
mysqldump db_name | mysql -h 'other_hostname' db_name

Если Вы хотите скопировать базу данных с удаленной машины по медленной сети, Вы можете использовать эти команды:

mysqladmin create db_name
mysqldump -h 'other_hostname' --compress db_name | mysql db_name

Вы можете также сохранить дамп в файле, передать файл целевой машине и затем загрузить файл в базу данных там. Например, Вы можете вывести базу данных в сжатый файл на исходной машине:

mysqldump --quick db_name | gzip > db_name.gz

Передайте файл, содержащий содержание базы данных к целевой машине, и выполните эти команды:

mysqladmin create db_name
gunzip < db_name.gz | mysql db_name

Вы можете также использовать mysqldump и mysqlimport , чтобы передать базу данных. Для больших таблиц это намного быстрее, чем простое использование mysqldump. В следующих командах DUMPDIR представляет полный путь каталога, который Вы используете, чтобы сохранить вывод mysqldump .

Создайте каталог для выходных файлов и выведите в дамп базу данных:

mkdir DUMPDIR
mysqldump --tab=DUMPDIR db_name

Передайте файлы в каталоге DUMPDIR к некоторому соответствующему каталогу на целевой машине и загрузите файлы в MySQL там:

mysqladmin create db_name # create database
cat DUMPDIR/*.sql | mysql db_name # create tables in database
mysqlimport db_name DUMPDIR/*.txt # load data into tables

Не забывайте скопировать базу данных mysql, потому что это то место, где таблицы привилегий сохранены. Вам, возможно, придется выполнить команды как MySQL-пользователь root на новой машине, пока Вы не имеете базу данных mysql.

После того, как Вы импортируете базу данных mysql на новой машине, выполните mysqladmin flush-privileges, чтобы сервер перезагрузил информацию о таблице привилегий.

2.11. Замечания по установке Perl

Модуль Perl DBI обеспечивает интерфейс для доступа к базе данных. Вы можете написать скрипт DBI, который работает со многими различными механизмами базы данных без изменения. Используя DBI, Вы должны установить модуль DBI и модуль DataBase Driver (DBD) для каждого типа сервера базы данных, к которому Вы хотите получить доступ. Для MySQL это модуль DBD::mysql.

Поддержка Perl не включена в дистрибутивы MySQL. Вы можете получить необходимые модули из http://search.cpan.org для Unix или применяя программу ActiveState ppm в Windows.

Интерфейс DBI/DBD требует Perl 5.6.0 и 5.6.1 или позже. DBI не работает, если у Вас есть более старая версия Perl. Вы должны использовать DBD::mysql 4.009 или выше. Хотя более ранние версии доступны, они не поддерживают полную функциональность MySQL 8.0.

2.11.1. Установка Perl в Unix

Поддержка Perl MySQL требует, чтобы Вы установили клиента MySQL, поддержку разработки (библиотеки и заголовочные файлы). Большинство методов установки устанавливает необходимые файлы. Если Вы устанавливаете MySQL из файлов RPM в Linux, убедитесь, что также установили RPM разработчика. Программы клиента находятся в клиентском RPM, но поддержка разработки в RPM для разработчика.

Файлы, в которых Вы нуждаетесь для поддержки Perl, могут быть получены из (Comprehensive Perl Archive Network), http://search.cpan.org.

Самый легкий способ установить модули Perl на Unix состоит в том, чтобы использовать модуль CPAN:

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

Установка DBD::mysql выполняет много тестов. Эти тесты пытаются соединиться с местным сервером MySQL, используя имя пользователя по умолчанию и пароль. Имя пользователя значения по умолчанию это Ваше имя для входа в систему на Unix или ODBC в Windows. Пароля по умолчанию нет. Если Вы не можете соединиться с сервером с этими значениями (например, если у Вашей учетной записи есть пароль), тесты терпят неудачу. Вы можете использовать force install DBD::mysql, чтобы проигнорировать неудачные тесты.

DBI требует модуль Data::Dumper. Это может быть уже установлено, в противном случае Вы должны установить его перед установкой DBI.

Также возможно загрузить дистрибутив модуля в форме сжатых архивов tar и создать модули вручную. Например, чтобы распаковать и создать дистрибутив DBI, используйте такую процедуру:

  1. Распакуйте дистрибутив в текущий каталог:

    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -
    

    Эта команда создает каталог DBI-VERSION.

  2. Перейдите в верхний каталог распакованного дистрибутива:
    shell> cd DBI-VERSION
    
  3. Создайте дистрибутив и соберите все:
    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

Команда make test важна, потому что она проверяет, что модуль работает. Отметьте что, когда Вы выполняете эту команду во время установки DBD::mysql, чтобы проверить код интерфейса, сервер MySQL должен работать, или тест терпит неудачу.

Хорошая идея собрать и повторно установить DBD::mysql всякий раз, когда Вы устанавливаете новый выпуск MySQL. Это гарантирует, что последние версии библиотек клиента MySQL установлены правильно.

Если у Вас нет прав доступа, чтобы установить модули Perl в системном каталоге или если Вы хотите установить модули Perl локально, следующая ссылка может быть полезной: http://learn.perl.org/faq/perlfaq8.html#How-do-I-keep-my-own-module-library-directory-.

2.11.2. Установка ActiveState Perl в Windows

В Windows Вы должны сделать следующее, чтобы установить MySQL модуль DBD с ActiveState Perl:

  1. Скачать ActiveState Perl с http://www.activestate.com/Products/ActivePerl/ и поставить его.

  2. Открыть окно консоли.
  3. В случае необходимости установите переменную If necessary, set the HTTP_proxy. Например, Вы могли бы попробовать такую установку:
    C:\> set HTTP_proxy=my.proxy.com:3128
    
  4. Запустить программу PPM:
    C:\> C:\perl\bin\ppm.pl
    
  5. Если Вы ранее не сделали этого, поставьте DBI:
    ppm> install DBI
    
  6. Если это получилось, выполните следующую команду:
    ppm> install DBD-mysql
    

Эта процедура должна работать с ActiveState Perl 5.6 или выше.

Если Вы не можете заставить процедуру работать, Вы должны установить драйвер ODBC вместо этого и соединиться с сервером MySQL через ODBC:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
die "Got error $DBI::errstr when connecting to $dsn\n";

2.11.3. Проблемы при использовании интерфейса Perl DBI/DBD

Если Perl сообщает, что не может найти модуль ../mysql/mysql.so, проблема состоит, вероятно в том, что Perl не может определить местонахождение совместно используемой библиотеки libmysqlclient.so. Вы должны быть в состоянии решить эту проблему одним из следующих методов:

  • Скопируйте libmysqlclient.so в каталог, где расположены Ваши другие совместно используемые библиотеки (вероятно, это /usr/lib или /lib).

  • Измените опции -L при сборке DBD::mysql, чтобы отразить фактическое местоположение libmysqlclient.so.
  • В Linux надо добавить путь каталога, где лежит libmysqlclient.so в файл /etc/ld.so.conf.
  • Добавьте путь каталога с libmysqlclient.so к переменной LD_RUN_PATH. Некоторые системы используют вместо этого LD_LIBRARY_PATH.

Отметьте, что Вы, возможно, также должны изменить опцию -L, если есть другие библиотеки, которые компоновщик не в состоянии найти. Например, если компоновщик не может найти libc потому что это находится в /lib и команда компоновки определяет -L/usr/lib, измените опцию -L на -L/lib или добавьте -L/lib к существующей команде компоновки.

Если Вы получаете следующие ошибки от DBD::mysql, Вы, вероятно, используете gcc (или используете старый исполняемый модуль, собранный gcc):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Добавьте -L/usr/lib/gcc-lib/... -lgcc в команду компоновки, когда библиотека mysql.so создана (проверьте вывод make для mysql.so, когда Вы собираете клиент Perl). Опция -L должна определить путь к каталогу, где находится libgcc.a.

Другая причина этой проблемы может состоять в том, что Perl и MySQL оба не собраны gcc. В этом случае, Вы можете решить несоответствие, собирая обоих с помощью gcc.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru