Рейтинг:2

Автоматизация (удаление) установки MySQL

флаг ru

В настоящее время я пытаюсь автоматизировать очистку и переустановку MySQL в Ubuntu (для Vagrant).Тем не менее, я сталкиваюсь с различными проблемами с этим.

Вот что у меня есть:

# Удалить старую версию MySQL
sudo systemctl остановить mysql
sudo apt-get удалить mysql-* -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
sudo rm -rf /etc/mysql/var/lib/mysql/var/log/mysql

# ...
# Займитесь другими делами.
# ...

# Установите последнюю версию MySQL, см.
# https://gist.github.com/kpietru/a3cb08ee074a4418795a
MYSQL_PASSWORD="корень"

экспортировать MYSQL_PASSWORD="$MYSQL_PASSWORD"

sudo ожидать -c '
    spawn apt-get install -y mysql-сервер

    ожидать "*пароль* пользователя:"
    отправить "$env(MYSQL_PASSWORD)\r"

    ожидать "*пароль* пользователя:"
    отправить "$env(MYSQL_PASSWORD)\r"

    ожидать "\ г"
    отправить "ввод\r"

взаимодействовать

sudo systemctl размаскировать mysql.service
запуск службы sudo mysql

mysql --версия

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

mysql-uroot-proot

Я получаю сообщение об ошибке, связанное с сокетом (см. https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq). Я не хочу исправлять здесь ошибку. Я хочу, чтобы предыдущие сценарии работали правильно. Поэтому я не буду залезать в кроличью нору исправления ошибки сокета.

Моей первой интуицией было использовать sudo apt-get purge -y mysql-* вместо Удалить, но тогда я должен автоматизировать быстрые ответы с помощью ожидать. Я пытался сделать это с автоожидание, но ожидать Сгенерированный скрипт не работает.

Вы можете мне помочь? Есть ли что-нибудь еще, что я могу попробовать?

Заранее спасибо и ура

Рейтинг:1
флаг ru

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

# Удалить предыдущие версии MySQL
################################################### ##################

экспорт DEBIAN_FRONTEND=неинтерактивный

sudo systemctl остановить mysql
sudo apt-get удалить mysql-* -y

sudo dpkg --configure -a
sudo -E apt-получить чистку mysql-*
sudo rm -rf /etc/mysql/var/lib/mysql/var/log/mysql

sudo apt-получить автоматическое удаление
sudo apt-получить автоочистку

# Установите MySQL 8.0
################################################### ##################

sudo apt-получить обновление
sudo apt install mysql-server-8.0 -o Dpkg::Options::="--force-confnew" -y

# Включить собственную аутентификацию по паролю
#
# В противном случае вам пришлось бы открывать MySQL как root:
# `sudo mysql -u корень`
################################################### ##################

echo "ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost', ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password BY 'root'; FLUSH PRIVILEGES;" | sudo mysql -u корень
флаг jp
Dan
Вы должны иметь возможность использовать `sudo apt install mysql-server` вместо `sudo apt install mysql-server-8.0` (т.е. удалить версию), чтобы ваш скрипт все еще работал, если вы позже используете его для более новой версии Ubuntu, которая может быть не MySQL 8.0, а какая-то другая версия.
CunningFatalist avatar
флаг ru
Это правда, но я на самом деле хочу быть очень конкретным. Мы получим уведомление, если нам нужно обновить наши среды MySQL.

Ответить или комментировать

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