Главная >> Инструкции >> Установка MySQL в Ubuntu 22.04

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

MySQL - популярная система управления базами данных с открытым исходным кодом. Несмотря на то, что в последнее время набирает популярность PostgreSQL и форк MySQL - MariaDB созданный разработчиком оригинальной MySQL, сама MySQL всё ещё остается популярной.

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


Содержание статьи

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

Для Ubuntu 22.04 доступна только версия MySQL 8. Версия 5.7 считается уже устаревшей и для неё пакеты в новой версии дистрибутива не собирались. Вы можете установить MySQL 8 из официальных репозиториев или же из репозитория разработчиков. На момент написания статьи там находятся одинаковые версии пакетов, но Ubuntu 22.04 только недавно вышла, к концу её срока поддержки ситуация может изменится.

Установка из официальных репозиториев

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

sudo apt update

Затем выполните такую команду для установки MySQL сервера и клиента:

sudo apt install mysql-server mysql-client

Установка из репозиториев разработчиков

Установка MySQL в Ubuntu 22.04 из репозиториев разработчиков немного сложнее. Сначала необходимо добавить этот репозиторий в систему. Для загрузите deb пакет с конфигурацией репозитория из официального сайта:

Сайт может предложить вам зарегистрироваться, но это не обязательно, просто нажмите кнопку No thanks, just start my download:

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

sudo dpkg -i ~/Загрузки/mysql-apt-config

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

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

sudo apt update

И установите MySQL:

sudo apt install mysql-server mysql-client

Настройка MySQL в Ubuntu

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

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

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

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

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

mysqladmin password -u root -p

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

mysql_secure_installation

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

Если же вы уже включили его и не знаете что делать дальше, посмотрите эту статью. Далее утилита спросит нужно ли менять пароль root. Тут тоже можно ответить n, так как пароль у вас уже установлен ранее:

На все остальные вопросы нужно отвечать утвердительно:

  • Remove anonymous users - удалить аноноимных пользователей
  • Disallow root login remotely - отключить удалённые подключения для root пользователя, это касается только удалённых подключений, подключения с localhost удалёнными не считаются.
  • Remove test database and access to it - удалить тестовую базу данных.
  • Reload privilege tables now - перезагрузить таблицу привелегий.

На этом всё. При такой настройке использовать только sudo для подключения к mysql из консоли нельзя. Если вы попытаетесь это сделать то получите ошибку Access Denied. Теперь, для того чтобы подключится к MySQL с помощью консольного клиента необходимо ввести пароль root заданный ранее:

mysql -u root -p

Как исправить ошибку SET PASSWORD has no significance for user root@localhost

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

SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

Что можно примерно перевести как: Выполнять метод SET PASSWORD для 'root'@'localhost' нет смысла потому что выбранный метод авторизации не поддерживает сохранение данных авторизации. Если вы хотите изменить параметры авторизации используйте ALTER USER.

Естественно, что метод авторизации unix_socket не поддерживает сохранение пароля, потому что он выполняет авторизацию не по паролю, а просто проверяет является ли текущий пользователь суперпользователем. Но и пропустить настройку пароля root если он не задан вы не можете, поэтому программа зациклится и не пустит вас дальше. Самый простой способ поправить это - использовать команду mysqladmin:

sudo mysqladmin password -u root -p

Если вы не хотите использовать mysqladmin, то можете сделать всё то же самое с помощью SQL запроса. Сначала необходимо подключится к MySQL и поменять метод авторизации и заодно пароль:

sudo mysql

В окружении SQL выполните такую команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ваш_пароль';

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

exit;

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

Обратите внимание, что теперь вы не сможете подключится к mysql через sudo без пароля, так как теперь используется метод авторизации по паролю. Если вы хотите вернуть всё как было, после выполнения mysql_secure_installation, подключитесь к MySQL используя пароль и выполните:

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

Как удалить MySQL в Ubuntu

