Почему не удалось установить MySQL 5.6 в Ubuntu 14.04?

30

Я хотел бы взглянуть на MySQL 5.6 на Ubuntu 14.04 просто из любопытства. И на основании этой статьи это, безусловно, выглядело так, что установка должна быть простой и понятной. Поэтому я запустил микросервер AWS EC2 под управлением Ubuntu 14.04 (64-битная версия), вошел в свой первичный экземпляр (через PuTTY) и выполнил следующие команды:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(Первые две команды были шагами отчаяния, так как простой запуск apt-get installранее не работал. Но даже со всеми тремя командами шаг установки все еще не работал.)

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

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

Я получил это вместо этого:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

Кто-нибудь может увидеть, что пошло не так?

WebLearner
источник
1
что говорит журнал? cat /var/log/mysql.err
Пате

Ответы:

22

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

Решением этой ошибки является одно из следующих:

  • Увеличьте объем памяти в вашем экземпляре EC2
  • Установите меньшее значение для max_connectionsпеременной MySQL
Майк Миллер
источник
1
Да, эта проблема именно то, что показано в отчете об ошибке. Благодарность! До сих пор я пробовал быстрое исправление, предложенное, чтобы убедиться, что /etc/apparmor.d/local/usr.sbin.mysqld существует, и, к сожалению, этого не произошло. Так что теперь я попробую установку с большим объемом памяти.
WebLearner
1
Для следующей попытки вместо использования экземпляра EC2 я создал виртуальную машину Ubuntu 14.04 с 2 ГБ памяти, используя Oracle VM Virtualbox, и в этой среде установка MySQL 5.6 прошла без перебоев sudo apt-get install mysql-server-5.6. Таким образом, очевидно, что микроэкземпляру EC2 не хватает памяти для установки MySQL 5.6 с помощью apt-get!
WebLearner
1
Дополнительный комментарий был добавлен к сообщению об ошибке, в котором предлагалось уменьшить max_connections MySQL перед установкой MySQL 5.6. Я воспользовался этим советом и добавил в файл /etc/mysql/conf.d файл .cnf, содержащий две строки: «[mysqld]» и «max_connections = 20». С этим файлом моя установка MySQL на свежем микро EC2 прошла. (Согласно документации значение по умолчанию для max_connections равно 151. Установка его в 20, вероятно, является экстремальной. Но, по крайней мере, это показывает, что MySQL можно установить.)
WebLearner
Для получения дополнительной информации: я проверяю /var/lib/dpkg/info/mysql-server-5.6.postinst, и я обнаружил, что вы можете запустить этот скрипт для точного воспроизведения неудачных шагов
shakaran
Он работает на моем бродяге, я установил 1G RAM и исправил его. Спасибо. : D
Чу-Сян Лай
24

Я столкнулся с той же проблемой, когда я запускаю свой маленький VPS. Проблема вызвана нехваткой памяти. Таким образом, не тратя лишних денег на увеличение памяти, которая вам не нужна, вы можете просто создать файлы подкачки для облегчения установки. Да, подкачка идет медленно, но все, что вам нужно, это сделать установку.

На Ubuntu 14.04 я делаю следующее, чтобы решить проблему:

Создайте файл подкачки 4G:

sudo fallocate -l 4G /swapfile

Измените его разрешение, чтобы только root мог получить доступ и изменить:

sudo chmod 600 /swapfile

Сделайте это подкачкой:

sudo mkswap /swapfile

Активация:

sudo swapon /swapfile

Теперь вы можете попробовать установить mysql снова, на этот раз все будет успешно. Просто не забудьте удалить предыдущую неудачную установку, прежде чем сделать это.

Артур Ван
источник
Да, идеальный ответ. Абсолютно потрясающе.
Рен
3

