Как установить mysql на linux

Обновлено: 19.05.2024

В этом руководстве объясняется, как установить и защитить MySQL в Debian 10 из репозитория MySQL Apt .

Настройка репозитория MySQL

Чтобы добавить репозиторий MySQL APT в вашу систему, перейдите на страницу загрузки репозитория и загрузите пакет последней версии, используя следующую команду wget :

После завершения загрузки установите пакет выпуска как пользователь с привилегиями sudo :

Вам будет представлено меню конфигурации, из которого вы можете выбрать версию MySQL, которую хотите установить.

Предварительно выбран MySQL 8.0, если вы хотите установить MySQL 5.7, выберите MySQL Server & Cluster (Currently selected: mysql-8.0) и выберите предпочитаемую версию MySQL.

Мы собираемся установить MySQL версии 8.0. Выберите OK , нажав Tab и нажмите Enter (как показано на изображении выше).

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

Установка MySQL

Обновите список пакетов и установите пакет сервера MySQL, запустив:

Программа установки попросит вас установить пароль root MySQL. Не устанавливайте пароль сейчас (оставьте поле пустым), мы сделаем это в следующем разделе.

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

Обеспечение безопасности MySQL

Запустите команду mysql_secure_installation чтобы установить пароль root и повысить безопасность установки MySQL:

Вам будет предложено настроить VALIDATE PASSWORD PLUGIN который используется для проверки VALIDATE PASSWORD PLUGIN паролей пользователей MySQL. Существует три уровня политики проверки пароля: низкий, средний и надежный. Нажмите ENTER если вы не хотите устанавливать плагин проверки пароля.

В следующем запросе вам будет предложено установить пароль для пользователя root MySQL.

После того, как вы установите пароль root, сценарий также попросит вас удалить анонимного пользователя, ограничить доступ пользователя root к локальному компьютеру и удалить тестовую базу данных. Вы должны ответить «Д» (да) на все вопросы.

Подключение к серверу MySQL

Для взаимодействия с MySQL через терминал используйте клиент mysql который устанавливается как зависимость пакета сервера MySQL.

Если вы выбрали метод аутентификации по умолчанию для входа на сервер MySQL в качестве пользователя root:

В противном случае, если вы выбрали устаревший метод аутентификации для входа, введите:

Вам будет предложено ввести пароль root, который вы ранее установили при mysql_secure_installation сценария mysql_secure_installation . После ввода пароля вам будет представлена оболочка MySQL, как показано ниже:

Выводы

В этом руководстве вы узнали, как установить и защитить сервер MySQL на сервере Debian 10. Мы также показали вам, как подключиться к оболочке MySQL.

Если у вашего приложения нет особых требований, вам следует придерживаться MariaDB , системы баз данных по умолчанию в Debian 10.

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

Короткая версия установки очень проста: достаточно обновить индекс пакетов, установить пакет mysql-server , а затем запустить скрипт настройки безопасности.

Это руководство описывает процесс установки MySQL версии 5.7 на сервер с Ubuntu 18.04. Если вам необходимо обновить установленную ранее версию MySQL до версии 5.7, вы можете ознакомиться с руководством по обновлению MySQL до версии 5.7.

Необходимые условия

Перед тем, как начать следовать шагам, описанным в этом руководстве, вам необходимо настроить отдельный, не-рутовый (non-root) профиль пользователя на вашем сервере с Ubuntu 18.04. Вы можете сделать это используя нашу статью о первичной настройке сервера на Ubuntu 18.04.

Шаг 1 - Установка MySQL

По умолчанию в репозиторий пакетов APT в Ubuntu 18.04 включена только последняя версия MySQL. На момент написания этого руководства это MySQL 5.7.

Для установки этой версии обновите индекс пакетов apt командой:

Затем установите пакет:

Эта команда установит MySQL, но при этом вам не будет предложено задать пароль или внести какие-либо правки в конфигурацию. Поскольку это делает установку небезопасной, рассмотрим далее, как настроить установленную MySQL.

Шаг 2 - Настройка MySQL

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

Выполните скрипт безопасности командой:

В результате выполнения этого скрипта вам будет предложено внести изменения в настройки безопасности вашей MySQL. Сначала вам будет предложено установить плагин валидации паролей (Validate Password Plugin), который позволяет тестировать надёжность паролей MySQL. Далее вам предложат задать пароль для пользователя root вашей установки MySQL. Выберите надёжный пароль и введите его два раза.

Далее вы можете выбирать Y и нажимать ENTER для всех последующих вопросов. При этом будут удалены некоторые анонимные пользователи и тестовые базы данных, будет отключена возможность удалённого входа для root пользователей, после чего все внесённые изменения будут применены к вашей установке MySQL.

Для инициализации директории данных MySQL вам необходимо использовать mysql_install_db для версий меньше, чем 5.7.6, и mysqld --initialize для версии 5.7.6 и более поздних версий. При этом, если вы устанавливаете MySQL для Debian как описано на шаге 1, директория данных будет создана автоматически и вам нет необходимости что-то делать. Если вы при этом попытаетесь всё равно выполнить команду создания директории данных, вы увидите следующую ошибку:

Обратите внимание, несмотря на то, что вы задали пароль для пользователя root для MySQL, этот пользователь не настроен для аутентификации по паролю при подключении к оболочке (shell) MySQL. Вы можете изменить эту настройку на следующем шаге 3.

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

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

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

Далее проверьте, какой метод аутентификации используется для каждого из ваших пользователей MySQL:

В этом примере ваш пользователь root использует аутентификацию с помощью плагина auth_socket . Для изменения этой настройки на использование пароля используйте следующую команду ALTER USER . Не забудьте изменить password на ваш сильный пароль:

