Как установить MySQL 8.1 в Debian/Ubunstu

Базы данных есть почти везде, где используются данные. Они играют ключевую роль в хранении и управлении данными. Базы данных можно определить как систематический набор данных, хранящихся в электронной форме в компьютерной системе. База данных обычно контролируется системой управления базами данных (СУБД). Когда данные, СУБД и все связанные с ними приложения объединяются, они образуют систему баз данных, которую часто сокращают до просто базы данных.

Существует несколько типов баз данных. Наиболее популярные из них:

  • Реляционные базы данных: данные хранятся в таблицах со строками и столбцами.
  • Объектно-ориентированные базы данных: здесь данные представлены в виде объектов, как в объектно-ориентированном программировании.
  • Распределенные базы данных: они состоят из двух или более файлов, хранящихся на разных компьютерах в одном физическом месте, разбросанных по разным местам.
  • Базы данных NoSQL. Их также называют нереляционными базами данных. Они позволяют хранить и манипулировать как неструктурированными, так и полуструктурированными данными.
  • Базы данных графов: они хранят данные, создавая связи между сущностями.
  • База данных документов/JSON: они используются для хранения и управления документированной информацией.

MySQL — реляционная база данных, разработанная шведской компанией MySQL AB в 1995 году. Основной целью создания этой базы данных было обеспечение эффективного и надежного способа управления данными. В 2008 году MySQL была приобретена Sun Microsystems. В 2009 году Oracle заключила окончательное соглашение и приобрела Sun Microsystems.

Благодаря нескольким разработкам и улучшениям последней версией MySQL стала версия 8.1. В этом выпуске имеется несколько функций и улучшений. Некоторые из них:

  • Захват вывода EXPLAIN FORMAT=JSON. В этом новом выпуске опция EXPLAIN FORMAT=JSONwith INTOбыла расширена. Это дает возможность сохранять EXPLAINвыходные данные в формате JSON в пользовательской переменной, где с ними можно работать с помощью функций MySQL JSON.
  • Сохраняются комментарии клиента: в предыдущих выпусках клиент MySQL по умолчанию удалял комментарии. В этом новом выпуске такие комментарии сохраняются по умолчанию.
  • Репликация MySQL: изменение SOURCE_RETRY_COUNT. В MySQL 8.1 значение по умолчанию для SOURCE_RETRY_COUNT опции CHANGE REPLICATION SOURCE TO установлено на 10.
  • Улучшено протоколирование процесса завершения работы, теперь добавлены сообщения о запуске и завершении работы MySQL-сервера, плагинов и компонентов.

Следующие шаги помогут вам установить MySQL 8.1 на Debian/Ubuntu.

1. Подготовьте свою систему

Начните с обновления системы и установки необходимых пакетов:

sudo apt update
sudo apt install wget vim -y

В системах Debian 12 вам понадобится libssl1.1 и mecab-ipadic-utf8, который можно установить из репозитория Debian 11, выполнив команды:

echo 'deb http://security.debian.org/debian-security bullseye-security main' | sudo tee -a /etc/apt/sources.list
sudo apt update && sudo apt install libssl1.1 mecab-ipadic-utf8

После установки отключите репозиторий.

sudo sed -i 's/^deb http:\/\/security.debian.org\/debian-security bullseye-security main/#&/' /etc/apt/sources.list

2. Установите пакеты MySQL 8.1 в Debian/Ubuntu.

Существует два основных способа установки MySQL 8.1 в Debian/Ubuntu. Эти методы:

  • Установите MySQL 8.1, используя репозиторий APT.
  • Установите MySQL 8.1, используя двоичные файлы

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

Способ 1. Установите MySQL 8.1, используя репозиторий APT.

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

Альтернативно вы можете использовать wget для получения пакета:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb

Теперь настройте репозиторий, выполнив команду:

sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb

Продолжайте и выберите свою систему: Debian/Ubuntu. (Поддержка Debian 12 отсутствует, поэтому вы можете просто использовать репозиторий Debian 11 в системах Debian 12)

После выбора правильной системы выберите сервер MySQL и опцию кластера.

Теперь выберите версию MySQL для установки. Здесь мы воспользуемся инновацией MySQL (MySQL 8.1).

Завершите настройку, выбрав «ОК».

После настройки репозитория мы можем легко установить MySQL 8.1 на Debian/Ubuntu. Сначала обновите индекс пакета:

sudo apt update -y

Теперь установите пакеты MySQL 8.1 с помощью команды:

sudo apt install mysql-client mysql-community-server mysql-server

Дерево зависимостей:

Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:libaio1 mysql-common mysql-community-client mysql-community-client-coremysql-community-client-plugins mysql-community-server-core
The following NEW packages will be installed:libaio1 mysql-client mysql-common mysql-community-client mysql-community-client-coremysql-community-client-plugins mysql-community-server mysql-community-server-coremysql-server
0 upgraded, 9 newly installed, 0 to remove and 128 not upgraded.
Need to get 35.3 MB of archives.
After this operation, 305 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Завершите установку, установив надежный пароль root, как показано ниже.

