# MySQL: установка на Ubuntu, настройка и основы работы из терминала🗃️

Обложка статьи "MySQL: установка на Ubuntu, настройка и основы работы из терминала"

MySQL (MariaDB) — одна из самых популярных баз данных. Разберемся, как установить ее в Ubuntu, произвести базовую настройку, а так же познакомимся с основами работы с MySQL из терминала.

# Так MySQL или MariaDB?

Если быть до конца откровенным, то речь в этой статьей пойдет о СУБД MariaDB, а не о MySQL. Однако, важно понимать, что отличия этих систем управления базами данных не так значительны, как Вы могли подумать. В подавляющем большинстве случаев Вы даже не заметите разницы между этими СУБД, т.к. MariaDB реализует полностью идентичный MySQL интерфейс.

Это значит, что почти любой проект использующий MySQL может быть перенесен на MariaDB вообще без каких либо изменений. Если вы работаете с БД из терминала, то здесь вас тоже не будет ждать никаких сюрпризов, т.к. используемые команды и принципы работы ничем не отличаются. То же можно сказать и о GUI-интерфейсах, здесь вы просто подключаетесь к MariaDB, как к MySQL.

MariaDB — это форк проекта MySQL, разрабатываемый полностью открыто сообществом энтузиастов. По заверению разработчиков все технологии, существующие в закрытой версии MySQL 5.5 Enterprise Edition, в полном объеме представлены и в MariaDB. MariaDB развивается быстрее и имеет больше возможностей, чем MySQL, касающихся оптимизации, улучшения работы с памятью, и многого другого. Обычно, со временем, эти возможности реализуют и в MySQL. Например, поддержка библиотеки GIS для работы с геоточками, полигонами и маршрутами появилась в MariaDB раньше, чем в MySQL. Также сообщения об ошибках и проблемы уязвимостей в MariaDB обычно закрываются гораздо оперативнее, чем в MySQL.

По большинству параметров MariaDB намного лучше, чем MySQL. С более полным перечнем различий MySQL и MariaDB можно ознакомиться в официальной документации здесь - MariaDB в сравнении с MySQL - Особенности

# Установка MySQL/MariaDB

Установка MySQL или MariaDB в операционной системе Ubuntu или любом другой Debian-based дистрибутиве Linux не будет проблемой даже для новичка. Дла того, чтобы получить рабочую систему на своем компьютере, достаточно просто выполнить пару команд в терминале и пользоваться готовой к бою СУБД без каких либо проблем.

Для того, чтобы установить MariaDB на компьютер выполните в терминале следующую команду:

sudo apt install mariadb-server mariadb-client

Проверить установленную версию можно так

mysql --version

Как видите, к установленной MariaDB мы даже обращаемся ровно так, как если бы это было оригинальная MySQL!

В подавляющем большинстве случаев сразу после установки ваша база данных полностью готова "к бою". Проблема с запуском службы у меня возникла всего один раз. Если Вас постигла та же участь и при попытке подключения к БД Вы все-таки получаете ошибку, то проверьте запущена ли служба

systemctl status mysql

Если все нормально, Вы должны увидеть в терминале зелененькую надпись active Служба MySQL - статус active

Если в вашем случае статус другой, попробуйте перезапустить службу при помощи команды restart

sudo systemctl restart mysql

# Первичная настройка MySQL/MariaDB

Для первичной настройки безопасности MySQL или MariaDB существует специальный скрипт mysql_secure_installation. Он в автоматическом режиме удаляет анонимных пользователей, запрещает удаленный доступ к базе данных и обновляет привилегии. Для того, чтобы запустить его, выполните в терминале следующую команду

sudo mysql_secure_installation

После запуска скрипт задаст Вам несколько вопросов. Вам следует ответить на них положительно: y или Y. Можно также просто нажимать Enter.

Если по завершении работы скрипта в выводе появится "All done!", значит все прошло успешно. Можно двигаться дальше!

# Создание пользователя-администратора

Для того, чтобы подключаться к серверу базы данных, необходимо создать пользователя.

Внимание!

В этом разделе мы создадим пользователя с очень высокими привилегиями, поэтому использовать его для подключения из разрабатываемых вами приложений не следует!

Создание пользователей для подключения к БД непосредственно из кода приложения рассмотрено ниже - Создание пользователя для использования в коде

Для создания пользователей мы будем пользоваться интерфейсом командной строки. Чтобы попасть в него, откройте терминал и введите

sudo mysql

Эта команда запустить MySQL или MariaDB в интерактивном режиме, то есть Вы выполнять SQL-запросы прямо из терминала. Для создания пользователя напишите следующий запрос и нажмите Enter.

