Статьи

Управление MySQL с помощью упакованных приложений

Несколько лет назад команда Chrome анонсировала упакованные приложения — приложения, которые ведут себя как собственные, с доступом к значительной части аппаратного обеспечения вашей машины. С тех пор мы видели эмуляторы терминалов, IRC-клиенты, IDE, настоящие 3D-игры и многое другое.

ChromeMyAdmin

Я хотел бы воспользоваться этой возможностью и ознакомиться с ChromeMyAdmin , упакованным приложением от Yoichiro Tanaka .

Лично я считаю ландшафт управления базами данных MySQL / MariaDB особенно бесплодным. С часто нестабильным MySQL Workbench с одной стороны и раздутым, но недостаточно развитым PhpMyAdmin с другой, иногда вам просто нужно более простое решение для быстрого и грязного редактирования.

Давайте посмотрим, как это работает.

Установка

Перейдите на страницу Интернет-магазина и установите приложение. Он должен появиться в вашем приложении запуска Chrome немедленно. В Windows это выглядит как на рисунке ниже:

Стартовый интерфейс простой и плавный, знакомый внешний вид Bootstrap:

Vagrant Up

Если вы читали любой из моих предыдущих постов, вы знаете, что я не одобряю загрязнение моей повседневной машины SDK, языками программирования и их средами выполнения или драйверами базы данных. Я сделал простой Vagrantfile, который загружает экземпляр сервера Ubuntu 14.04 с предустановленной MySQL и включенными удаленными подключениями. Это означает, что вы можете подключиться к базе данных виртуальной машины с хост-машины и по-прежнему сохранять на хост-машине чистую от нежелательного программного обеспечения.

Если вы не знакомы с Vagrant и вышеупомянутыми методами виртуализации, ознакомьтесь с нашими предыдущими статьями по этой теме .

Вы можете скачать Vagrantfile с Github . После этого просто зайдите в папку (используйте Git Bash, если в Windows) и запустите vagrant up, если у вас установлены Vagrant и VirtualBox.

соединительный

IP-адрес нашей виртуальной машины установлен на 192.168.56.101, так что именно это мы используем для имени хоста соединения на главном экране ChromeMyAdmin. Это также первое место, где ChromeMyAdmin бросил мяч — вы должны ввести номер порта — он не принимает значение по умолчанию. Не большая проблема, но она получит бонусные баллы за удобство использования.

После того, как мы введем учетные данные (root, root, если вы используете мой Vagrantfile), мы сможем успешно протестировать соединение.

Сразу после нажатия «Подключиться» (и, возможно, «Добавить в избранное») вы должны увидеть следующий экран, позволяющий выбрать базу данных.

Создание и заполнение базы данных

Давайте рассмотрим это быстро и создадим новую базу данных. Нажмите на маленький значок плюса в правом нижнем углу окна, чтобы инициализировать процесс. Убедитесь, что вы находитесь в «представлении сервера», к которому вы переходите, щелкая значок «жесткого диска» в верхнем левом углу рядом с раскрывающимся списком выбора базы данных. Оставьте опцию кодирования в UTF-8 Unicode по умолчанию и введите имя образца, например «test». Затем вы должны увидеть свою базу данных в раскрывающемся списке выбора базы данных, откуда вы можете выбрать ее.

Мы создаем новую таблицу, нажимая маленький значок плюса в левом нижнем углу. Создайте таблицу с именем «users» и оставьте все остальные параметры в их значениях по умолчанию. Вы заметите, что ChromeMyAdmin автоматически создает целое поле без знака, которое автоинкрементно, и делает его первичным ключом таблицы. Хотя это довольно хорошо согласуется с моими привычками, я уверен, что некоторые люди будут обеспокоены этим и неспособностью изменить поведение по умолчанию. Такие действия обязательно должны быть настраиваемыми.

Используя третью плюсовую кнопку «Добавить новый столбец» в рамке просмотра столбцов таблицы, добавьте поля « first_namelast_nameusernamepassword Сделайте их всех максимально возможными. Я позволил NULL для first_name, но не для других полей.

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

Не забудьте сначала нажать кнопку «Добавить» рядом с выбранным столбцом, иначе кнопка «Добавить» в нижнем ряду модального окна никогда не активируется.

Если в какой-то момент вам интересно узнать, какие операторы SQL выполняются при щелчке по интерфейсу, перейдите в меню «Настройка» (вверху справа, между «Запросом» и значком отключения питания) и выберите «История запросов».

