Пошаговая установка MySQL на Ubuntu
Введение
MySQL — это система управления базами данных с открытым исходным кодом, которая обычно устанавливается в составе популярного стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Она реализует реляционную модель и использует язык структурированных запросов (более известный как SQL) для управления своими данными.
Это руководство по установке MySQL на Ubuntu обеспечивает выполнение безопасных и готовых к работе в производственной среде шагов от начала до конца.
Основные выводы
-
Быстрая установка MySQL: Обновите индекс пакетов и выполните
sudo apt install mysql-server, чтобы установить MySQL из официальных репозиториев Ubuntu. Это автоматически настроит и запустит службу MySQL. Проверьте, что MySQL работает, с помощьюsudo systemctl status mysql. Эти простые команды позволят вам за несколько минут получить работающий сервер базы данных на Ubuntu. -
Защита и настройка аккаунта root: Используйте
sudo mysqlдля доступа к оболочке MySQL, затемALTER USER, чтобы задать надежный пароль для аккаунта root. Выполнитеsudo mysql_secure_installation, чтобы удалить ненадежные параметры по умолчанию, отключить удаленный доступ для root и применить политики безопасности пароля. Эти шаги необходимы для защиты вашей базы данных от несанкционированных пользователей и угроз безопасности. -
Создайте отдельного пользователя: После установки создайте нового пользователя MySQL для ваших приложений с помощью команд
CREATE USERиGRANT. Не используйте учетную запись root для повседневных задач. Отдельный пользователь с правами только для вашего приложения снижает риск случайных изменений и повышает общую безопасность базы данных. -
Управление сервисом MySQL: Используйте
sudo systemctl start mysqlдля запуска,sudo systemctl stop mysqlдля остановки иsudo systemctl restart mysqlдля перезапуска сервиса MySQL по мере необходимости. Чтобы MySQL всегда запускался после перезагрузки, включите его с помощьюsudo systemctl enable mysql. Регулярно проверяйте статус сервиса и журналы, чтобы ваша база данных оставалась надежной и доступной. -
Настройка брандмауэра UFW: По умолчанию MySQL слушает только localhost, блокируя удалённые подключения. Если вам нужен удалённый доступ, ограничьте его доверенными IP с помощью
sudo ufw allow from <YOUR_IP> to any port 3306. Всегда избегайте открытия порта 3306 для всего интернета — это сохраняет вашу базу данных в безопасности от несанкционированного доступа и атак методом подбора. -
Простое включение при загрузке: Интересуетесь, как настроить MySQL для автозапуска при загрузке Ubuntu? Используйте
sudo systemctl enable mysql, чтобы база данных автоматически запускалась после каждой перезагрузки, обеспечивая работу ваших приложений без ручного вмешательства.
В этом руководстве будет показано, как установить MySQL версии 8.0 на сервер Ubuntu (проверено на версиях 22.04 и новее). После его выполнения у вас будет рабочая реляционная база данных, которую вы сможете использовать для создания вашего следующего веб-сайта или приложения.
Разверните базу данных MySQL в один клик с помощью управляемых баз данных Linux-Console.net. Позвольте Linux-Console.net позаботиться о масштабировании, обслуживании и обновлениях вашей базы данных.
Предварительные требования
Чтобы следовать этому руководству, вам понадобится:
- Сервер Ubuntu (22.04 или новее, x86_64) с пользователем sudo без прав root и доступом по SSH. При необходимости сначала настройте это с помощью Руководства по первоначальной настройке сервера для Ubuntu.
- Сеть + доступ APT. Убедитесь, что есть исходящий доступ к репозиториям Ubuntu; предварительно выполните
sudo apt update && sudo apt upgrade -y. - Брандмауэр настроен с помощью UFW. Разрешите SSH; по умолчанию держите MySQL доступным только локально. Если позже потребуется удаленный доступ, вы добавите правило с ограничением по IP для порта 3306.
- Доступность порта. Подтвердите, что никакая другая служба не использует 3306 (
sudo ss -lntp | grep 3306 || true). - Системные ресурсы. Минимум ~1 ГБ ОЗУ и 1 ГБ свободного дискового пространства для данных и журналов MySQL (больше для производственных нагрузок).
- Синхронизация времени + базовые инструменты. Включите синхронизацию системного времени (
systemd-timesyncd) и обеспечьте наличие редакторов/инструментов для работы с журналами (например,nano,less,journalctl). - Резервное копирование/окно обслуживания (при обновлении или удалении). Выполните резервное копирование существующих баз данных и спланируйте время простоя перед внесением изменений, которые могут повлиять на работающие сервисы.
Примечание: Этот учебник протестирован и совместим с Ubuntu 22.04 LTS, Ubuntu 24.04 LTS и Ubuntu 25.04. Все команды и настройки работают на этих версиях с минимальными различиями, отмеченными там, где это применимо.
Шаг 1 — Как установить MySQL на Ubuntu
С учетом выполнения всех предварительных условий, начните с установки MySQL из репозиториев APT Ubuntu. Этот подход является быстрым, стабильным и поддерживаемым на Ubuntu (22.04 и новее), поэтому вы можете получить рабочий сервер без дополнительных репозиториев или ручной сборки. В следующих нескольких командах вы установите пакет сервера, убедитесь, что служба работает локально, и подготовите систему для безопасной настройки на следующем этапе.
В этом разделе приведены инструкции по установке MySQL на Ubuntu (22.04 и более поздние версии) с использованием APT, чтобы у вас был запущенный сервер базы данных, готовый к настройке. Вы узнаете, как установить MySQL Server на Ubuntu и убедиться, что служба активна, закладывая основу для безопасного и функционального развертывания.
В современных версиях Ubuntu (22.04 и более поздние) вы можете установить MySQL с использованием репозитория пакетов APT. На момент написания этой статьи версия MySQL, доступная в стандартном репозитории Ubuntu, относится к серии MySQL 8.x (на Ubuntu 22.04 и 24.04). Точная версия может различаться в зависимости от выпуска вашей Ubuntu. Этот процесс охватывает установку MySQL на Ubuntu и поможет вам установить сервер MySQL эффективно и безопасно.
Чтобы установить его, обновите индекс пакетов на вашем сервере, если вы не делали этого недавно:
sudo apt update
Затем установите пакет mysql-server:
sudo apt install mysql-server
Убедитесь, что сервер запущен, используя команду systemctl start:
sudo systemctl start mysql.service
Эти команды установят и запустят MySQL, но не предложат вам установить пароль или внести какие-либо другие изменения в конфигурацию. Поскольку это оставляет вашу установку MySQL небезопасной, мы разберём это дальше.
Для справки вы можете ознакомиться с официальной документацией по установке MySQL, чтобы понять доступные методы установки и примечания к версиям.
Шаг 2 — Как настроить MySQL на Ubuntu
Здесь вы настроите параметры безопасности и зададите пароль root для MySQL на Ubuntu, чтобы защитить вашу базу данных от несанкционированного доступа. Этот шаг крайне важен для укрепления вашей установки MySQL и обеспечения доступа к данным только доверенным пользователям.
Для новых установок MySQL рекомендуется запустить включённый в систему управления базами данных скрипт безопасности. Этот скрипт изменяет некоторые менее безопасные настройки по умолчанию, такие как запрет удалённых входов под пользователем root и удаление примерных пользователей. Важно отметить, что вы также настроите пароль пользователя root MySQL на Ubuntu, что имеет ключевое значение для безопасности базы данных.
Предупреждение: Начиная с июля 2022 года при запуске скрипта mysql_secure_installation без дополнительной настройки возникнет ошибка. Причина в том, что этот скрипт попытается установить пароль для учетной записи root MySQL, однако по умолчанию на установках Ubuntu эта учетная запись не настроена для подключения с использованием пароля.
В Ubuntu 24.04 поведение по умолчанию такое же, как и в 22.04: учетная запись root использует auth_socket. Настройте аутентификацию перед запуском mysql_secure_installation.
До июля 2022 года этот скрипт тихо завершал работу после попытки установить пароль для аккаунта root и продолжал выполнение остальных запросов. Однако на момент написания этого текста скрипт возвращает следующую ошибку после того, как вы введете и подтвердите пароль:
... Failed! Error: 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. New password:
Это приведет скрипт в рекурсивный цикл, из которого вы сможете выйти только закрыв окно терминала.
Поскольку скрипт mysql_secure_installation выполняет ряд других действий, полезных для обеспечения безопасности вашей установки MySQL, рекомендуется запускать его перед началом использования MySQL для управления данными. Однако чтобы избежать попадания в этот рекурсивный цикл, вам сначала нужно настроить способ аутентификации пользователя root MySQL.
Сначала откройте командную строку MySQL:
sudo mysql
Затем выполните следующую команду ALTER USER, чтобы изменить метод аутентификации пользователя root на метод, использующий пароль. В следующем примере метод аутентификации изменяется на mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
После внесения этого изменения выйдите из командной строки MySQL:
exit
После этого вы можете без проблем запустить скрипт mysql_secure_installation.
Запустите скрипт безопасности с sudo:
sudo mysql_secure_installation
Это приведет вас через серию запросов, где вы сможете внести некоторые изменения в параметры безопасности вашей установки MySQL. Первый запрос спросит, хотите ли вы настроить плагин Validate Password, который может использоваться для проверки надежности паролей новых пользователей MySQL перед их признанием допустимыми.
Если вы решите установить плагин Validate Password, любой создаваемый вами пользователь MySQL, который аутентифицируется с помощью пароля, будет обязан иметь пароль, соответствующий выбранной вами политике:
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
Независимо от того, решите ли вы установить плагин проверки пароля, следующим шагом будет установка пароля для пользователя MySQL root. Введите и затем подтвердите надежный пароль по вашему выбору:
Please set the password for root here. New password: Re-enter new password:
Обратите внимание, что даже если вы установили пароль для пользователя root MySQL, этот пользователь в настоящее время не настроен на аутентификацию с паролем при подключении к оболочке MySQL.
Если вы использовали плагин проверки пароля (Validate Password Plugin), вы получите отзыв о надежности вашего нового пароля. Затем скрипт спросит, хотите ли вы продолжить с введенным паролем или ввести новый. Предполагая, что вас устраивает надежность введенного пароля, введите Y, чтобы продолжить выполнение скрипта:
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 и изменить метод аутентификации пользователя root обратно на значение по умолчанию, auth_socket. Чтобы аутентифицироваться как пользователь MySQL root с помощью пароля, выполните следующую команду:
mysql -u root -p
Затем вернитесь к использованию метода аутентификации по умолчанию с помощью этой команды:
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
Это будет означать, что вы снова сможете подключиться к MySQL как пользователь root с помощью команды sudo mysql.
После завершения выполнения скрипта ваша установка MySQL будет защищена. Теперь вы можете перейти к созданию отдельного пользователя базы данных с помощью клиента MySQL.
Шаг 3 — Как создать отдельного пользователя MySQL и назначить привилегии
В этом разделе объясняется, как создать пользователя MySQL без прав root с минимальными привилегиями, необходимыми для приложений, что повышает безопасность и управляемость. Создавая отдельных пользователей, вы избегаете использования мощной учетной записи root для повседневных операций.
После установки MySQL создаёт учетную запись пользователя root, которую вы можете использовать для управления своей базой данных. Этот пользователь имеет полные привилегии на сервере MySQL, что означает полный контроль над каждой базой данных, таблицей, пользователем и так далее. Поэтому лучше избегать использования этой учетной записи за пределами административных функций. В этом шаге описано, как использовать пользователя MySQL root для создания новой учетной записи пользователя и предоставления ей привилегий.
В системах Ubuntu, использующих MySQL 5.7 (и более поздние версии), пользователь MySQL root по умолчанию настроен на аутентификацию с помощью плагина auth_socket, а не с паролем. Этот плагин требует, чтобы имя пользователя операционной системы, вызывающего клиент MySQL, совпадало с именем пользователя MySQL, указанным в команде, поэтому необходимо запускать mysql с привилегиями sudo, чтобы получить доступ к пользователю MySQL root:
sudo mysql
Примечание: Если вы устанавливали MySQL по другому руководству и включили проверку пароля для root, вам нужно использовать другую команду для доступа к оболочке MySQL. Следующая команда запустит ваш клиент MySQL с обычными пользовательскими правами, и вы получите права администратора в базе данных только после аутентификации:
mysql -u root -p
Как только вы получите доступ к командной строке MySQL, вы можете создать нового пользователя с помощью инструкции CREATE USER. Общий синтаксис выглядит следующим образом:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
После CREATE USER вы указываете имя пользователя. Сразу за этим следует знак @, а затем имя хоста, с которого этот пользователь будет подключаться. Если вы планируете использовать этого пользователя только локально с вашего сервера Ubuntu, можете указать localhost. Заключать имя пользователя и хост в одинарные кавычки не всегда обязательно, но это может помочь избежать ошибок.
У вас есть несколько вариантов при выборе плагина аутентификации пользователя. Ранее упомянутый плагин auth_socket может быть удобен, поскольку он обеспечивает высокую безопасность без необходимости для действительных пользователей вводить пароль для доступа к базе данных. Однако он также запрещает удалённые подключения, что может усложнить работу, когда внешние программы должны взаимодействовать с MySQL.
В качестве альтернативы вы можете полностью опустить часть синтаксиса WITH authentication_plugin, чтобы пользователь проходил аутентификацию с помощью стандартного плагина MySQL, caching_sha2_password. Документация MySQL рекомендует этот плагин, caching_sha2_password, для пользователей, которые хотят входить в систему с помощью пароля, благодаря его высоким показателям безопасности.
Выполните следующую команду, чтобы создать пользователя, который аутентифицируется с помощью caching_sha2_password. Обязательно замените sammy на желаемое имя пользователя, а password — на надёжный пароль по вашему выбору:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Примечание: Известна проблема с некоторыми версиями PHP, которая вызывает сбои с caching_sha2_password. Если вы планируете использовать эту базу данных с PHP-приложением — например, phpMyAdmin — вы можете создать пользователя, который будет аутентифицироваться с использованием старого, но всё ещё безопасного, плагина mysql_native_password:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Если вы не уверены, вы всегда можете создать пользователя, который аутентифицируется с помощью caching_sha2_password, а затем позже изменить его с помощью этой команды:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
После создания нового пользователя вы можете предоставить ему соответствующие привилегии. Общий синтаксис для предоставления привилегий пользователю выглядит следующим образом:
GRANT PRIVILEGE ON database.table TO 'username'@'host';
Значение PRIVILEGE в этом примере синтаксиса определяет, какие действия пользователь может выполнять в указанной database и table. Вы можете предоставить несколько привилегий одному пользователю в одной команде, разделяя их запятыми. Также вы можете предоставить пользователю привилегии глобально, введя звездочки (*) вместо имен базы данных и таблицы. В SQL звездочки являются специальными символами, используемыми для обозначения «всех» баз данных или таблиц.
Для наглядности следующая команда предоставляет пользователю глобальные привилегии на CREATE, ALTER и DROP баз данных, таблиц и пользователей, а также возможность INSERT, UPDATE и DELETE данных из любой таблицы на сервере. Она также дает пользователю возможность выполнять запросы данных с помощью SELECT, создавать внешние ключи с помощью ключевого слова REFERENCES и выполнять операции FLUSH с привилегией RELOAD. Однако вы должны предоставлять пользователям только те разрешения, которые им действительно нужны, поэтому не стесняйтесь при необходимости корректировать привилегии своего пользователя.
Полный список доступных привилегий можно найти в официальной документации MySQL.
Выполните этот оператор GRANT, заменив sammy на имя вашего пользователя MySQL, чтобы предоставить эти привилегии вашему пользователю:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Обратите внимание, что это утверждение также включает WITH GRANT OPTION. Это позволит вашему пользователю MySQL предоставлять любые права, которые у него есть, другим пользователям системы.
Внимание: Некоторые пользователи могут захотеть предоставить своему пользователю MySQL привилегию ALL PRIVILEGES, что обеспечит им широкие права суперпользователя, аналогичные привилегиям пользователя root, как показано ниже:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Такие обширные привилегии не следует предоставлять легкомысленно, так как любое лицо с доступом к этому пользователю MySQL будет иметь полный контроль над каждой базой данных на сервере.
После этого рекомендуется выполнить команду FLUSH PRIVILEGES. Это освободит всю память, которую сервер кэшировал в результате предыдущих команд CREATE USER и GRANT:
FLUSH PRIVILEGES;
Затем вы можете выйти из клиента MySQL:
exit
В будущем, чтобы войти как новый пользователь MySQL, вы будете использовать команду, подобную следующей:
mysql -u sammy -p
Флаг -p заставит клиент MySQL запросить у вас пароль пользователя MySQL для аутентификации.
Наконец, давайте протестируем установку MySQL.
Шаг 4 — Как протестировать MySQL
Этот шаг проверяет установку MySQL, проверяя её статус и выполняя простые операции, чтобы убедиться, что она работает правильно. Вы подтвердите, что служба 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 Mon 2022-04-11 16:04:39 UTC; 2h 36min ago Process: 2593 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 2601 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1119) Memory: 354.3M CPU: 19.944s CGroup: /system.slice/mysql.service └─2601 /usr/sbin/mysqld
Примечание: Номера версий и вывод могут немного отличаться в зависимости от версии вашего репозитория Ubuntu и обновлений пакета MySQL.
Если MySQL не запущен, запустите его с помощью:
sudo systemctl start mysql
Для дальнейшего тестирования подключитесь с помощью mysqladmin как ваш пользователь MySQL (замените sammy на ваше имя пользователя):
mysqladmin -p -u sammy version
Пример вывода:
mysqladmin Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2022, Oracle and/or its affiliates. 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.28-0ubuntu4 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 2 hours 31 min 57 sec Threads: 2 Questions: 25 Slow queries: 0 Opens: 160 Flush tables: 3 Open tables: 79 Queries per second avg: 0.000
Чтобы проверить создание базы данных и её перечисление, используйте:
mysql -u sammy -p -e "CREATE DATABASE appdb; SHOW DATABASES;"
Пример вывода:
Enter password: Database appdb information_schema mysql performance_schema sys
Это подтверждает, что вы можете создавать и перечислять базы данных, а MySQL работает и запущен.
Как подключиться к MySQL из приложений
После запуска MySQL проверьте подключение приложения, чтобы убедиться, что всё работает от начала до конца.
Пример Python
pip install mysql-connector-python
import mysql.connector cnx = mysql.connector.connect(host="localhost", user="app", password="•••", database="appdb") cur = cnx.cursor(); cur.execute("SELECT 1"); print(cur.fetchone()); cur.close(); cnx.close()
Пример Node.js
npm install mysql2
const mysql = require('mysql2/promise'); (async () => { const conn = await mysql.createConnection({host:'localhost', user:'app', password:'•••', database:'appdb'}); const [rows] = await conn.execute('SELECT 1 AS ok'); console.log(rows[0]); await conn.end(); })();
Пример PHP (PDO)
<?php $pdo = new PDO('mysql:host=localhost;dbname=appdb','app','•••'); var_dump($pdo->query('SELECT 1 AS ok')->fetch());
Эти примеры подтверждают, что ваше приложение может подключаться к MySQL и выполнять запросы, замыкая цикл от установки до реального использования.
Лучшие практики
- Используйте переменные окружения или менеджер секретов (не жестко закодированные строки) для учетных данных базы данных.
- Включите SSL/TLS для производственных подключений; требуйте
REQUIRE SSLдля пользователей, подключающихся через сеть. - Применяйте принцип наименьших привилегий: пользователи для каждого приложения с
GRANT, ограниченным конкретной базой данных (избегайте*.*). - Поменяйте учетные данные и отзывайте неиспользуемые аккаунты; регулярно проверяйте
mysql.user. - Используйте параметризованные запросы/связывание ORM, чтобы предотвратить SQL-инъекции; никогда не объединяйте ввод пользователя напрямую.
- Резервное копирование и мониторинг: запланированные дампы или физические копии, журналы ошибок, статус репликации и использование диска.
Управление службой MySQL
Узнайте, как запускать, останавливать, перезапускать MySQL и настраивать его автоматический запуск при загрузке Ubuntu, чтобы вы могли контролировать время работы и надежность. Управление сервисами важно для поддержания доступности вашего MySQL-сервера и обеспечения его автоматического восстановления после перезагрузок.
MySQL на Ubuntu (22.04 и новее) использует systemd для управления сервисами. Используйте следующие команды для управления сервисом MySQL, включая запуск MySQL и его автоматический запуск при загрузке Ubuntu:
Запустить MySQL:
sudo systemctl start mysql
Остановить MySQL:
sudo systemctl stop mysql
Перезапустить MySQL:
sudo systemctl restart mysql
Проверить статус MySQL:
sudo systemctl status mysql
Пример вывода:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since ... ...
Включить MySQL для запуска при загрузке:
sudo systemctl enable mysql
Отключить запуск MySQL при загрузке:
sudo systemctl disable mysql
Эти команды позволяют вам запускать, останавливать, перезапускать, проверять статус и управлять автостартом службы MySQL с помощью стандартных утилит systemd в Ubuntu (22.04 и 24.04).
Как настроить правила брандмауэра MySQL (UFW)
Настройте параметры брандмауэра UFW для MySQL, чтобы контролировать удалённый доступ и уменьшить поверхность атаки. Ограничение сетевого доступа к вашему серверу MySQL является критически важной мерой безопасности, особенно при работе с производственными базами данных.
По умолчанию MySQL слушает только localhost (127.0.0.1), что делает его недоступным с удалённых хостов, что безопасно для большинства случаев использования. Если вам нужно разрешить удалённый доступ (например, с другого сервера), необходимо явно разрешить трафик на порту 3306 с помощью правил брандмауэра ufw для MySQL.
Разрешить удаленный доступ с определенного IP:
sudo ufw allow from <YOUR_IP> to any port 3306
Проверить состояние UFW и правила:
sudo ufw status
Рекомендации по безопасности:
Разрешайте доступ к порту MySQL 3306 только с доверенных IP-адресов. Избегайте использования sudo ufw allow 3306 без ограничения по IP, так как это открывает вашу базу данных для всего интернета и представляет значительный риск для безопасности.
Для большинства приложений наиболее безопасно держать MySQL привязанным к localhost. Открывайте порт 3306 только если вам необходимы удалённые подключения и всегда ограничивайте доступ только определёнными IP-адресами.
Распространенные сценарии использования MySQL на Ubuntu (22.04 и новее)
Поймите основные сценарии, в которых MySQL особенно эффективен на Ubuntu, от развертывания стека LAMP до аналитики. В этом разделе рассматривается, как MySQL используется на Ubuntu (22.04 и новее) в веб-приложениях, бизнес-системах, аналитике и других областях.
MySQL является базовым движком базы данных для множества рабочих нагрузок на Ubuntu (22.04 и позже), от небольших проектов до корпоративных развертываний глобального масштаба. Его гибкость, производительность и открытая природа делают его главным выбором для разработчиков и системных архитекторов. Ниже приведены некоторые из самых важных и значимых сценариев, в которых MySQL преуспевает на Ubuntu (22.04 и позже), а также экспертные рекомендации и лучшие практики:
Веб-приложения LAMP/LEMP
MySQL — это «M» в классическом стеке LAMP (Linux, Apache/Nginx, MySQL, PHP/Python/Perl). Этот стек поддерживает миллионы веб-сайтов, от персональных блогов до платформ электронной коммерции с высокой посещаемостью. Соответствие MySQL стандартам ACID, надежная поддержка транзакций и зрелая реализация SQL делают его идеальным для управления аутентификацией пользователей, сессиями, хранения контента и обработки транзакционных бизнес-логик. В Ubuntu MySQL бесшовно интегрируется как с Apache, так и с Nginx и легко управляется через systemd и APT.
Совет HQ: Для веб-приложений с высокой доступностью рассмотрите возможность репликации MySQL (мастер-слейв или групповая репликация) и автоматического переключения при сбое с использованием инструментов, таких как MHA или Orchestrator. Используйте пул соединений (например, ProxySQL, MySQL Router) для максимальной пропускной способности.
Хостинг для WordPress, Drupal и CMS
Большинство популярных систем управления контентом — включая WordPress, Joomla и Drupal — используют MySQL в качестве своей основной базы данных. MySQL хранит весь контент сайта, данные пользователей, настройки плагинов и метаданные, делая его основой динамических веб-сайтов. В Ubuntu (версии 22.04 и выше) функции безопасности MySQL (такие как mysql_secure_installation, детализированные привилегии пользователей и поддержка SSL) помогают обеспечить надежное развертывание CMS.
Совет HQ: Для крупных или высоконагруженных сайтов на CMS оптимизируйте пул буферов InnoDB MySQL, включите логирование медленных запросов и используйте плагины кеширования на уровне приложения. Регулярно делайте резервные копии ваших данных MySQL с помощью mysqldump или инструментов логического/физического резервного копирования, таких как Percona XtraBackup.
Внутренние бизнес-приложения
MySQL широко используется для внутренних бизнес-инструментов, таких как системы управления персоналом, платформы для обработки заявок, контроль запасов и панели CRM. Использование MySQL на Ubuntu предоставляет организациям полный контроль над своими данными, поддерживает соответствие нормативным требованиям (GDPR, HIPAA и др.) и позволяет внедрять индивидуальные политики безопасности. Ролевой контроль доступа в MySQL и плагины аудита помогают обеспечивать доступ на основе принципа минимальных привилегий и отслеживать изменения данных.
Совет HQ: Для защиты конфиденциальных внутренних данных включите зашифрованные соединения (TLS/SSL), используйте зашифрованные таблицы (InnoDB) и ограничьте сетевой доступ только доверенными хостами. Рассмотрите возможность использования MySQL Enterprise Audit или аналогичных решений с открытым исходным кодом для ведения журналов соответствия требованиям.
Аналитика, хранилища данных и отчётность
Поддержка MySQL сложных запросов, индексирования и партиционирования делает его подходящим для аналитических конвейеров, панелей отчетности и хранения логов/событий. Хотя это не полноценное хранилище данных, MySQL может использоваться для инструментов бизнес-аналитики (например, Grafana, Metabase, Superset) и ETL-процессов. Такие функции, как оконные функции, CTE и поддержка JSON (в MySQL 8+), позволяют выполнять сложные преобразования данных непосредственно в SQL.
Совет HQ: Для аналитических нагрузок используйте колоночные движки хранения (например, MySQL HeatWave, MariaDB ColumnStore) или интегрируйте MySQL с внешними аналитическими платформами. Регулярно анализируйте и оптимизируйте медленные запросы, а также рассмотрите возможность сегментации данных (sharding) или использования реплик для чтения для масштабирования.
Электронная коммерция и транзакционные системы
MySQL является проверенным выбором для платформ электронной коммерции (Magento, WooCommerce, пользовательские корзины) благодаря своей транзакционной целостности, поддержке внешних ключей и способности обрабатывать большие объемы одновременных операций чтения и записи. В Ubuntu MySQL можно настроить для нагрузок с интенсивной записью и интегрировать с платежными шлюзами, системами управления запасами и инструментами управления заказами.
Совет HQ: Включите бинарное логирование для восстановления на определенный момент времени, используйте строгие политики паролей и отслеживайте взаимоблокировки и долгие транзакции. Для соответствия стандарту PCI DSS обеспечьте зашифрованные соединения и регулярное обновление безопасности.
Микросервисы, API и облачно-ориентированные приложения
Современные микросервисы и RESTful API часто используют MySQL в качестве постоянного хранилища, используя его зрелые драйверы для Go, Python, Node.js, Java и других языков. Тип данных JSON в MySQL и гибкая индексация делают его подходящим для полуструктурированных данных и гибридных рабочих нагрузок. В Ubuntu MySQL может быть контейнеризирован (Docker, Kubernetes) или управляться через облачные сервисы.
Совет HQ: Для облачно-нативных развертываний используйте MySQL Operator для Kubernetes, автоматизируйте резервное копирование и переключение при сбоях, а также мониторьте с помощью экспортеров Prometheus. Рассмотрите управляемые предложения MySQL для упрощения масштабирования и обслуживания.
Эти варианты использования демонстрируют, почему MySQL остается одной из самых надежных в мире открытых реляционных баз данных. Его сочетание стабильности, масштабируемости, функций безопасности и обширной экосистемы — вместе с первоклассной поддержкой на Ubuntu — делает его перспективным выбором для разработчиков, системных администраторов и специалистов по работе с данными. Независимо от того, создаете ли вы простой веб-сайт или критически важную корпоративную систему, MySQL на Ubuntu (22.04 и новее) обеспечивает необходимую гибкость и надежность для успеха.
Как устранить распространенные проблемы MySQL
Используйте этот раздел для диагностики распространённых ошибок, таких как конфликты портов, сбои аутентификации и проблемы с запуском службы. Устранение неполадок необходимо для решения проблем, которые могут возникнуть во время или после установки MySQL на Ubuntu.
MySQL — это надежная система управления базами данных, но иногда вы можете сталкиваться с проблемами при установке, настройке или повседневной эксплуатации. Ниже приведено расширенное руководство, которое поможет вам диагностировать и решать некоторые из наиболее распространенных проблем MySQL на Ubuntu (22.04 и 24.04).
Распространенные проблемы, причины и решения
| Проблема | Причина | Решение |
|---|---|---|
| Порт 3306 уже используется | Другой процесс/служба использует порт 3306 | Определите процесс (sudo lsof -i :3306, sudo netstat -tulpn | grep 3306); остановите конфликтующий сервис или измените port MySQL в /etc/mysql/mysql.conf.d/mysqld.cnf; затем перезапустите MySQL (sudo systemctl restart mysql). Документация |
| Доступ запрещен для пользователя | Неверное имя пользователя/пароль, недостаточно прав у пользователя или неправильный хост | Проверьте имя пользователя/пароль/хост; выведите список пользователей и хостов (SELECT User,Host FROM mysql.user;); предоставьте необходимые привилегии (например, GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'host';); выполните FLUSH PRIVILEGES;. Документация |
| Ошибка несоответствия плагина аутентификации | Пользователь MySQL использует плагин (например, caching_sha2_password), который не поддерживается клиентом |
Проверьте текущий плагин (SELECT user,host,plugin FROM mysql.user;); при необходимости смените его (например, ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';); FLUSH PRIVILEGES;; убедитесь, что ваш клиент поддерживает выбранный плагин. Документация |
| Служба MySQL не запускается | Поврежденные данные, неправильные настройки, недостаточные права/ресурсы | Проверьте журналы (sudo journalctl -u mysql, sudo less /var/log/mysql/error.log); исправьте ошибки конфигурации в /etc/mysql/, убедитесь, что дискового пространства, памяти и прав доступа достаточно, при необходимости восстановите таблицы (mysqlcheck --all-databases --repair -u root -p); перезапустите MySQL. Документация |
| Не удается подключиться к серверу MySQL | MySQL не запускается, блокировка брандмауэра или неправильный bind-address | Убедитесь, что сервис запущен (sudo systemctl status mysql); запустите его, если он остановлен (sudo systemctl start mysql); проверьте настройки брандмауэра (sudo ufw status) и разрешайте удаленный доступ только с доверенных IP-адресов (sudo ufw allow from <ВАШ_IP> to any port 3306, если необходимо); проверьте bind-address в /etc/mysql/mysql.conf.d/mysqld.cnf (127.0.0.1 только для локального доступа, 0.0.0.0 для удаленного). |
| Повреждение базы данных или ошибки таблицы | Неожиданные отключения, проблемы с диском или ошибки программного обеспечения | Проверьте журналы ошибок на признаки повреждения; выполните восстановление с помощью mysqlcheck --all-databases --repair -u root -p; для InnoDB рассмотрите возможность принудительного восстановления согласно документации; всегда делайте резервную копию перед восстановлением. Документы по восстановлению InnoDB |
| Медленные запросы или проблемы с производительностью | Неоптимизированные запросы, отсутствующие индексы, недостаточные ресурсы | Включите лог медленных запросов (установите slow_query_log=1 в /etc/mysql/mysql.conf.d/mysqld.cnf); проанализируйте с помощью mysqldumpslow /var/log/mysql/mysql-slow.log; добавьте индексы, оптимизируйте запросы, рассмотрите возможность увеличения ресурсов; используйте EXPLAIN для просмотра планов. Документация |
Общие шаги по устранению неполадок
-
Проверка состояния службы MySQL:
sudo systemctl status mysql -
Просмотр журналов:
-
/var/log/mysql/error.log
-
- Используйте
journalctl -u mysqlдля просмотра логов systemd -
Проверка соединения локально и удалённо:
- Локально:
mysql -u root -p
- Локально:
- Удалённо:
mysql -h <server_ip> -u user -p -
Проверьте настройки брандмауэра и сети:
- Убедитесь, что UFW или другие фаерволы разрешают трафик MySQL, если требуется удалённый доступ.
-
Проверить файлы конфигурации:
- Синтаксические ошибки в
/etc/mysql/mysql.conf.d/могут помешать запуску.
- Синтаксические ошибки в
-
Перезапустите MySQL после внесения изменений:
-
sudo systemctl restart mysql
-
-
Создайте резервную копию перед серьёзными изменениями:
- Всегда создавайте резервные копии ваших баз данных перед внесением значительных изменений в конфигурацию или попытками их исправления.
Больше ресурсов
- Руководство по MySQL 8.0
- Справочник сообщений об ошибках MySQL
- Linux-Console.net Учебные материалы по MySQL
Если вы столкнулись с проблемой, не указанной здесь, обратитесь к документации MySQL или выполните поиск по конкретному сообщению об ошибке. Форумы сообщества MySQL и Stack Overflow также являются отличными ресурсами для решения сложных или необычных проблем.
Как использовать MCP-сервер для MySQL (Claude Code)
Откройте вашу Ubuntu MySQL-инстанцию (версии 22.04 и выше) для Claude Code через открытый сервер MCP для MySQL. Сервер работает параллельно с Claude и действует как контролируемый адаптер к вашей базе данных: по умолчанию только для чтения, явные флаги для INSERT/UPDATE/DELETE, а также разумные ограничения на тайм‑ауты, пул соединений и ограничение скорости. Для продакшена запускайте его через локальный сокет или защищённый TCP-канал (SSH-туннель или TLS) и используйте пользователя MySQL с минимальными привилегиями.
Что это вам дает
- Инспекция схемы: список таблиц/столбцов, типов, ключей.
- Безопасное выполнение запросов: по умолчанию только для чтения; опциональная запись через флаги.
- Оперативное управление: размер пула, тайм-ауты, ограничения скорости, ведение журнала/метрики.
- Гибкое подключение: TCP, Unix-сокет или SSH-туннель к удалённым хостам.
Предварительные требования для использования сервера MySQL MCP
- Node.js v20+ установлен и доступен в
PATH. - CLI Claude Code установлен (
claudeдоступен в вашей оболочке). - Сервер MySQL 8.x на этом хосте (предпочтительно) или доступный по сети.
- Пользователь MySQL с минимальными привилегиями (например,
app@appdb) с правами, ограниченными целевой базой данных. - Держите порт 3306 закрытым для публичного интернета; открывайте только для доверенных IP-адресов, если необходимо (
sudo ufw allow from <YOUR_IP> to any port 3306).
Быстрый старт (Claude Code CLI)
Вариант A — Локальный TCP (localhost)
# Install the MCP server npm install -g @benborla29/mcp-server-mysql # Add to Claude Code in read‑only mode (recommended) claude mcp add mcp_server_mysql -e MYSQL_HOST="127.0.0.1" -e MYSQL_PORT="3306" -e MYSQL_USER="app" -e MYSQL_PASS="••••••••" -e MYSQL_DB="appdb" -e MYSQL_SSL="true" -e ALLOW_INSERT_OPERATION="false" -e ALLOW_UPDATE_OPERATION="false" -e ALLOW_DELETE_OPERATION="false" -- npx @benborla29/mcp-server-mysql
Вариант B — Unix-сокет (локальный MySQL)
claude mcp add mcp_server_mysql -e MYSQL_SOCKET_PATH="/var/run/mysqld/mysqld.sock" -e MYSQL_USER="app" -e MYSQL_PASS="••••••••" -e MYSQL_DB="appdb" -- npx @benborla29/mcp-server-mysql
Вариант C — SSH-туннель к удалённой базе данных
Создайте локальный туннель, который перенаправляет порт 3306 вашего ноутбука на порт 3306 удалённого сервера:
ssh -N -L 3306:127.0.0.1:3306 user@db-host
Затем укажите сервер MCP на 127.0.0.1:3306, как в Варианте A. Для постоянных туннелей используйте службу user systemd или инструмент, такой как autossh.
Область действия (где находится конфигурация)
# Local (default): only for current project claude mcp add mcp_server_mysql [options] # User scope: available to all projects claude mcp add mcp_server_mysql -s user [options] # Project scope: shared via .mcp.json with the team claude mcp add mcp_server_mysql -s project [options]
Включение записи (необязательно, рискованно)
По умолчанию все запросы выполняются в транзакциях только для чтения. Если вам действительно необходима запись, включите соответствующие флаги и используйте выделенного, ограниченного пользователя:
-e ALLOW_INSERT_OPERATION="true" -e ALLOW_UPDATE_OPERATION="true" -e ALLOW_DELETE_OPERATION="true"
Сочетайте это только с правами, ограниченными конкретной базой данных (избегайте *.*).
Многобазовый режим и права на схемы
Чтобы позволить Клоду переключаться между базами данных, опустите MYSQL_DB:
claude mcp add mcp_server_mysql_multi -e MYSQL_HOST="127.0.0.1" -e MYSQL_PORT="3306" -e MYSQL_USER="app" -e MYSQL_PASS="••••••••" -e MULTI_DB_WRITE_MODE="false" -- npx @benborla29/mcp-server-mysql
В режиме с несколькими базами данных используйте полностью квалифицированные имена (db.table) или USE db;. Для детального управления в разных средах:
SCHEMA_INSERT_PERMISSIONS=development:true,test:true,production:false SCHEMA_UPDATE_PERMISSIONS=development:true,test:true,production:false SCHEMA_DELETE_PERMISSIONS=development:false,test:true,production:false SCHEMA_DDL_PERMISSIONS=development:false,test:true,production:false
Рекомендации по TLS/SSL
Включите TLS, если ваш сервер поддерживает его:
-e MYSQL_SSL="true"
Используйте доверенные сертификаты на стороне сервера; отдавайте предпочтение TLS или SSH-туннелю вместо сырого публичного TCP. Проверяйте доверие CA там, где это требуется вашей платформой или управляемой базой данных.
Проверка
# List configured servers claude mcp list # Inspect configuration for your server claude mcp get mcp_server_mysql # Inside Claude Code chat, check status /mcp
Выполните простой запрос на чтение (например, SELECT 1) через инструмент MCP, чтобы подтвердить сквозной доступ.
Устранение неполадок (Claude Code + MySQL)
-
Не удается подключиться: Проверьте, запущен ли MySQL (
systemctl status mysql), учетные данные и настройки брандмауэра/UFW. Убедитесь, что туннель (если используется) активен. -
Несоответствие плагина аутентификации: Убедитесь, что ваш пользователь MySQL использует плагин, поддерживаемый клиентом (
caching_sha2_passwordрекомендуется). Настройте с помощью:ALTER USER 'app'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPassword'; FLUSH PRIVILEGES; -
Проблемы PATH/NODE_PATH (локальный репозиторий запускается): установите явные пути в конфигурации Claude, чтобы
nodeи глобальные модули разрешались. -
Ошибки модуля (например, dotenv): запускайте с дополнительным пакетом при необходимости:
npx -y -p @benborla29/mcp-server-mysql -p dotenv mcp-server-mysql -
Лимиты запросов/тайм-ауты: настройте
MYSQL_POOL_SIZE,MYSQL_QUERY_TIMEOUT,MYSQL_RATE_LIMITи включите логи/метрики сMYSQL_ENABLE_LOGGING=true.
Контрольный список безопасности (Операции)
- Держите 3306 закрытым для интернета; разрешайте определенные IP только при необходимости.
- Используйте пользователей с минимальными привилегиями, ограниченных одной базой данных; регулярно меняйте пароли.
- Предпочитайте TLS или SSH-туннели; избегайте открытого TCP в виде обычного текста.
- Оставьте флаги записи отключенными, если это не абсолютно необходимо.
- Включите ведение журналов/метрик для аудита; контролируйте медленные запросы и ошибки.
Репозиторий: Исходный код, журнал изменений и вопросы поддерживаются на github.com/benborla/mcp-server-mysql.
Часто задаваемые вопросы
1. Как установить MySQL на Ubuntu? (22.04 и новее)
Используйте менеджер пакетов APT для установки MySQL на Ubuntu (22.04 и позже):
sudo apt update && sudo apt install mysql-server sudo systemctl status mysql
Это устанавливает MySQL из стандартных репозиториев Ubuntu и запускает сервис. При необходимости проверьте путь UNIX-сокета и прослушиваемые порты:
sudo ss -lntp | grep 3306 || true sudo mysql -e "SELECT @@socket, @@port;"
Если служба неактивна, запустите её и проверьте статус снова. Поддерживайте вашу систему актуальной с помощью sudo apt update && sudo apt upgrade, и рассмотрите возможность включения автоматических обновлений на производственных серверах.
2. Как мне запустить, остановить или перезапустить MySQL?
Управляйте MySQL с помощью systemd для контроля времени работы:
sudo systemctl start mysql sudo systemctl stop mysql sudo systemctl restart mysql
Используйте перезапуск после изменения конфигурации; используйте остановку для планового обслуживания или резервного копирования. Подтвердите новое состояние и последние записи в журнале:
systemctl status mysql --no-pager journalctl -u mysql -n 50 --no-pager
Если MySQL не запускается, проверьте /var/log/mysql/error.log на наличие ошибок конфигурации, исправьте их и попробуйте выполнить sudo systemctl daemon-reload && sudo systemctl start mysql.
3. Как настроить пароль root для MySQL в Ubuntu?
Установите надежный пароль для root, чтобы защитить доступ:
sudo mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPassword'; exit sudo mysql_secure_installation
Это переключает учетную запись root на аутентификацию по паролю и запускает скрипт усиления безопасности. Проверьте плагин и метод аутентификации:
sudo mysql -e "SELECT user, host, plugin FROM mysql.user WHERE user='root';"
Если вашему клиенту требуется caching_sha2_password или другой плагин, соответствующим образом измените ALTER USER. Всегда оставляйте root только для администрирования и создавайте отдельного пользователя с минимальными привилегиями для приложений. Повторно выполните sudo mysql_secure_installation, если вы измените политики позже.
4. Как проверить статус и версию сервера MySQL?
Проверьте, работает ли MySQL, и просмотрите информацию о версии:
systemctl status mysql mysql -V mysqladmin -p -u root version
Первая команда показывает, активна ли служба; две последние выводят сведения о клиенте и сервере (протокол, время работы). Для более глубоких проверок состояния выполняйте запрос переменных сервера и состояния движка:
mysql -u root -p -e "SHOW VARIABLES LIKE 'version%'; SHOW GLOBAL STATUS LIKE 'Uptime';"
Если строки версий различаются между клиентом и сервером, убедитесь, что ваши клиентские инструменты соответствуют серверному репозиторию, чтобы избежать несовместимостей. Отслеживайте время работы и количество ошибок, чтобы быстро обнаруживать перезапуски или сбои.
5. Как включить автоматический запуск MySQL при загрузке Ubuntu?
Чтобы включить автоматический запуск при загрузке системы:
sudo systemctl enable mysql
Вы можете отключить это позже с помощью:
sudo systemctl disable mysql
Включение гарантирует автоматический запуск MySQL после перезагрузки; отключение полезно для обслуживания или сценариев с одним пользователем. Убедитесь, что юнит включен, и просмотрите зависимости:
systemctl is-enabled mysql systemctl list-dependencies mysql | head -20
Для облачных образов также убедитесь, что инициализация вашего экземпляра (cloud-init/systemd) не переопределяет политику службы.
6. Как безопасно удалить MySQL?
Чтобы полностью удалить MySQL:
sudo systemctl stop mysql sudo apt purge mysql-server mysql-client mysql-common sudo rm -rf /var/lib/mysql /etc/mysql sudo apt autoremove
Перед очисткой создайте резервную копию всех данных, которые могут понадобиться, затем удалите пакеты и остаточные настройки. Убедитесь, что процессы MySQL и сокеты не остались:
ps aux | grep -i mysqld | grep -v grep || true sudo ss -lntp | grep 3306 || true
Если вы планируете переустановку, выполните sudo apt update и подумайте о чистке кэша APT с помощью sudo apt autoclean. Воссоздайте /etc/mysql через скрипт пост-установки пакета и заново защитите с помощью mysql_secure_installation на новой установке.
7. Как использовать сервер MCP с MySQL на Ubuntu? (22.04 и позже)
Используйте открытый сервер MCP для MySQL, чтобы Claude Code мог безопасно проверять схемы и выполнять запросы. Установите Node.js версии 20 и выше и CLI Claude Code. Затем установите сервер глобально и зарегистрируйте его в режиме только для чтения, указав ваш локальный MySQL (TCP) или Unix-сокет. Для удалённых баз данных создайте SSH-туннель и укажите 127.0.0.1:3306. Проверьте работу командой claude mcp list и /mcp внутри Claude. Всегда используйте пользователя базы данных с минимальными правами, держите порт 3306 закрытым для интернета, отдавайте предпочтение TLS и включайте права на запись только при необходимости.
npm install -g @benborla29/mcp-server-mysql claude mcp add mcp_server_mysql -e MYSQL_HOST="127.0.0.1" -e MYSQL_PORT="3306" -e MYSQL_USER="app" -e MYSQL_PASS="••••••••" -e MYSQL_DB="appdb" -e ALLOW_INSERT_OPERATION="false" -e ALLOW_UPDATE_OPERATION="false" -e ALLOW_DELETE_OPERATION="false" -- npx @benborla29/mcp-server-mysql
Совет: Используйте -e MYSQL_SOCKET_PATH="/var/run/mysqld/mysqld.sock", чтобы подключиться через локальный Unix-сокет. Полную документацию см. в репозитории GitHub для MCP Server для MySQL — Claude Code Edition.
Дальнейшее обучение и ссылки
Чтобы выйти за рамки основ и тонко настроить вашу установку MySQL, изучите эти продвинутые ресурсы:
- Документация MySQL: Справочное руководство – официальный источник информации о параметрах конфигурации, оптимизации и расширенных возможностях.
- Настройка производительности: Узнайте о оптимизации запросов, индексировании и мониторинге медленных запросов.
- Репликация и высокая доступность (HA): Изучите репликацию MySQL, групповую репликацию и инструменты оркестрации аварийного переключения для обеспечения высокой доступности.
- Укрепление безопасности: Проверьте шифрование (таблицы InnoDB, SSL/TLS) и аудит плагинов на соответствие требованиям.
- Резервное копирование и восстановление: Изучите восстановление на определённый момент времени и Percona XtraBackup для надежного восстановления после сбоев.
Эти ресурсы помогут вам масштабировать, защищать и оптимизировать MySQL после первоначальной установки.
Заключение
Теперь у вас есть безопасная установка MySQL 8.x, готовая к использованию в производственной среде на Ubuntu (22.04 и 24.04), с пользователем приложения с минимальными привилегиями, настроенным управлением сервисами и инструкциями по UFW, чтобы доступ по умолчанию был только локальным. Прежде чем перейти в производство, выполните три задачи: включите автоматическое резервное копирование, обеспечьте использование TLS для любых удалённых подключений и контролируйте журналы/медленные запросы, чтобы своевременно получать сигналы о возможных проблемах. Если вы обновляете или обслуживаете старые хосты, ознакомьтесь с базовыми настройками и изменениями в нашем руководстве по Ubuntu 20.04 для получения контекста и безопасных шагов миграции.
Вот несколько примеров следующих шагов, которые вы можете предпринять:
- Настройте стек LAMP или стек LEMP
- Практикуйтесь в выполнении запросов на SQL
- Управляйте вашей установкой MySQL с помощью phpMyAdmin
- SQLite против MySQL против PostgreSQL: Сравнение — выберите подходящий движок базы данных для вашего проекта.
Спасибо, что учитесь вместе с сообществом Linux-Console.net.


Добавить комментарий