Далее выполните команду FLUSH PRIVILEGES , которая применит внесённые изменения:

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

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

В некоторых случаях бывает полезно использовать для входа в MySQL отдельного пользователя. Для создания такого пользователя войдите в оболочку MySQL:

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

Далее создайте нового пользователя и задайте для него надёжный пароль:

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

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

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

Теперь мы можем протестировать нашу установку MySQL.

Шаг 4 - Тестирование MySQL

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

Вы увидите вывод, похожий на этот:

Если MySQL не запущена, вы можете запустить её с помощью команды sudo systemctl start mysql .

Для дополнительной проверки вы можете попробовать подключиться к базе данных с помощью инструмента mysqladmin , который представляет собой клиент, позволяющий запускать административные команды. Например, эта команда приказывает подключиться к MySQL в качестве пользователя root ( -u root ), запросить пароль ( -p ) и вернуть версию.

Вы увидите вывод, похожий на этот:

Это означает, что MySQL запущена и работает.

Заключение

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

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

Проверяем, установлен ли MySQL сервер

Если установлен, шаги по установке можете пропустить, хотя ознакомиться я все же советую с ними.

Существуют следующие основные пакеты связанные с mysql:

  • mysql - клиент mysql
  • mysql-server - сервер mysql
  • mysql-devel - для разработки и подключения библиотек и хидеров mysql
  • mysql-connector-java - JDBC коннектор (используется, например, в EJBCA)

sudo yum install mysql mysql-server mysql-devel mysql-connector-java

Теперь надо установить сервер mysql на запуск в определенные runlevel‘ы (2, 3 и 5):

Если кто забыл соответствие цифрового значения runlevel‘а символьному:

Стартуем демон mysql:

Теперь пора настроить сервер. Начнем с пользователей.

Вот состояние таблицы user до начала действий с ней:

mysql -u root
> use mysql
> select host,user from user;

5 rows in set (0.00 sec)
> quit

Как видете, безопасность на уровне плинтуса. Хорошо хоть, что анонимного пользователя нет.

Для настройки базовых вещей в сервере, запустим настройку сервера через mysql_secure_installation. На время этой установки, пароль будет security. Ваш же пароль, как понимаете, должен отличаться.

Запустится скрипт, с запросами на то или иное действие. Вот ответы:

Skip root password for root
Мы еще не устанавливали пароль для root, поэтому при запуске скрипта и запросе пароля для root , просто нажмите Enter .

Install new password for root: security
А вот тут можно установить пароль для root

Do remove an anonymous user
На вопрос о том, удалить ли анонимного пользователя, отвечаем да

Do not disallow remote connections
Не запрещаем коннект к нашему северу с удаленных серверов (если, конечно, эта опция вам нужна, в другом случае, запретите ее)

Do remove a test database
Тестовая база нам не нужна - удаляйте ее

Do reload the privileges
Перегрузим привилегии для их активации

Теперь для всех root пользователей установлен пароль.

Если в ходе этой конфигурации вы не установили пароль для root , можете сделать это так:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('security');
SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD('security');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('security');

Если же вы не запускали конфигурацию через mysql_secure_installation или не хотите этого делать по каким-то другим причинам, следующие команды удалят any пользователей:

DROP USER ''@'localhost';
DROP USER ''@'localhost.localdomain';

Также, пароль для IPv6 localhost (@::1) можно установить таким образом:

Близится финал нашего действия. Осталось две вещи:

sudo iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

выставить кодировку UTF-8 по-умолчанию - файл /etc/my.cnf :

[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci

Выберите нужную вам версию MySQL. Если нужна самая последняя, то она представлена на этой же странице ниже.

Выбор версии MySQL для скачивания

Выбор версии MySQL для скачивания.

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

Выбор операционной системы для MySQL

Выбор операционной системы для MySQL.

Ниже будут представлены различные пакеты для загрузки. Самыми важными являются пакеты: mysql-community-client и mysql-community-server. Остальные пакеты могут пригодится в зависимости от ваших требований к серверу MySQL, тем не менее для избежания проблем с другими программами, которые работают с MySQL, я также рекомендую установить mysql-community-devel и mysql-community-common.

Выбираем пакет для установки и нажимаем кнопку Download.

Список пакетов доступных для скачивания

Список пакетов доступных для скачивания.

Перед скачиванием, сайт предлагает нам войти в личный кабинет или зарегистрироваться, но нам это не нужно, поэтому просто кликаем по ссылке ниже.

Ссылка на скачивания пакета MySQL

Ссылка на скачивания пакета MySQL.

Так как я использую ОС Centos 7 без графического интерфейса, то мне будет удобнее скачать пакеты с помощью утилиты wget передав в ее параметр скопированную ссылку на пакет.

Установка MySQL из скачанных пакетов.

Для установки скачанных пакетов, могут понадобится некоторые зависимости, для Centos 7 также рекомендуется установить пакеты net-tools и openssl-devel.
yum install net-tools openssl-devel

Установим все скачанные пакеты. Начинать лучше с пакета mysql-community-client, так как от него зависят все остальные.

rpm --install -vh mysql-community-client-8.0.13-1.el7.x86_64.rpm;
rpm --install -vh mysql-community-server-8.0.13-1.el7.x86_64.rpm;
rpm --install -vh mysql-community-devel-8.0.13-1.el7.x86_64.rpm;
rpm --install -vh mysql-community-common-8.0.13-1.el7.x86_64.rpm;

Если вы используете deb пакеты, то их можно установить с помощью одноименного менеджера пакетов, например:
deb --install -vh mysql-community-client-8.0.13-1.el7.x86_64.deb

Убедимся в успешности установки, проверив версию демона mysqld.

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