Удалить MySQL в Ubuntu 22.04 довольно просто. Если вы хотите просто удалить пакет, оставив конфигурацию используйте команду:

sudo apt remove mysql-server mysql-client

Если же вы хотите полностью удалить MySQL используйте команду purge:

sudo apt purge mysql-server mysql-client

Выводы

В этой статье мы рассмотрели как установить MySQL в Ubuntu 22.04, а также как выполнить первоначальную настройку и избежать возможных проблем.

23 комментария к “Установка MySQL в Ubuntu 22.04”

  1. добрый день,
    спасбио за статью!
    у меня вместо:
    mysql> SELECT user,host,password FROM mysql.user;

    сработало:
    mysql> SELECT user, host, authentication_string FROM mysql.user;
    +------------------+-----------+-------------------------------------------+
    | user | host | authentication_string |
    +------------------+-----------+-------------------------------------------+
    | root | localhost | *6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | debian-sys-maint | localhost | *8A2ECED366D879D5A1C2F9FD7BF080C2584129DB |
    | a | localhost | *464719AB5EB2E5CCC904977466497009634378D6 |
    +------------------+-----------+-------------------------------------------+
    5 rows in set (0,00 sec)
    и видно что есть еще служебные пользователи, а зачем они?

    Ответить
  2. Удаление БД не получается. Коррекно удаление будет командами ниже:

    sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
    sudo rm -rf /etc/mysql /var/lib/mysql
    sudo apt-get autoremove
    sudo apt-get autoclean

    Ответить
  3. Добрый день! Подскажите, после этого - Дальше наберите Y чтобы установить пароль root: Чтобы я не вводил пишет:
    ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded
    Enter current password for root (enter for none):

    Ответить
    • Нашел ответ в интернете: https://www.versatilewebsolutions.com/blog/2015/05...
      Вкратце:
      1.Находим файл конфигураций my.cnf в каталоге /etc/mysql/ , и редактируем его - добавляем в самом низу файла
      [mysqld]
      plugin-load-add = auth_socket.so
      и сохраняем файл(С этим возникнут проблемы если делать это через Nautilus тем же geditом. В терминале можно ввести
      gksu gedit /путь/к/папке/с_файлом/файл
      предварительно выполнив sudo apt install gksu, если пакет gksu неустановлен, подробнее тут: https://losst.pro/kak-redaktirovat-fajly-v-ubuntu
      2.Перезагружаем mysql командой
      sudo systemctl restart mysql.service
      3.Пробуем зайти в mysql без ввода пароля к mysql, вводим пароль только на требование системы(sudo)
      sudo mysql -u root
      После этих действий у меня все заработало!!!

      Ответить
  4. Спасибо, что расписано по шагам!
    Но мне не повезло: "Вы должны увидеть зеленую надпись Active Running и версию программы, которую устанавливали." - зеленая надпись есть, версии нет.
    И при установке не было фиалетового экрана, как на скриншотах, и вопросов про рутовый пароль. Соответственно, споткнулся на пароле в конфигурационном скрипте: предыдущий не задан, а пустой не принимает. Пойду гуглить и курить мануалы...

    Ответить
  5. Установил MySQL на ubuntu server, создал пользователя user со всеми привелегиями. Пытаюсь удаленно к нему подключиться командой mysql -h 192.168.1.25 -u user -p выходит предложение ввести пароль. Ввожу пароль и выскакивает ошибка ERROR 2003 (HY000) Can't connect to MySQL server on '192.0168.1.25' (10060). Почему удаленно не подключается - не могу понять?

    Ответить
  6. Всем спасибо. Уже разобрался. Надо настроить iptables для брандмауэра.
    Вот, может кому пригодится для удаленного подключения к серверу:

    sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
    sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
    sudo iptables-save

    и перезагрузить сервер mysql
    sudo /etc/init.d/mysql restart

    Ответить
  7. добрый день.
    при установке версии 5.7 по вашей инструкции на убунту 20.04, после выбора ОС Ubuntu 18.04 - bionic, MySQL Server and Cluster был предложен версии 8.0 - выбрал ее. на следующем шаге появилась возможность выбрать mysql 5.7. после подтверждения выбора установка вернулась к выбору MySQL product - уже с возможностью выбора MySQL Server and Cluster 5.7. Выбрал. И здесь установка зациклилась на этих двух шагах - выбор продукта (выбираю MySQL Server and Cluster 5.7) и выбор server version (выбираю mysql-5.7). Как быть?

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

    Ответить
  9. Короче проще вернуться на Ubuntu 18.04 и не парить себе мозги, зачем разработчики впихнули восьмую версию мне не понятно.

    Ответить
  10. Спасибо за подробную инструкцию!
    После установки mysql и до запуска mysql_secure_installation необходимо в консоли mysql выполнить следующую команду:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'newpassword';

    В противном случае будет вылетать ошибка:
    SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server

    Ответить
  11. sudo apt install mysql-server mysql-client

    Непонятно куда вводить такие команды в ОС Ubuntu, пожалуйста разъясните.
    С уважением. Александр

    Ответить
  12. к сожалению не удалость идти по указанным шагам т к они не соответствовали предлагаемым загрузкой а на одном из шагов не удалось идти дальше . Установка зависла на засветке 6-28.28.28. Отправил информацию. Буду пробовать еще . Но если я пишу программу то стараюсь максимум избавить клиента вмешиваться в установку только предлагая ему при необходимости отвечать да или нет. И надоел этот инглиш в русскоязычной ОС. я бы мог отказаться от mysql. Неужели до сих пор нет русскоязычного
    варианта для создания СУБД? С УВАЖЕНИЕМ.....

    Ответить
  13. Зачем нужен шаг "mysql_secure_installation" (Linux Ubuntu).

    В официальной документации Oracle есть такое отступление (https://dev.mysql.com/doc/refman/8.2/en/linux-installation-apt-repo.html):

    (оригинал)

    Important

    Make sure you remember the root password you set. Users who want to set a password later can leave the password field blank in the dialogue box and just press Ok; in that case, root access to the server will be authenticated by Section 6.4.1.10, “Socket Peer-Credential Pluggable Authentication” for connections using a Unix socket file. You can set the root password later using the program mysql_secure_installation.

    (перевод)

    Важно!

    Убедитесь, что вы помните установленный вами пароль root. Пользователи, которые хотят установить пароль позже, могут оставить поле пароля пустым в диалоговом окне и просто нажать «ОК»; в этом случае root-доступ к серверу будет аутентифицирован в соответствии с разделом 6.4.1.10, «Подключаемая аутентификация одноранговых учетных данных сокета» для соединений с использованием файла сокета Unix. Вы можете установить пароль root позже с помощью программы mysql_secure_installation.

    Таким образом, получается, что при установке сервера шаг "mysql_secure_installation" нужно пропускать, если в терминале Linux или в Windows, с помощью автоматизированного пакета установки, пароль был задан на самом этапе установки.

    На мой взгляд, это важно понимать больше пользователям Linux, т.к. следующим шагом по официальной инструкции должна быть инициализация папки с базой(ами) данных (https://dev.mysql.com/doc/refman/8.2/en/data-directory-initialization.html) командами --initialize или --initialize-insecure, на выбор которых также влияет факт наличия пароля, который возможно установить для root на этапе установки сервера БД.

    Эта информация отсутствует в статье admin'а, поэтому решил дополнить. Насколько я понимаю, без инициализации папки хранения баз данных ничего работать не будет, поскольку в этой же папке, по крайней мере в Windows-версии, хранится также schema или схема базы данных (https://ru.wikipedia.org/wiki/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85).

    Ответить

Оставьте комментарий