Linux ubuntu установка mysql

Установка MySQL в Ubuntu 20.04

MySQL – это открытая система управления базами данных, которая является частью стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Для управления данными реляционная система MySQL использует SQL (Structured Query Language).

Данный мануал поможет установить версию MySQL 8 на сервер Ubuntu 20.04. В результате вы получите рабочую БД, которую вы сможете использовать для хранения данных сайта или приложения.

Требования

Для работы вам понадобится сервер Ubuntu 20.04 с настроенным пользователем sudo и брандмауэром UFW. Все необходимые инструкции можно найти в мануале по начальной настройке сервера.

1: Установка MySQL

В Ubuntu 20.04 можно установить MySQL с помощью пакетного менеджера APT. На момент написания мануала в стандартном репозитории системы доступна версия MySQL 8.0.19. Прежде чем установить ее, обновите индекс локальных пакетов:

sudo apt update

Чтобы установить пакет mysql-server, введите:

sudo apt install mysql-server

Эта команда установит MySQL, но не предложит вам установить пароль или внести какие-либо изменения в настройки. На данный момент ваша установка не защищена, и это нужно исправить.

2: Настройка MySQL

Первым делом на свежей установке СУБД следует запустить встроенный скрипт безопасности. Он изменит некоторые стандартные параметры, заблокирует удалённый root-логин и удалит образцы.

Запустите этот сценарий:

После этого сценарий задаст вам ряд вопросов и на основе ваших ответов изменит конфигурацию СУБД. Сначала он предложит настроить Validate Password Plugin, который проверяет надежность вашего пароля.

Если вы решите настроить Validate Password Plugin, сценарий предложит выбрать уровень проверки пароля. Наивысший уровень можно включить, нажав 2; тогда ваш пароль должен будет включать минимум 8 символов, среди которых должны быть буквы в верхнем и нижнем регистре, цифры и специальные символы.

Securing the MySQL server deployment.
Connecting to MySQL using a blank 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:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

После настройки Validate Password Plugin сценарий предложит выбрать root-пароль MySQL. Введите надежный пароль и подтвердите его:

Please set the password for root here.
New password:
Re-enter new password:

Если вы включили Validate Password Plugin, сценарий оценит сложность вашего пароля согласно выбранному уровню. После этого сценарий уточнит, хотите ли вы оставить этот пароль или выбрать новый. Чтобы продолжить работу, не меняя пароль, нажмите у:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

В остальных случаях вы можете просто нажать Y и Enter, чтобы принять опции по умолчанию. Сценарий удалит анонимных пользователей и тестовую базу данных, отключит удаленный root логин и обновит правила, чтобы MySQL сразу же работал с новыми настройками.

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

3: Настройка аутентификации и привилегий (опционально)

В системах Ubuntu, которые используют MySQL 5.7 и старше, пользователь root по умолчанию проходит аутентификацию с помощью плагина auth_socket, а не с помощью пароля. Это повышает безопасность установки и во многих случаях упрощает работу с ней, но также может усложнить ситуацию, если вам нужно открыть доступ к пользователю какой-то внешней программе (например, phpMyAdmin).

Читайте также:  Pin configurator mac os

Чтобы использовать пароль для аутентификации root пользователя MySQL, вам необходимо переключить метод аутентификации с auth_socket на другой плагин, например на caching_sha2_password или mysql_native_password. Для этого откройте командную строку MySQL:

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

SELECT user,authentication_string,plugin,host FROM mysql.user;
+——————+————————————————————————+————————+————+

| user | authentication_string | plugin | host |

+——————+————————————————————————+————————+————+

| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |

| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| root | | auth_socket | localhost |

+——————+————————————————————————+————————+————+
5 rows in set (0.00 sec)

В нашем случае root-пользователь проходит аутентификацию по плагину auth_socket. Чтобы настроить его для парольной аутентификации, запустите команду ALTER USER.

Вместо password выберите надежный пароль. Имейте в виду: этот пароль заменит тот пароль, что вы выбрали в разделе 2.

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

Примечание: Данный оператор ALTER USER настраивает root-пользователя MySQL для аутентификации с помощью плагина caching_sha2_password. Согласно официальной документации MySQL, плагин caching_sha2_password рекомендуется использовать для аутентификации MySQL, поскольку он обеспечивает более безопасное шифрование паролей, чем старый, но все еще широко используемый mysql_native_password.

Однако многие приложения PHP – например, phpMyAdmin – не очень хорошо поддерживают caching_sha2_password. Если вы планируете использовать эту базу данных с приложением PHP, рекомендуем настроить аутентификацию root с помощью плагина mysql_native_password:

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