Способ 2. Установите MySQL 8.1 с помощью двоичных файлов.

Этот метод предполагает загрузку .DEBдвоичных файлов MySQL 8.1 со страницы загрузок MySQL. На этой странице выберите соответствующий двоичный файл для вашей системы.

Вы также можете получить двоичные файлы с помощью wget, как показано:

##For Ubuntu 22.04
wget https://dev.mysql.com/get/mysql-server_8.1.0-1ubuntu22.04_amd64.deb-bundle.tar##For Debian 11/Debian 12(with libssl 1.1 and mecab-ipadic-utf8 installed)
wget https://dev.mysql.com/get/mysql-server_8.1.0-1debian11_amd64.deb-bundle.tar

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

tar -xvf mysql-server_*

Теперь установите пакеты командой:

sudo dpkg -i mysql-{common,community-client-plugins,community-client-core,community-client,client,community-server-core,community-server,server}_*.deb

Примечание. Этот метод не предоставляет двоичные файлы для Ubuntu 20.04, в этом случае пользователи могут использовать метод 1. Пользователи Debian 12 могут использовать двоичные файлы Debian 11 после их установки, libssl 1.1как mecab-ipadic-utf8на шаге 1.

Завершите установку MySQL 8.1.

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

Подтвердите предоставленный пароль

Установите механизм аутентификации. Здесь мы установим механизм надежного шифрования пароля.

Проверьте, запущена ли служба:

$ systemctl status mysql
● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled)Active: active (running) since Thu 2023-09-28 06:55:01 EDT; 4min agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlMain PID: 3374 (mysqld)Status: "Server is operational"Tasks: 37 (limit: 4623)Memory: 390.7MCPU: 8.092sCGroup: /system.slice/mysql.service└─3374 /usr/sbin/mysqld

3. Защитите установку MySQL

После установки MySQL рекомендуется защитить его. Чтобы добиться этого, запустите:

sudo mysql_secure_installation

Продолжайте, как показано, укажите пароль root, который вы установили выше, и продолжайте.

Securing the MySQL server deployment.Enter password for user root: <Enter set root password>VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y There are three levels of password validation policy:LOWLength >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionaryfilePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
...
Change the password for root? ((Press y|Y for Yes, any other key for No): n
....
Remove anonymous users? (Press y|Y for Yes, any other key for No): y 
....
Disallow root login remotely? (Press y|Y for Yes, any other key for No): y 
....
Remove test database and access to it? (Press y|Y for Yes, any other key for No): y 
....
Reload privilege tables now? (Press y|Y for Yes, any other key for No): y 
Success.All done! 

4. Доступ и использование MySQL

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

mysql -u root -p

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

Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.1.0 MySQL Community Server - GPLCopyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

Теперь вы готовы использовать базу данных MySQL 8.1 по своему желанию. Чтобы проверить версию, запустите:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.1.0|
+-----------+
1 row in set (0.00 sec)

Создайте базу данных и пользователя

Чтобы создать базу данных и пользователя с разрешениями на доступ к ней, введите команды SQL со следующим синтаксисом:

CREATE DATABASE mydb;
CREATE USER 'mydbuser'@'%' IDENTIFIED BY 'DBUserStr0ngPassw0d';
GRANT ALL PRIVILEGES ON mydb.* TO 'mydbuser'@'%';FLUSH PRIVILEGES;
exit

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

mysql -u mydbuser -p

Покажите базы данных:

mysql> show databases;
+--------------------+
| Database|
+--------------------+
| information_schema |
| mydb|
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Создание таблиц и вставка данных

После подключения создайте таблицу в базе данных:

USE mydb;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50)
);

Добавляем данные в таблицу

INSERT INTO users (username) VALUES('JohnDoe'),('JaneSmith'),('BobJohnson');

Запросите данные:

mysql> SELECT * FROM users;
+----+------------+
| id | username|
+----+------------+
| 1 | JohnDoe|
| 2 | JaneSmith |
| 3 | BobJohnson |
+----+------------+
3 rows in set (0.00 sec)mysql> exit

5. Настройте MySQL для приема удаленных подключений.

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

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

В файле установите или добавьте адрес привязки, как показано:

# By default we only accept connections from localhost#bind-address= 127.0.0.1bind-address= 0.0.0.0

После внесения изменений сохраните файл и перезапустите службу:

sudo systemctl restart mysql

Разрешите службу через брандмауэр:

# Open MySQL port 3306 on the firewall
sudo ufw allow mysql# Allow specific addresses to connect to mysql
sudo ufw allow from <Remote_IP> to any port 3306

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

mysql -u <user> -h <database_server_ip> -p

Например:

mysql -u mydbuser -h 192.168.200.56 -p

Заключительные мысли

В этом руководстве представлены все шаги, необходимые для установки MySQL 8.1 на Debian/Ubuntu. Я надеюсь, что это сработало и для вас.

По материалам сайта computingforgeeks.com.