5
Juni
2023
Как переустановить MySQL сервер?
13:35

Как переустановить MySQL сервер?

5 Juni 2023 13:35

Необходимость в переустановке MySQL сервера возникает при обновлении его версии.

Зачем обновлять MySQL сервер

  • Главное отличие, кроме версии (8.0.33) - к ней можно установить последнюю версию ODBC connector. Так как нет проблем с зависимостями пакетов.

Требования к установке MS SQL

Для выполнения данной инструкции нужны:

1) Linux
2) пароль пользователя root операционной системы данного компьютера, либо Вы должны состоять в группе sudo, sudoers или wheels данного ПК (см. команда groups).
3) пароль пользователя root в системе управления базами данных MS SQL (но его можно сбросить - см. следующий раздел).
4) свободное место - около 0.5 Гбайт для базы данных.

Если пароль root в MySQL не известен или забыт

Следующие шаги помогут сбросить пароль root:

1) остановить Mysql

sudo service mysql stop

2) Запустить MySQL в безопасном монопольном режиме

sudo mkdir /var/run/mysqld
sudo chmod 1777 /var/run/mysqld;
sudo mysqld_safe --skip-grant-tables

Либо исправляем файл /etc/mysql/conf.d/mysql.cnf - удаляем комментарий # перед строчкой #skip-grant-tables
и перезапускаем сервис sudo service mysql start

Из другого окна терминала

sudo mysql -u root

Для MySQL 8.0 и выше выполняем команды mysql:

use mysql;
update user set authentication_string=CONCAT('*', UPPER(SHA1(UNHEX(SHA1('11111'))))) where User='root';
update user SET plugin="mysql_native_password" where User='root';
flush privileges;
quit

Завершаем первое окно (где работает команда sudo mysqld_safe --skip-grant-tables)
и затем выполняем завершение процесса mysqld:

sudo pkill mysqld  

Запуск службы:

sudo service mysql start

Проверка:

mysql -u root -p -h localhost 

11111

1) Резервное копирование баз данных (BackUp DB)

Официальная backup-and-recovery документация здесь.

Узнать имена баз данных:

mysql -u root -p -h localhost

show databases;

Выполняем резервное копирование (экспорт данных) из БД в текстовые файлы:

mysqldump -u root -p -h localhost primer > primer.sql
mysqldump -u root -p -h localhost test > test.sql
mysqldump -u root -p -h localhost db_1 > db_1.sql

Программа запросит пароль root для mysql. Вводим пароль 11111 (для root).

2) Удаление предыдущей установки MySQL

Удаляем mysql клиента:

sudo apt-get purge mysql-client mysql-client-8.0 mysql-client-core-8.0

После резервного копирования БД можно удалить mysql сервер по инструкции

sudo apt purge mysql-server mysql-common* mysql-server-5.7* mysql-server-8.0*

Удаляем конфиги

sudo rm -r /etc/mysql /var/lib/mysql /var/log/mysql

Чистим

sudo apt autoclean && sudo apt autoremove

При удалении сервера будет выведено окно с запросом об удалении БД - нужно согласиться.

3) Установка экземпляра новой версии MySQL сервера по инструкции для 'apt'

Официальная инструкция по установке mysql здесь.
Я выбрал вариант с APT - инструкция здесь

1) Загружаем пакет Repository Setup Package (размером 17 кБайт) в виде DEB-файла - не зависит от платформы
со страницы
https://dev.mysql.com/downloads/repo/apt/

Открываем DEB двойным щелчком мыши, или выполняем команду, например.

dpkg -i mysql-apt-config_0.8.25-1_all.deb

При запуске возникнет запрос, к какой ОС нужно добавить конфиг APT.

Linux Mint 21.1 Vera соответствует Ubuntu Jammy (22). Для других ОС выбор будет иной.

Отвечаем на вопросы (для графического способа gdebi или в dpkg - аналогично).

(Нажатие на изображение увеличивает картинку).

На вопрос "Add repository to supported server" - делаем выбор для своей версии ОС (Ubuntu / Debian) - у меня "ubuntu jammy"
debi

На следующем шаге я выбрал "MySQL tools and connectors"
debi2

На третьем шаге "Enable or disable MySQL tools and utilities" выбрал "Enabled", т.к. рабочая станция используется для разработки.
debi3

На последнем шаге выбрал пункт "Ok" для подтверждения корректных данных и завершения настройки пакета.
debi4

Обновляем репозитории в системе:

sudo apt-get update

Во время их обновления видно, что файлы берутся с сайта и "репы" http://repo.mysql.com/apt/ubuntu jammy InRelease

Продолжаю выполнять инструкцию по установке mysql:

Команда для установки пакетов MySQL Community server, необязательных пакетов и файлов плагина клиента MySQL

Сервер, необязательные пакеты mysql-common и плагин mysql-community-client-plugins предпочтительно ставить одной командой:

sudo apt-get install mysql-server mysql-common mysql-community-client-plugins

Задаём пароль root (нажмите на картинку для увеличения):
root
Выбираем нужный способ шифрования пароля (нажмите на картинку для увеличения):
root2

Служба mysql стартует после установки автоматически. Проверяем её работу:

sudo systemctl status mysql

Чтобы усилить безопасность, можно запретить удаленные подключения к mysql серверу

sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

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: n
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : n

... skipping.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n

... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

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

mysql -u root -p

и вводим пароль:

Поскольку mysql запущен и работает, в терминале будет выведено стандартное приглашение mysql>.

Пишем команды для создания баз данных:

create database primer;
use primer;
source primer.sql;

и т.д. по каждой БД.
Команда для выхода из клиента mysql:
quit

Проверка версии MySQL:

mysql --version

mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)

Разрешение подключения к MySQL через Firewall

Включаем ufw

sudo ufw enable

Если к машине предполагаются подключения извне к MySQL, разрешаем доступ к mysql серверу:

sudo ufw allow mysql

Если удаленные подключения извне localhost к MySQL не нужны, запрещаем удалённый доступ к mysql серверу:

sudo ufw deny mysql

Итог

Мы только что обновили MySQL до "MySQL Community Server"!
Подключаться к MySQL серверу можно с помощью различных программных интерфейсов, таких как MySQL ODBC connector, JDBC или Native MySQL или из PHP с помощью mysqli.



Verwandte Veröffentlichungen