Затем запустите FLUSH PRIVILEGES, чтобы перезагрузить таблицы привилегий и применить новые настройки:

Проверьте метод аутентификации пользователей, чтобы убедиться, что root больше не поддерживает плагин auth_socket:

SELECT user,authentication_string,plugin,host FROM mysql.user;
+——————+————————————————————————+————————+————+

| user | authentication_string | plugin | host |

+——————+————————————————————————+————————+————+

| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |

| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |

| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |

+——————+————————————————————————+————————+————+
5 rows in set (0.00 sec)

Как видите, теперь корневой пользователь MySQL аутентифицируется с помощью caching_sha2_password. После этой проверки вы можете выйти из оболочки MySQL:

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

Примечание: Если у вас включена парольная аутентификация для пользователя root, как описано выше, для доступа к оболочке MySQL вы должны использовать другую команду. Предыдущая команда запустит клиент MySQL с правами обычного пользователя; а права администратора в базе данных вы получите только таким путем:

Создайте нового пользователя и выберите для него надежный пароль:

CREATE USER ‘8host’@’localhost’ IDENTIFIED BY ‘password’;

Затем предоставьте новому пользователю соответствующие привилегии. Например, с помощью этой команды вы можете предоставить ему привилегии на все таблицы в базе данных, а также право добавлять, изменять и удалять привилегии других пользователей:

GRANT ALL PRIVILEGES ON *.* TO ‘8host’@’localhost’ WITH GRANT OPTION;

Обратите внимание, на этом этапе вам не нужно снова запускать команду FLUSH PRIVILEGES. Она необходима только при изменении таблиц привилегий с помощью операторов INSERT, UPDATE или DELETE. Поскольку вы создали нового пользователя, а не меняли уже существующего, FLUSH PRIVILEGES здесь не нужна.

После этого выйдите из оболочки MySQL:

А сейчас давайте проверим установку MySQL.

4: Тестирование MySQL

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

systemctl status mysql.service

Вы увидите такой вывод:

mysql.service — MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: «Server is operational»
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

Если сервис MySQL почему-то не запущен, запустите его:

sudo systemctl start mysql

Еще можно проверить работу вашей СУБД, подключившись к MySQL с помощью инструмента mysqladmin. Это клиент, предназначенный для запуска команд администрирования.

Чтобы подключиться к MySQL как root (-u root), ввести пароль (-p) и запросить версию, используйте такую команду:

sudo mysqladmin -p -u root version

Эта команда вернет:

Читайте также:  Не могу восстановить компьютер windows 10

mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec
Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

Такой вывод значит, что MySQL работает.

Заключение

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

Читайте также:

Много полезной информации о MySQL вы найдете в официальной документации.

Источник

MySQL

Содержание

MySQL

Установка

Для установки MySQL запустите следующую команду из терминала:

В процессе установки у вас запросят пароль для пользователя root под MySQL.

Как только установка завершится, сервер MySQL запустится автоматически. Вы можете использовать следующую команду в терминале для проверки, что сервер MySQL запущен:

Когда вы запустите эту команду, ввы сможете увидеть что-то похожее на следующую строку:

Если сервер не работает, вы можете набрать следующую команду для его запуска:

Настройка

Вы можете отредактировать файл /etc/mysql/my.cnf для настройки основных параметров — файл журнала, номер порта и пр. Например, чтобы настроить MySQL на ожидание подключений от компьютеров в сети, измените параметр bind-address на IP адрес сервера:

После изменений в /etc/mysql/my.cnf сервис MySQL нужно перезагрузить:

Если вам потребовалось сменить пароль пользователя root в MySQL, введите в терминале:

Сервис MySQL будет остановлен и вас попросят ввести новый пароль.

Драйверы базы данных

Хотя конфигурация по умолчанию для MySQL, предоставляемая пакетами Ubuntu, имеет великолепную функциональность и работает достаточно хорошо, есть некоторые вещи, которые вы можете решить до того как продолжить.

MySQL разработан так, что позволяет хранить данные по-разному. Эти варианты относятся к драйверам (управляющим модулям — engines) как баз данных, так и хранилищ. Существует два основных драйвера, которые вам могут быть интересны: InnoDB и MyISAM. Драйверы хранилищ прозрачны (незаметны) конечным пользователям. MySQL управляет событиями по-разному на нижнем уровне, но независимо от того, какая система хранения данных используется, вы будете взаимодействовать с базой одним и тем же способом.

Каждый драйвер имеет свои преимущества и недостатки.

Хотя смешивание и связывание драйверов баз данных на уровне таблиц разрешается и может быть привлекательным, это снижает эффективность настройки производительности, которую вы смогли бы провести при разделении ресурсов между двумя системами вместо замешивания их в одно целое.