CREATE USER '<Имя пользователя>'@'localhost' IDENTIFIED BY '<Пароль>';

Разумеется, вместо <Имя пользователя> и <Пароль> необходимо ввести свои имя пользователя и пароль. В качестве имени пользователя Вы можете, например, использовать "admin" (без кавычек).

Обратите внимание

Каждый запрос должен оканчиваться символом ; (точка с запятой).

Пока точка с запятой не будет введена, MySQL будет считать, что запрос не закончен и ожидать его продолжения даже если вы нажмете Enter

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

GRANT ALL PRIVILEGES ON *.* TO '<Имя пользователя>'@'localhost' WITH GRANT OPTION;

После того, как права выданы, активируем изменения в привилегиях пользователей

FLUSH PRIVILEGES;

После этого можем спокойно покидать CLI, не забыв напоследок умилиться тем, как вежливо он попрощается с Вами 😃 Для этого вводим exit и нажимаем Enter

Отлично! Пользователь создан и наделен особыми правами по управлению любыми базами и таблицами и выдачи прав другим пользователям.

Для того, чтобы теперь войти в интерактивный режим MySQL из терминала, используя только что созданного пользователя, воспользуйтесь командой (угловые скобки в начале и конце имени пользователя ставить не надо)

mysql -u <Имя пользователя>

После этого MySQL запросит у Вас пароль пользователя и вы снова окажетесь в интерактивной оболочке, где сможете создавать новые базы данных, пользователей и любые другие запросы к БД.

# Подключение к MySQL/MariaDB через GUI-клиент

Не каждый пользователь чувствует себя комфортно и уверенно, выполняя запросы к БД вручную из терминала. Да и это не всегда быстро и удобно. Именно поэтому человечество изобрело графический интерфейс.

Существует большое количество GUI-программ, позволяющих просматривать таблицы и выполнять другие действия по щелчку мыши в удобном человеко-ориентированном виде. Подключение к ним осуществляется через те же данные и настройки, которые Вы используете для подключения к БД из кода.

Выглядят такие программы по-разному, но принцип подключения у всех одинаковый. Я покажу стандартные настройки на примере программы Beekeeper Studio.

Настройки подключения к MySQL в Beekeeper Studio

Для подключения Вам необходимо:

  1. выбрать тип базы данных MySQL или MariaDB;
  2. в поле host или сервер ввести значение localhost или 127.0.0.1;
  3. настроить порт для подключения. Стандартный порт - 3306 (если Вы не меняли его в настройках)
  4. ввести имя пользователя и пароль;
  5. нажать кнопку для подключения к БД.

Вот и все. Программа готова, можно творить свои чудеса инженерной мысли!

# Создание пользователя для использования в коде приложения

Зачастую СУБД управляет более, чем одной базой данных. Например, у вас на одной машине вполне могут хоститься несколько разных проектов, использующих разные базы в рамках одной СУБД. Именно поэтому использование в коде приложения пользователя с полным глобальным доступом ко всем базам данных — не очень хорошая идея.

Гораздо лучше создавать отдельных пользователей с минимально необходимым уровнем доступа для каждого приложения, использующего СУБД. Давайте рассмотрим, как это сделать на примере создания одной базы данных, пользователя для нее и соответствующей настройки.

Начнем с создания базы данных. Для этого необходимо открыть терминал и перейти в интерактивную оболочку MySQL

sudo mysql

Далее в рамках интерактивной оболочки выполним запрос на создание новой базы данных, которая на моем примере будет называться best_app_db. Разумеется, у Вас она может называться как угодно.

CREATE DATABASE best_app_db;

WARNING

Не забываем про точки с запятыми в конце каждого запроса

БД создана. Теперь создадим пользователя best_app_user с паролем 123qwe

CREATE USER 'best_app_user'@'localhost' IDENTIFIED BY '123qwe';

Выдадим полные права доступа ко всем таблицам, но только в пределах базы best_app_db

GRANT ALL PRIVILEGES ON best_app_db.* TO 'best_app_user'@'localhost';

Обратите внимание, что в отличие от создания пользователя-админа мы не включили в запрос оператор WITH GRANT OPTION. Это значит, что пользователь best_app_user сможет делать с таблицами в пределах БД все, что захочет, однако выдать такие привилегии кому-то еще у него не получится.

Далее обновляем привилегии и покидаем интерактивную оболочку с чувством выполненного долга

FLUSH PRIVILEGES;
exit

Осталось только прописать только что созданного пользователя в настройках подключения вашего приложения и дело сделано! Надеюсь, эта статья помогла Вам разобраться в теме. В случае обнаружения ошибок или недочетов не стесняйтесь писать в комментарии.

# Комментарии