Как установить MySQL на Ubuntu 24

Чтобы установить MySQL на Ubuntu, нужен один пакет из репозитория самой Ubuntu: и в 24.04, и в 22.04 это MySQL 8.0. Ubuntu настраивает его чуть иначе, чем другие системы: у root нет пароля, и входит он через sudo. Ниже — почему так, как завести базу и пользователя для приложения и как аккуратно открыть доступ по сети.

Как установить MySQL на Ubuntu через apt

Обновите список пакетов и поставьте сервер. Он сразу запустится и будет подниматься после каждой перезагрузки.

sudo apt update sudo apt install -y mysql-server mysql --version systemctl status mysql --no-pager

В строке версии стоит Ver 8.0, а в состоянии службы — Active: active (running). Настройки лежат в /etc/mysql/, базы — в /var/lib/mysql/.

Как запустить mysql_secure_installation

Этот скрипт идёт вместе с MySQL и закручивает гайки на свежей установке. Он предлагает проверку сложности паролей (компонент VALIDATE PASSWORD), убирает анонимных пользователей, запрещает root входить с других машин и удаляет базу test. На каждый из этих вопросов отвечайте y.

sudo mysql_secure_installation

В Ubuntu скрипт пропускает пароль для root, потому что root входит через систему, и прямо об этом пишет: Skipping password set for root as authentication with auth_socket is used by default. Так и должно быть.

Старые сборки вместо этого останавливались на Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' и спрашивали по кругу. Нажмите Control-C и обновите систему командой: sudo apt upgrade Затем запустите скрипт снова.

Как входит root и откуда ERROR 1698

В MySQL из Ubuntu учётная запись root@localhost работает через плагин auth_socket: MySQL пускает системного root и больше никого, причём без пароля. Поэтому консоль MySQL открывают через sudo:

sudo mysql

Чтобы выйти из консоли, наберите exit. Учётные записи можно вывести и не открывая её:

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

В выводе рядом с root стоит auth_socket. Если войти под root без sudo, будет ERROR 1698 (28000): Access denied for user 'root'@'localhost'. Установка при этом не сломана. Для администрирования открывайте консоль через sudo, как выше, а каждому приложению заведите своего пользователя с паролем, как в следующем разделе.

Как создать базу данных и пользователя

Команды ниже создают базу app и пользователя app, которому в ней можно всё, но только в ней. Вместо choose-a-strong-password придумайте свой длинный пароль. Команды останутся в истории оболочки — если это важно, введите те же строки SQL в консоли MySQL.

sudo mysql -e "CREATE DATABASE app CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'app'@'localhost' IDENTIFIED BY 'choose-a-strong-password';" sudo mysql -e "GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';" mysql -u app -p app

Последняя команда спросит пароль и откроет базу app. Приложение подключается с теми же пользователем, паролем и базой к localhost, порт 3306.

Как осторожно открыть доступ по сети

Сразу после установки MySQL слушает только 127.0.0.1, и это самый безопасный вариант. Если приложение или программа для работы с базой стоит на другой машине, часто хватает SSH-туннеля, который ничего не открывает. Если прямое подключение всё же нужно, поменяйте bind-address в файле настроек сервера:

/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] bind-address = 0.0.0.0

Затем перезапустите MySQL, создайте пользователя для одного адреса и пропустите через брандмауэр только его. Вместо 198.51.100.7 подставьте IP машины, которая будет подключаться.

sudo systemctl restart mysql sudo mysql -e "CREATE USER 'app'@'198.51.100.7' IDENTIFIED BY 'choose-a-strong-password';" sudo mysql -e "GRANT ALL PRIVILEGES ON app.* TO 'app'@'198.51.100.7';" sudo ufw allow from 198.51.100.7 to any port 3306 proto tcp

Правило UFW защищает, только пока UFW включён: проверьте это командой: sudo ufw status Прежде чем включать его по SSH, выполните: sudo ufw allow OpenSSH На облачном сервере откройте порт 3306 и в брандмауэре провайдера — для того же единственного адреса. Никогда не заводите root и других пользователей с хостом '%' — это любой адрес.

Если MySQL не запускается или не пускает

  • ERROR 1698 (28000): Access denied for user 'root'@'localhost' — root входит только через систему. Откройте консоль так: sudo mysql
  • ERROR 1045 (28000): Access denied for user 'app'@'localhost' (using password: YES) — неверный пароль или пользователь заведён для другого хоста. Сверьтесь со списком пользователей: sudo mysql -e "SELECT user, host FROM mysql.user;"
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) — сервер не запущен. Причину покажут эти две команды: sudo journalctl -u mysql -n 50 sudo tail -n 50 /var/log/mysql/error.log Частая причина — кончилось место на диске, свободное место покажет: df -h
  • ERROR 1819 (HY000): Your password does not satisfy the current policy requirements — включена проверка паролей. Возьмите пароль длиннее, с большими и маленькими буквами, цифрами и символом.
  • Host '198.51.100.7' is not allowed to connect to this MySQL server — для этого адреса нет пользователя. Создайте его, как в разделе выше.

Если вы работаете и на Mac

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ

Сборка мусора в MacWashing находит кэш всех знакомых ей программ, в том числе спрятанный внутри их данных, а ещё журналы, мусор Xcode и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.

Бесплатная пробная версия · macOS 14 и новее

Вопросы и ответы

Как установить MySQL на Ubuntu?

И в Ubuntu 24.04, и в 22.04 MySQL 8.0 ставится из репозитория самой системы. Обновите список пакетов: sudo apt update Поставьте сервер: sudo apt install mysql-server Затем закрутите гайки: sudo mysql_secure_installation

Какой пароль у root в MySQL на Ubuntu?

Никакого. Root работает через auth_socket и входит через sudo. Приложениям нужен свой пользователь с паролем, а не root.

Где MySQL хранит данные и настройки?

Базы — в /var/lib/mysql/, настройки — в /etc/mysql/, параметры самого сервера — в /etc/mysql/mysql.conf.d/mysqld.cnf. Журнал ошибок — /var/log/mysql/error.log.