Почти все веб-приложения требуют серверного хранения данных, и MySQL продолжает оставаться наиболее часто используемым решением для баз данных . В этой статье обсуждаются различные варианты использования MySQL в вашей локальной системе во время разработки.
MySQL — это бесплатная реляционная база данных с открытым исходным кодом. MariaDB является ответвлением базы данных, созданной в 2010 году после опасений по поводу приобретения Oracle MySQL. (Он функционально идентичен, поэтому большинство концепций, описанных в этой статье, также применимы к MariaDB.)
В то время как базы данных NoSQL выросли в последние годы, реляционные данные, как правило, более практичны для большинства приложений. Тем не менее, MySQL также поддерживает NoSQL-подобные структуры данных, такие как поля JSON, так что вы можете пользоваться преимуществами обоих миров.
В следующих разделах рассматриваются три основных способа использования MySQL в вашей локальной среде разработки:
- облачные решения
- использование Docker-контейнеров
- установка на ваш компьютер.
Эта популярная статья была обновлена в 2020 году, чтобы точно отражать текущий процесс установки MySQL.
Облачный MySQL
Услуги MySQL предлагаются AWS, Azure, Google Cloud, Oracle и многими другими специализированными хостинговыми службами. Даже недорогие общие хосты предлагают MySQL с удаленными HTTPS или туннельными SSH-соединениями. Поэтому вы можете использовать базу данных MySQL удаленно в локальной разработке. Выгоды:
- нет программного обеспечения базы данных для установки или управления
- ваша производственная среда может использовать ту же систему
- более одного разработчика могут легко получить доступ к одним и тем же данным
- он идеально подходит для тех, кто использует облачные интегрированные среды разработки или устройства с более низкими характеристиками, например Chromebook
- такие функции, как автоматическое масштабирование, репликация, сегментирование и резервное копирование, могут быть включены.
Недостатки:
- установка может все еще занять значительное время
- библиотеки подключений и процессы могут слегка различаться на разных хостах
- экспериментирование более рискованно; любой разработчик может случайно стереть или изменить базу данных
- развитие прекратится, когда у вас нет подключения к интернету
- Там могут быть сногсшибательные затраты на использование.
Облачный вариант может быть полезен для пользователей с минимальными требованиями к базе данных или для больших групп, работающих над одними и теми же сложными наборами данных.
Запустите MySQL с помощью Docker
Docker — это платформа, которая позволяет создавать, совместно использовать и запускать приложения в контейнерах . Представьте себе контейнер как изолированную виртуальную машину с собственной операционной системой, библиотеками и файлами приложений. (На самом деле контейнеры — это облегченные процессы, которые совместно используют ресурсы на хосте.)
Образ Docker — это снимок файловой системы, которую можно запустить как контейнер. Docker Hub предоставляет широкий спектр изображений для популярных приложений и баз данных, включая MySQL и MariaDB . Выгоды:
- все разработчики могут использовать один и тот же образ Docker в macOS, Linux и Windows
- Конфигурация установки MySQL и обслуживание минимальны
- один и тот же базовый образ можно использовать в средах разработки и производства
- разработчики сохраняют преимущества локальной разработки и могут экспериментировать без риска.
Docker выходит за рамки этой статьи, но ключевые моменты, на которые следует обратить внимание:
- Docker — это клиент-серверное приложение. Сервер отвечает за управление изображениями и контейнерами и может управляться через REST API с использованием интерфейса командной строки. Поэтому вы можете запустить демон сервера в любом месте и подключиться к нему с другого компьютера.
- Отдельные контейнеры должны использоваться для каждой технологии, необходимой вашему веб-приложению. Например, ваше приложение может использовать три контейнера: веб-сервер Apache с поддержкой PHP, базу данных MySQL и механизм Elasticsearch.
- По умолчанию контейнеры не сохраняют состояние. Данные, сохраненные в файле или базе данных, будут потеряны при следующем перезапуске контейнера. Постоянство реализуется путем монтирования тома на хосте.
- Каждый контейнер может общаться с другими в своей собственной изолированной сети. Определенные порты могут быть открыты для хоста при необходимости.
- Доступна коммерческая, корпоративная версия Docker. Эта статья относится к сообществу с открытым исходным кодом, но применяются те же методы.
Установить докер
Инструкции по установке последней версии Docker для Linux доступны в Docker Docs . Вы также можете использовать официальные репозитории, хотя они могут иметь более старые версии. Например, в Ubuntu:
sudo apt-get update sudo apt-get remove docker docker-engine docker.io sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
Установка может отличаться в других выпусках Linux, поэтому поищите в Интернете соответствующие инструкции.
Docker CE Desktop для MacOS Sierra 10.12 и выше и Docker CE Desktop для Windows 10 Professional доступны в виде устанавливаемых пакетов. Вы должны зарегистрироваться в Docker Hub и войти в систему для загрузки.
Docker в Windows 10 использует платформу виртуализации Hyper-V, которую вы можете включить с помощью функции « Включение или отключение» функций панели Windows, доступ к которой можно получить из « Программы и компоненты» на панели управления. Docker также может использовать подсистему Windows для Linux 2 (WSL2 — в настоящее время в бета-версии).
Чтобы Docker мог получить доступ к файловой системе Windows, выберите « Настройки» в меню значка на панели задач, перейдите на панель « Общие диски» и проверьте, какие диски разрешено использовать серверу.
Убедитесь, что Docker успешно установлен, введя docker version
Docker в командной строке. При желании попробуйте docker run hello-world
чтобы убедиться, что Docker может извлекать образы и запускать контейнеры, как ожидалось.
Запустите контейнер MySQL
Чтобы облегчить взаимодействие контейнеров Docker, создайте dbnet
сеть с именем dbnet
или любым dbnet
именем, которое вы предпочитаете (этот шаг можно пропустить, если вы просто хотите получить доступ к MySQL с хост-устройства) :
docker network create --driver bridge dbnet
Теперь создайте в вашей системе папку с data
в которой будут храниться таблицы MySQL, например, mkdir data
.
Самый последний сервер MySQL 8 теперь может быть запущен с:
docker run -d --rm --name mysql --net dbnet -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysecret -v $PWD/data:/var/lib/mysql mysql:8
Аргументы использованы:
-
-d
запускает контейнер в качестве фоновой службы. -
--rm
удаляет контейнер, когда он останавливается. -
--name mysql
назначает имяmysql
контейнеру для более легкого управления. -
-p 3306:3306
перенаправляет порт контейнера на хост. Если вы хотите использовать порт3307
на хосте, вы должны указать-p 3307:3306
. -
-e
определяет переменную среды, в этом случае пароль пользователя root по умолчанию MySQL установлен наmysecret
. -
-v
монтирует том, поэтому папка данных MySQL/var/lib/mysql
в контейнере будет храниться в подпапкеdata
текущей папки на хосте.
$PWD
— это текущая папка, но она работает только в macOS и Linux. Пользователи Windows должны указывать весь путь, используя косую черту — например, /c/mysql/data
.
При первом запуске этой команды запуск MySQL займет несколько минут после загрузки образа Docker и настройки контейнера MySQL. Последующие перезапуски будут мгновенными, если вы не удалите или не измените исходное изображение. Вы можете проверить прогресс в любое время, используя:
docker logs mysql
Использование инструмента MySQL командной строки контейнера
После запуска откройте оболочку bash в контейнере MySQL, используя:
docker exec -it mysql bash
Затем подключитесь к серверу MySQL от имени пользователя root:
mysql -u root -pmysecret
-p
сопровождается паролем, установленным в аргументе Dock -e
показанном выше. Не добавляйте пробел!
Теперь можно использовать любые команды MySQL, такие как show databases;
create database new;
и так далее.
Используйте клиент MySQL
Любое клиентское приложение MySQL может подключиться к серверу через порт 3306
хост-машины.
Если у вас не установлен клиент MySQL, Adminer — это легкий инструмент управления базами данных PHP, который также можно запускать как контейнер Docker!
docker run -d --rm --name adminer --net dbnet -p 8080:8080 adminer
После запуска откройте http://localhost:8080
в браузере и введите mysql
качестве имени сервера, root
качестве имени пользователя и mysecret
в качестве пароля:
Базы данных, пользователи, таблицы и связанные с ними параметры теперь можно добавлять, редактировать или удалять.
Контейнеры Стоп Докер
Контейнеры могут быть остановлены (и автоматически удалены) командой docker stop
за которой следует одно или несколько имен контейнеров. Например:
docker stop mysql adminer
Образы и контейнеры Docker легче по сравнению с виртуальными машинами, но вы можете стереть все данные, используя:
docker system prune -a docker volume prune
Использование docker-compose
для управления контейнерами
docker-compose
может управлять любым количеством контейнеров без необходимости вводить длинные команды Docker. Создайте файл docker-compose.yml
в вашей текущей папке:
version: '3.7' services: mysql: environment: - MYSQL_ROOT_PASSWORD=mysecret image: mysql:8 container_name: mysql volumes: - ./data:/var/lib/mysql networks: - dbnet ports: - "3306:3306" adminer: image: adminer container_name: adminer depends_on: - mysql networks: - dbnet ports: - "8080:8080" networks: dbnet:
Затем запустите:
docker-compose up
Контейнеры MySQL и Adminer запускаются с теми же конфигурациями, которые использовались выше. Нажмите Ctrl + C, чтобы остановить и удалить контейнеры.
Запустите MySQL на вашей ОС
Установка MySQL на вашу локальную машину разработки может быть практичной, если вы хотите использовать один экземпляр в нескольких проектах или хотите, чтобы служба запускалась при загрузке.
Все-в-одном пакеты
Существует несколько превосходных универсальных дистрибутивов MacOS, Linux и Windows, которые содержат Apache, PHP, MySQL, phpAdmin, SSL-сертификаты, платформы и другие приложения в одном установочном пакете. Варианты включают в себя:
Большинство из них идеально подходят для быстрой разработки PHP и MySQL и могут предлагать несколько редакций каждого сервиса. Тем не мение:
- Обновления не гарантированы. Многие пакеты по-прежнему предлагают более старые версии MySQL.
- Разработчики, использующие разные ОС или настраиваемые конфигурации, могут создавать проблемы совместимости в общих кодовых базах.
- Среды разработки и производства могут существенно различаться.
Пакеты «все в одном» лучше всего подходят для проектов с одним программистом или для новичков в веб-разработке.
Установите MySQL на Linux
Существует множество способов установить MySQL на различные дистрибутивы Linux:
- Некоторые дистрибутивы, такие как Ubuntu Server, предоставляют MySQL по умолчанию.
- Официальная документация содержит подробности установки с использованием менеджеров пакетов APT, Yum и SLES, а также пакетов RPM и Debian.
- Различные версии MySQL доступны в магазине мгновенного хранения .
Установите MySQL на macOS
MySQL можно установить на MacOS 10.13 и выше, загрузив собственный установщик пакета .dmg образ диска. Дважды щелкните, чтобы смонтировать образ, затем дважды щелкните файл .pkg
чтобы запустить мастер установки .
Если вы решите не запускать MySQL автоматически, его можно запустить с помощью значка на панели «Системные настройки»:
Также можно установить MySQL на macOS, используя:
- доморощенный:
brew install mysql
- инструмент управления DBngin , или
- общие двоичные файлы
Установите MySQL на Windows
MySQL может быть установлен на 64-разрядных выпусках Windows 10 и Windows 2012 Server R2 и выше. Вам также потребуются следующие среды выполнения:
Установщик MSI предоставляет сервер, а также такие инструменты, как MySQL Workbench. (Меньший «веб» установщик MSI будет загружать пакеты при выборе.)
Дважды щелкните файл MSI, чтобы запустить мастер установки, и обратитесь к документации MySQL для получения информации о конкретных параметрах конфигурации.
По умолчанию:
- двоичные файлы программы и документация установлены в
%PROGRAMFILES%\MySQL\MySQL Server Vv\
(например,C:\Program Files\MySQL\MySQL Server 8.0\
) - данные базы данных хранятся в папке
%PROGRAMDATA%\MySQL\MySQL Server Vv\
(например,C:\ProgramData\MySQL\MySQL Server 8.0\
)
ZIP-архив без установки также доступен . Это можно скопировать на USB-диск или в любое место в системе Windows.
Сначала извлеките содержимое ZIP в C:\mysql
или папку по вашему выбору.
Затем создайте папку, в которой будут храниться данные базы данных, например C:\mysqldata
. Использование папки вне C:\mysql
более безопасно и позволяет обновлять файлы приложения.
Теперь создайте файл my.ini
в C:\mysql
который определяет папки приложения и данных. например:
[mysqld] # installation path basedir=C:/mysql # data directory datadir=E:/mysqldata
(Требуется прямой путь /
косая черта, хотя также можно использовать двойную обратную косую черту.)
Теперь инициализируйте папку данных и создайте пользователя по умолчанию (без пароля), введя следующую команду в командной строке:
C:\mysql\bin\mysqld.exe --initialize-insecure --user=mysql
Теперь сервер может быть запущен с:
C:\mysql\bin\mysqld.exe --console
Используйте клиент MySQL, введя C:\mysql\bin\mysql.exe -u root
в другой консоли. Теперь вы можете выполнять команды SQL, такие как show databases;
и exit
набрав exit
.
Сервер может быть отключен с помощью:
C:\mysql\bin\mysqladmin.exe -u root shutdown
При желании MySQL может быть установлен как автоматически запускаемая служба Windows:
C:\mysql\bin\mysqld.exe --install
Сервис запустится при перезагрузке или вы можете ввести net start mysql
чтобы запустить его немедленно. Его можно остановить с помощью net stop mysql
или управлять с помощью панели « Службы» в средствах администрирования Windows :
Услуга может быть полностью удалена с помощью:
net stop mysql C:\mysql\bin\mysqld.exe --remove
Подавляющие параметры MySQL
Существует несколько вариантов установки MySQL независимо от того, какую ОС вы используете.
Для тех, кто изучает MySQL, облачный провайдер или пакет «все в одном», вероятно, будет самым простым способом начать. Когда ваше приложение начнет расти, рассмотрите возможность использования Docker в вашем рабочем процессе разработки или управления локальной установкой MySQL. Docker становится все более практичным, когда к проекту присоединяются несколько разработчиков. В конце концов, вы можете вернуться к облачным вариантам по мере развития вашего успешного продукта.