Теперь у нас есть таблица с определенными столбцами и индексами — давайте используем окно Query для создания еще двух таблиц: users_groupsuser_groups В окне «Запрос» (в правом верхнем углу, между «Структура» и «Настроить») вставьте следующее:

 CREATE TABLE `user_groups` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(120) NOT NULL,
  `slug` varchar(120) NOT NULL,
  `description` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email_address_UNIQUE` (`name`),
  UNIQUE KEY `slug_UNIQUE` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `test`.`users_groups` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `users_id` INT UNSIGNED NOT NULL,
  `groups_id` INT UNSIGNED NOT NULL,
  `main` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `user_group_unique` (`users_id` ASC, `groups_id` ASC),
  INDEX `users_groups_user_groups_id_idx` (`groups_id` ASC),
  CONSTRAINT `users_groups_users_id`
    FOREIGN KEY (`users_id`)
    REFERENCES `test`.`users` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `users_groups_user_groups_id`
    FOREIGN KEY (`groups_id`)
    REFERENCES `test`.`user_groups` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE);

Сначала я был разочарован, обнаружив, что в ChromeMyAdmin отсутствует инструмент импорта SQL, но я был еще более разочарован, когда понял, что он не может выполнять два оператора один за другим. Неважно — работает вставка в одном CREATE, выполнение, затем то же самое для других, и теперь у нас есть все три таблицы.

Оператор CREATE также создал необходимые индексы и некоторые внешние ключи, которые связывают три таблицы вместе в стиле M: M. Но … где наши внешние ключи?

ChromeMyAdmin НЕ поддерживает редактирование внешних ключей в графическом интерфейсе в текущей итерации. Все еще находящиеся в стадии разработки и только у одного человека, такие расширенные функции, к сожалению, ставятся на второй план.

Хорошо, давайте посмотрим, что еще мы можем сделать.

Откройте таблицу user_groups Вы делаете это, выбирая таблицу, затем выбирая «строки» в верхней части навигации, и, наконец, нажимая правый нижний значок плюс. В своей текущей форме ChromeMyAdmin предлагает обычную текстовую область для каждого типа данных столбца и не заполняет значения каким-либо образом, даже со значениями по умолчанию. Однако мы можем оставить поле, которое, как мы знаем, установлено как автоинкремент, пустым, а ChromeMyAdmin и MySQL позаботятся об остальном за нас.

Автоинкремент работает хорошо, и мы добавляем две строки:

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

Однако автоинкремент все еще срабатывает, и наш второй пользователь теперь имеет идентификатор 3 вместо 2.

Конечно, это проблема MySQL, но ее можно легко избежать, если принять надлежащие меры.

Наконец, давайте добавим несколько записей users_groups В современных инструментах управления MySQL добавление новой строки в таблицу с внешним ключом, связанным с ее столбцами, превратило бы поля ввода в выпадающие меню, из которых можно выбрать правильное значение. В ChromeMyAdmin GUI выглядит идентично тому, где вы добавляете строки в таблицу без внешних ключей — чистые текстовые области.

Если вы попытаетесь добавить запись NULL, 5, 5, 0 В конце концов, нет пользователей или групп с идентификатором = 5. Давайте добавим три допустимых записи:

NULL, 1, 1, 1
NULL, 1, 2, 0
NULL, 3, 2, 1

Первый устанавливает первого пользователя как администратора, и определяет администратора как его главную роль. Второй также дает ему роль «пользователь», просто потому, что она должна быть у каждого пользователя сайта. Третья запись дает второму пользователю главную роль «пользователя».

Определив эти роли, давайте посмотрим, как ChromeMyAdmin обрабатывает удаления значений, которые связаны внешними ключами и установлены в Cascade (как их определил оператор Create выше).

Как видите, ситуация разрешается идеально. Логика заключается в MySQL, но очень важно видеть, что ChromeMyAdmin не только отправляет правильные команды, но и обновляет все, что нужно обновить.

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

Содействие

Вы можете найти полный исходный код ChromeMyAdmin на Github и драйвер JS MySQL, который поддерживает его вместе с ним . Оба проекта принимают участие и могут использовать вашу помощь. Yoichiro будет смотреть на ваши PR и утверждать их в каждом конкретном случае, или вы можете просто раскошелиться и сделать свою собственную версию.

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

Вывод

Какой финальный счет? Стоит ли ChromeMyAdmin? Давайте посмотрим на плюсы и минусы.

Pros

  • автоматически устанавливается на каждый экземпляр Chrome, в который вы вошли, и готов к работе
  • быстро, несмотря на использование Bootstrap для графического интерфейса
  • с открытым исходным кодом, может быть легко расширен и обновлен

Cons

  • автоматически устанавливается, но не передает сохраненные соединения. Некоторые могут быть удаленными и утомительными для повторного добавления.
  • нет SSL или других расширенных параметров подключения — поддерживаются только самые основные типы подключения. Это хорошо, когда вы занимаетесь локальной разработкой, но, вероятно, делает ее совершенно бесполезной при проверке или обслуживании производственной базы данных. Опять же, не могли бы вы использовать для этого что-нибудь кроме приложения для бегемота, такого как Workbench?
  • нет внешних ключей
  • невозможно выбрать несколько записей для множественного удаления (удалить несколько таблиц одновременно, удалить несколько строк одновременно)
  • не может деактивировать проверку внешнего ключа при удалении (очень важно при отбрасывании данных с внешними ключами, особенно во время разработки, когда необходимо быстро повторить)
  • не может выполнить несколько операторов одновременно

В целом, ChromeMyAdmin — достойный инструмент для базового управления базами данных. Он автоматически установится для вас, позволит вам выполнять основные операции, и это все, что вам действительно нужно при выполнении небольших задач или демонстраций, и вам не нужно устанавливать Workbench, PhpMyAdmin, SequelPro или другое более полноценное приложение. Со временем, я надеюсь увидеть, что это резко превратится в нечто, что может конкурировать с лучшими из них прямо сейчас, но до тех пор я намереваюсь использовать это для простых задач и следить за этим.

Вы пробовали это? Вы бы заменили свой текущий инструмент MySQL им? Дайте нам знать в комментариях ниже.