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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

14. Проверка работы MySQL По любым вопросам пишите - linkedin Инструкция описывает установку 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 разных версий. "Важно" У каждого экземпляра должны быть собственные значения параметров, например: port, socket, datadir, server_id, а также отдельный systemd unit. "Проверка архива" Значение sha256sum должно совпадать с checksum, указанным на официальном сайте MySQL. После проверки checksum распаковываем архив в директорию /app/mysql/8.0.46/server Создаем файл окружения в директории /root Загружаем переменные окружения "Важно" Перед инициализацией директория /app/mysql/8.0.46/data должна быть пустой. "Временный пароль root" После инициализации MySQL запишет временный пароль пользователя root в error log. "Временный пароль" Используйте временный пароль пользователя root, который был получен после инициализации. После первого подключения необходимо заменить временный пароль пользователя root на постоянный Регистрируем unit-файл и включаем сервис в автозагрузку По любым вопросам пишите - linkedin Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Code Block

Copy

/app/mysql/8.0.35 /app/mysql/8.0.46 /app/mysql/8.4.0 /app/mysql/8.0.35 /app/mysql/8.0.46 /app/mysql/8.4.0 /app/mysql/8.0.35 /app/mysql/8.0.46 /app/mysql/8.4.0 dnf install -y libaio numactl-libs tar wget xz dnf install -y libaio numactl-libs tar wget xz dnf install -y libaio numactl-libs tar wget xz useradd -r -s /sbin/nologin mysql useradd -r -s /sbin/nologin mysql useradd -r -s /sbin/nologin mysql mkdir -p /app/mysql/8.0.46/{server,data,binlog,relaylog,log,tmp,run,config} mkdir -p /app/mysql/8.0.46/{server,data,binlog,relaylog,log,tmp,run,config} mkdir -p /app/mysql/8.0.46/{server,data,binlog,relaylog,log,tmp,run,config} 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 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 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 tar -xvf mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz -C /app/mysql/8.0.46/server --strip-components=1 tar -xvf mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz -C /app/mysql/8.0.46/server --strip-components=1 tar -xvf mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz -C /app/mysql/8.0.46/server --strip-components=1 vim /app/mysql/8.0.46/config/my.cnf vim /app/mysql/8.0.46/config/my.cnf vim /app/mysql/8.0.46/config/my.cnf [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 [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 [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 chown -R mysql:mysql /app/mysql/8.0.46 chmod 750 /app/mysql/8.0.46 chown -R mysql:mysql /app/mysql/8.0.46 chmod 750 /app/mysql/8.0.46 chown -R mysql:mysql /app/mysql/8.0.46 chmod 750 /app/mysql/8.0.46 vim /root/mysql_8_0_46.env vim /root/mysql_8_0_46.env vim /root/mysql_8_0_46.env 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 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 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 source /root/mysql_8_0_46.env source /root/mysql_8_0_46.env source /root/mysql_8_0_46.env /app/mysql/8.0.46/server/bin/mysqld --defaults-file=/app/mysql/8.0.46/config/my.cnf --initialize --user=mysql --console /app/mysql/8.0.46/server/bin/mysqld --defaults-file=/app/mysql/8.0.46/config/my.cnf --initialize --user=mysql --console /app/mysql/8.0.46/server/bin/mysqld --defaults-file=/app/mysql/8.0.46/config/my.cnf --initialize --user=mysql --console sudo grep 'temporary password' /app/mysql/8.0.46/log/mysql.err sudo grep 'temporary password' /app/mysql/8.0.46/log/mysql.err sudo grep 'temporary password' /app/mysql/8.0.46/log/mysql.err /app/mysql/8.0.46/server/bin/mysqld_safe --defaults-file=/app/mysql/8.0.46/config/my.cnf --user=mysql & /app/mysql/8.0.46/server/bin/mysqld_safe --defaults-file=/app/mysql/8.0.46/config/my.cnf --user=mysql & /app/mysql/8.0.46/server/bin/mysqld_safe --defaults-file=/app/mysql/8.0.46/config/my.cnf --user=mysql & mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwerty123!'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwerty123!'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwerty123!'; /app/mysql/8.0.46/server/bin/mysqladmin -uroot -p -S /app/mysql/8.0.46/run/mysql.sock shutdown /app/mysql/8.0.46/server/bin/mysqladmin -uroot -p -S /app/mysql/8.0.46/run/mysql.sock shutdown /app/mysql/8.0.46/server/bin/mysqladmin -uroot -p -S /app/mysql/8.0.46/run/mysql.sock shutdown vim /etc/systemd/system/mysql_8_0_46.service vim /etc/systemd/system/mysql_8_0_46.service vim /etc/systemd/system/mysql_8_0_46.service [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 [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 [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 sudo systemctl daemon-reload sudo systemctl enable mysql_8_0_46.service sudo systemctl daemon-reload sudo systemctl enable mysql_8_0_46.service sudo systemctl daemon-reload sudo systemctl enable mysql_8_0_46.service systemctl start mysql_8_0_46.service systemctl status mysql_8_0_46.service systemctl start mysql_8_0_46.service systemctl status mysql_8_0_46.service systemctl start mysql_8_0_46.service systemctl status mysql_8_0_46.service systemctl status mysql_8_0_46.service ss -lntp | grep 3306 mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock systemctl status mysql_8_0_46.service ss -lntp | grep 3306 mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock systemctl status mysql_8_0_46.service ss -lntp | grep 3306 mysql -u root -p -S /app/mysql/8.0.46/run/mysql.sock SHOW VARIABLES LIKE 'version'; SHOW VARIABLES LIKE 'version'; SHOW VARIABLES LIKE 'version';