MyISAM более старая из двух. Она может быть быстрее InnoDB при определенных обстоятельствах и предпочтительна при рабочей нагрузке, ориентированной на чтение данных. Некоторые интернет приложения настроены на использование именно MyISAM (однако это не означает, что они будут медленнее под InnoDB). MyISAM также поддерживает тип данных FULLTEXT, который позволяет осуществлять очень быстрый поиск по большому количеству текстовых данных. Однако MyISAM поддерживает блокировку записи только на уровне таблиц. Это означает, что только один процесс может изменять данные в таблице в один момент времени. Поскольку некоторые приложения, использующие таблицу, могут масштабироваться (работать несколькими экземплярами — scales), это может стать серьезной помехой. Здесь также отсутствует журналирование, что может усложнить восстановление данных после сбоя. Следующая ссылка предоставляет некоторые соображения по использованию MyISAM в работающей базе данных.

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

Начиная MySQL 5.5 InnoDB является драйвером по умолчанию и настоятельно рекомендуется вместо MyISAM, если только у вас нет специфических потребностей, уникальных для этого драйвера.

Читайте также:  Homes and permissions in linux

Расширенные настройки

Создание настроенного файла my.cnf

Существует ряд параметров, которые могут быть указаны в файле настроек MySQL, что со временем позволит вам повысить производительность вашего сервера. Для начальной настройки вам может пригодиться Percona’s my.cnf generating tool. Этот инструмент позволит вам создать файл my.cnf более оптимизированный под специфические возможности вашего сервера и ваши требования.

Не меняйте ваш существующий файл my.cnf на созданный утилитой, если у вас уже загружены данные в вашу базу данных. Некоторые изменения в этом файле могут быть несовместимы, если вы поменяли то, как хранятся данные на диске, после чего вы не сможете запустить MySQL. Если вы все же решили это сделать и у вас есть данные в базе, вам потребуется выполнить mysqldump и загрузить данные повторно:

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

Как только файл выгрузки создан, остановите MySQL:

Теперь сохраните оригинальный файл my.cnf и замените его на новый:

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

Теперь все, что осталось — это импортировать ваши данные. Чтобы дать нам представление как идет процесс импорта, полезно использовать утилиту ‘Pipe Viewer’ (pv). Далее показано как установить и использовать pv для этого случая, но если вы не хотите ее использовать, просто замените pv на cat в соответствующей команде. Не обращайте внимание на время ETA (расчетное время окончания), генерируемое pv, поскольку оно основывается на среднем времени обработки каждой записи при сохранении в файл, однако скорость может сильно меняться от записи к записи при использовании mysqldumps:

Когда все завершится, это будет означать что все получилось!

MySQL Tuner

MySQL Tuner — это полезный инструмент, который подсоединяется к работающему MySQL и предлагает варианты как можно улучшить настройки для вашей рабочей нагрузки. Чем дольше работает сервер, тем лучше рекомендации предоставит mysqltuner. Для рабочего окружения подождите как минимум 24 часа прежде чем запускать утилиту. Вы можете установить mysqltuner из хранилища Ubuntu:

После установки запустите ее:

и ждите ее финального отчета. Верхняя секция предоставляет общую информацию а сервере баз данных, а нижняя часть содержит рекомендации по настройке, необходимые для изменения вашего my.cnf. Многие из них могут быть поправлены вживую на сервере без перезагрузки. Смотрите официальную документацию MySQL (указанную в разделе Ссылки) для перечня параметров, изменяемых «налету». Далее часть примерного отчета по работающей базе, который показывает, что можно извлечь некоторую пользу от увеличения размера кэша запросов:

Один финальный комментарий по настройке базы данных: Хотя мы можем утверждать что определенные настройки самые лучшие, производительность может изменяться от приложения к приложению. Например, что работает великолепно для WordPress, может оказаться не лучшим для Drupal, Joomla или проприетарных приложений. Производительность зависит от типов запросов, использования индексов, насколько эффективно спроектирована база данных и т.д. Вы можете посчитать полезным потратить некоторое время на поиск настроек базы данных под используемые вами приложения. Как только вы пройдете определенную точку, любые ваши изменения будут приводить к минимальным улучшениям и вам будет лучше либо заняться улучшением ваших приложений, либо масштабировать вашу базу данных, используя более производительное оборудование или добавляя зависимые сервера.

Ссылки

Смотрите домашнюю страницу MySQL для дополнительной информации.

Полная документация доступна в форматах как онлайн, так и оффлайн по ссылке MySQL Developers portal.

Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

Страница Apache MySQL PHP Ubuntu Wiki также содержит полезную информацию.

Источник

Оцените статью