Чтобы наше веб-приложение приносило пользу, введенные пользователями данные требуется где-то хранить, а также иметь возможность динамически запрашивать данные хранилища при запросе этих самых данных.

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

Существует много разных хранилищ данных, которые можно использовать для нашего приложения — каждое со своими достоинствами и недостатками. Мы используем популярную реляционную базу данных MySQL.

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК ЧАТ в Telegram

В следующем уроке вы узнаете как:

  • Подключиться к MySQL из веб-приложения (в частности, вы узнаете, как создать пул повторно используемых подключений);
  • Создать независимый пакет models, чтобы логику базы данных можно было повторно использовать и изолировать от веб-приложения;
  • Использовать соответствующие функции из пакета Go database/sql для применения различных SQL запросов и как избежать распространенных ошибок, которые могут привести к нехватке ресурсов на вашем сервере;
  • Предотвратить атаки SQL-инъекций, правильно используя параметры плейсхолдера и фильтрации данных от пользователей;
  • Использовать транзакции, чтобы можно было выполнять несколько SQL-операторов за одно атомарное действие.

Установка MySQL для Golang

Для дальнейшей работы нам требуется установить MySQL на компьютер. Официальная документация MySQL содержит подробную инструкцию по установке для всех типов операционных систем. Если вы используете Mac OS, то установить MySQL можно следующим образом:

Если вы используете Linux дистрибутив, который поддерживает apt (как Debian или Ubuntu), установка MySQL производится следующим образом:

При установке MySQL вас могут попросить указать пароль для пользователя root. Не забудьте об этом, так как пароль будет важен для следующего шага.

Создание базы данных в MySQL

После успешной установки MySQL к ней можно подключиться через терминал используя данные от root пользователя. Используемая для этого команда зависит от установленной версии MySQL. С MySQL 5.7 можно попробовать подключиться к MySQK через следующую команду:

Но если это не сработает, попробуйте следующую команду и введите пароль, который вы указали при установке.

После подключения, требуется создать новую базу данных в MySQL для хранения всех данных от нашего сайта. Скопируйте и вставьте следующие команды в терминале от mysql, чтобы создать новую базу данных snippetbox с использованием UTF-8 кодировки.

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

У каждой записи в таблице будет столбик id поле с данными типа integer, которые будут действовать как уникальный идентификатор для каждой заметки. В ней также будет короткое текстовое поле title (заголовок) и поле content для хранения текста самой заметки. Метаданные о времени создания заметки будут храниться в поле created, а срок жизни заметки будет храниться в поле expires.

Давайте добавим несколько записей в таблицу snippets (которую мы будем использовать в следующих нескольких уроках). Мы будем использовать несколько коротких пословиц в качестве содержания текстовых заметок, но на самом деле здесь контент не имеет значения.

Создание нового пользователя в MySQL

С точки зрения безопасности не рекомендуется подключаться к MySQL через root пользователя из веб-приложения. Будет лучше создать пользователя для базы данных с ограниченными правами доступа.

Пока вы все еще подключены к командной строки от MySQL, выполните следующие команды для создания нового web пользователя с привилегиями выполнения SELECT и INSERT запросов только для его базы данных.

После этого выполните в командной строке exit для выхода из MySQL.

Тестирование нового пользователя базы данных

Теперь у вас должно получиться соединиться с базой данных snippetbox через пользователя web, используя следующую команду. Затем вводится указанный вами пароль.

Если привилегии пользователя работают правильно, вы сможете  выполнять операции SELECT и INSERT над базой данных, но другие команды, такие как DROP TABLE и GRANT, приведут к ошибке.

Скачать исходный код + MySQL дамп

В архивами с исходным кодом появилась новая папка SQL которая содержит дамп (резервная копия) нашей базы данных snippetbox.sql. Если вдруг, у вас появились какие либо проблемы с выполнением SQL запросов, или вы начали курс с этой статьи, то можете загрузить дамп snippetbox.sql в вашу базу данных и всё будет работать.

Скачать: snippetbox-15.zip

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *