Как установить 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 в файле настроек сервера:
[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 mysqlERROR 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 50sudo tail -n 50 /var/log/mysql/error.logЧастая причина — кончилось место на диске, свободное место покажет:df -hERROR 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 и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.
Бесплатная пробная версия · 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.