DEV Community

Ruslan
Ruslan

Posted on

Установка MySQL 8.0.46 из tar-архива

По любым вопросам пишите - linkedin

Установка MySQL 8.0.46 из tar-архива

Инструкция описывает установку MySQL версии 8.0.46 из официального tar-архива

"Как пользоваться инструкцией"
Команды можно копировать и выполнять по порядку сверху вниз. 🙂

"Особенности установки"
- MySQL устанавливается в отдельную директорию /app/mysql/8.0.46.
- Такая схема позволяет устанавливать рядом несколько версий MySQL.
- Каждая версия может иметь собственные директории data, binlog, relaylog, log, tmp, run, config.
- Для каждой версии можно использовать отдельный файл конфигурации my.cnf и отдельный systemd unit.
- Сервис запускается от системного пользователя mysql.

Назначение схемы установки

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

Например:

/app/mysql/8.0.35
/app/mysql/8.0.46
/app/mysql/8.4.0
Enter fullscreen mode Exit fullscreen mode

"Важно"
У каждого экземпляра должны быть собственные значения параметров, например: port, socket, datadir, server_id, а также отдельный systemd unit.

1. Установка зависимостей

dnf install -y libaio numactl-libs tar wget xz
Enter fullscreen mode Exit fullscreen mode

2. Создание системного пользователя

useradd -r -s /sbin/nologin mysql
Enter fullscreen mode Exit fullscreen mode

3. Создание директорий

mkdir -p /app/mysql/8.0.46/{server,data,binlog,relaylog,log,tmp,run,config}
Enter fullscreen mode Exit fullscreen mode

4. Скачивание архива MySQL

cd /app/mysql/8.0.46
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz
sha256sum mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz
Enter fullscreen mode Exit fullscreen mode

"Проверка архива"
Значение sha256sum должно совпадать с checksum, указанным на официальном сайте MySQL.

После проверки checksum распаковываем архив в директорию /app/mysql/8.0.46/server

tar -xvf mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz -C /app/mysql/8.0.46/server --strip-components=1
Enter fullscreen mode Exit fullscreen mode

5. Создание файла конфигурации

vim /app/mysql/8.0.46/config/my.cnf
Enter fullscreen mode Exit fullscreen mode
[client]
port = 3306
socket = /app/mysql/8.0.46/run/mysql.sock

[mysql]
socket = /app/mysql/8.0.46/run/mysql.sock

[mysqld]
server_id = 1
user = mysql
port = 3306
bind_address = 0.0.0.0
skip_name_resolve = ON

socket = /app/mysql/8.0.46/run/mysql.sock
pid-file = /app/mysql/8.0.46/run/mysql.pid

basedir = /app/mysql/8.0.46/server
datadir = /app/mysql/8.0.46/data
tmpdir = /app/mysql/8.0.46/tmp

character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci

default_storage_engine = InnoDB
disabled_storage_engines = MyISAM,BLACKHOLE,FEDERATED,ARCHIVE

log-error = /app/mysql/8.0.46/log/mysql.err

log_bin = /app/mysql/8.0.46/binlog/mysql-bin
log_bin_index = /app/mysql/8.0.46/binlog/mysql-bin.index
log_replica_updates = ON

relay_log = /app/mysql/8.0.46/relaylog/mysql-relay-bin
relay_log_index = /app/mysql/8.0.46/relaylog/mysql-relay-bin.index
relay_log_recovery = ON

gtid_mode = ON
enforce_gtid_consistency = ON

innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

source_verify_checksum = ON
replica_sql_verify_checksum = ON
binlog_checksum = CRC32
Enter fullscreen mode Exit fullscreen mode

6. Назначение прав

chown -R mysql:mysql /app/mysql/8.0.46
chmod 750 /app/mysql/8.0.46
Enter fullscreen mode Exit fullscreen mode

7. Создание файла окружения env

Создаем файл окружения в директории /root

vim /root/mysql_8_0_46.env
Enter fullscreen mode Exit fullscreen mode
export MYSQL_VERSION=8.0.46
export MYSQL_BASE=/app/mysql/8.0.46
export MYSQL_HOME=/app/mysql/8.0.46/server
export MYSQL_CNF=/app/mysql/8.0.46/config/my.cnf
export MYSQL_SOCK=/app/mysql/8.0.46/run/mysql.sock
export MYSQL_PORT=3306

case ":$PATH:" in
  *":$MYSQL_HOME/bin:"*) ;;
  *) export PATH="$MYSQL_HOME/bin:$PATH" ;;
esac
Enter fullscreen mode Exit fullscreen mode

Загружаем переменные окружения

source /root/mysql_8_0_46.env
Enter fullscreen mode Exit fullscreen mode

8. Инициализация data-директории

"Важно"
Перед инициализацией директория /app/mysql/8.0.46/data должна быть пустой.

/app/mysql/8.0.46/server/bin/mysqld --defaults-file=/app/mysql/8.0.46/config/my.cnf --initialize --user=mysql --console
Enter fullscreen mode Exit fullscreen mode

"Временный пароль root"
После инициализации MySQL запишет временный пароль пользователя root
в error log.

sudo grep 'temporary password' /app/mysql/8.0.46/log/mysql.err
Enter fullscreen mode Exit fullscreen mode

9. Первый тестовый запуск MySQL

/app/mysql/8.0.46/server/bin/mysqld_safe --defaults-file=/app/mysql/8.0.46/config/my.cnf --user=mysql &
Enter fullscreen mode Exit fullscreen mode

10. Подключаемся к базе данных

mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock
Enter fullscreen mode Exit fullscreen mode

"Временный пароль"
Используйте временный пароль пользователя root, который был получен после инициализации.

11. Смена пароля пользователя root

После первого подключения необходимо заменить временный пароль пользователя root на постоянный

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwerty123!';
Enter fullscreen mode Exit fullscreen mode

12. Ручная остановка MySQL

/app/mysql/8.0.46/server/bin/mysqladmin -uroot -p -S /app/mysql/8.0.46/run/mysql.sock shutdown
Enter fullscreen mode Exit fullscreen mode

13. Создание systemd unit-файла

vim /etc/systemd/system/mysql_8_0_46.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=MySQL 8.0.46 Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql

ExecStart=/app/mysql/8.0.46/server/bin/mysqld_safe --defaults-file=/app/mysql/8.0.46/config/my.cnf --user=mysql

PIDFile=/app/mysql/8.0.46/run/mysql.pid

LimitNOFILE=65535
Restart=on-failure
RestartSec=5

PrivateTmp=false

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Регистрируем unit-файл и включаем сервис в автозагрузку

sudo systemctl daemon-reload
sudo systemctl enable mysql_8_0_46.service
Enter fullscreen mode Exit fullscreen mode

Запускаем сервис

systemctl start mysql_8_0_46.service
systemctl status mysql_8_0_46.service
Enter fullscreen mode Exit fullscreen mode

14. Проверка работы MySQL

systemctl status mysql_8_0_46.service
ss -lntp | grep 3306
mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock
Enter fullscreen mode Exit fullscreen mode
SHOW VARIABLES LIKE 'version';
Enter fullscreen mode Exit fullscreen mode

По любым вопросам пишите - linkedin

Top comments (0)