Я столкнулся с той же проблемой. Хотя у меня была достаточно большая память 12 Гб, выделенная моей виртуальной машине, но все равно дела шли плохо. Потратив некоторое время на то, что по умолчанию в apt get отсутствуют некоторые пакеты перевода конфигурации и инструментов.

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

  1. Добавление репозитория MySQL APT Сначала добавьте репозиторий MySQL apt в список программных репозиториев вашей системы. Следуй этим шагам:

    • Перейдите на страницу загрузки для хранилища MySQL apt по адресу http://dev.mysql.com/downloads/repo/apt/ .

    • Выберите и загрузите пакет выпуска.

    • Установите загруженный пакет выпуска с помощью следующей команды, заменив version-specific-package-name на имя загруженного пакета (ему предшествует его путь, если вы не запускаете команду внутри папки, в которой находится пакет):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    Обратите внимание, что один и тот же пакет работает на всех поддерживаемых платформах Debian и Ubuntu.

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

    вы всегда можете изменить свой выбор для версий позже;
    см. Выбор основной версии для получения инструкций.

    • Обновите информацию о пакете из репозитория MySQL APT с помощью следующей команды (этот шаг является обязательным):

      sudo apt-get update
      
  2. Установка MySQL с APT

    • Установите MySQL с помощью следующей команды:

      sudo apt-get install mysql-server
      

Это устанавливает пакет для сервера MySQL, а также пакеты для клиента и для общих файлов базы данных.

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

  1. Запуск и остановка сервера MySQL

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

sudo service mysql status
  • Остановите сервер MySQL с помощью следующей команды:

    sudo service mysql stop
    
  • Чтобы перезапустить сервер MySQL, используйте следующую команду:

    sudo service mysql start
    

Я следил за этим http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Это сработало гладко, загрузил все пакеты и успешно установил mysql 5.6.

Ritesh
источник
Спасибо Дэвид. Это имеет смысл. Я изменил ответ на более подробные шаги. Спасибо.
Ритеш
+1 за улучшенный ответ.
Дэвид Фёрстер
в прошлом был я ... это действительно я? :)
swift
2

В моем случае я добавил

innodb_buffer_pool_size = 20M

к /etc/mysql/my.cnf

maxkoryukov
источник
1
У пользователя возникают проблемы с установкой MySQL, а не с его использованием.
Спасибо, прочитал вопрос) У меня такая же проблема возникла при установке. На самом деле установка завершена, и MySQL уже доступен как сервис, и мы можем его запустить. Но на последнем шаге процесса установки (запуск mysqld) мы ловим эту досадную ошибку.
Макскорюков
1

Я столкнулся с этой проблемой в Ubuntu 15.10. Для меня это не было проблемой с памятью (у меня 2 ГБ оперативной памяти и 18 ГБ подкачки, из которых всего было использовано около 300 МБ).

В моем случае dpkgискал /etc/mysql/conf.d, чего не существовало (однако /etc/mysql/mysql.conf.dсуществовало!). Переустановка mysql и создание папки вручную /etc/mysql/conf.dрешили мою проблему.

Как именно это произошло? Не имею представления. Я почти не хотел делиться своим ответом, так как держу пари, что это решение относится только к моему компьютеру.

Я решил эту проблему с помощью утилиты strace, которая отлично подходит для такого рода вещей, хотя и невероятно многословна.

Я использовал это так:

  • После нажатия ctrlcна полпути apt-get install mysql-serverмне пришлось бежать, dpkg --configure -aчтобы закончить установку.

  • Я побежал strace 2>/tmp/trace dpkg --configure -a. Это сделало меня хорошим straceжурналом в /tmp/trace.

  • Я просмотрел журнал, особенно внизу, где он вышел из строя.

  • Я заметил, что он пытался получить доступ /etc/mysql/conf.d, и получил код ошибки ENOENT, такого файла или каталога нет .

Для тех, кто хочет попробовать, сделайте strace 2>/tmp/trace (command)и grep для ENOENT. Как я уже сказал, это решение, вероятно, специфично для моего компьютера, но вы можете попробовать его.

абрикосовый мальчик
источник
0

В моем случае все, что мне нужно было сделать, это внести некоторые изменения my.cnfи просто удалить 2 файла журнала с именем ib_logfile0and ib_logfile1и запустить mysql.

service mysql start

Нет необходимости переустанавливать MySQL, просто удалите эти 2 файла журнала и перезапустите сервер MySQL

Ниже приведены изменения, которые я сделал в my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 
Лавина Читара
источник
Пожалуйста, добавьте немного больше к своему ответу, чтобы другие могли следить.
Джордж Удосен