Створити Docker-образ для MySQL

Давайте швидко створимо docker-образ для MySQL!

Вам знадобляться наступні інструкції для налаштування робочого додатку MySQL, як описано в цій статті.

увійти (локально)
mysql -u root -p

створити користувачів та хости (SQL сервер буде приймати з'єднання від цих хостів, що означає IP-адреси, і прийматиме ці імена користувачів)

mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘PASSWORD’;
mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

перевірити, чи відображається користувач у MySQL

SELECT user,host FROM mysql.user;

перевірити порти для SQL

netstat -tlnp

Перш за все, отримайте VM/Ec2-образ. У екземплярі встановіть Docker. Для цього використовуйте наступні команди:

sudo apt-get install docker.io

(якщо у вас система Debian)

sudo yum install docker.io

(якщо у вас система RHEL)

Після цього виконайте наступне:

docker pull mysql

Вищезазначена команда завантажить вашу локальну систему-незалежну версію MySQL.
Увесь світ використовує Docker, тому що він здатний запускати додатки, незалежно від середовища вашого локального комп'ютера.

Наприклад, ви не можете запустити гру для Linux на Windows OS. Але, якщо ви встановите Docker на Windows, ви зможете запустити ігри для Linux.

Ви можете запускати все що завгодно. Docker подбає про бібліотеки та всі залежності для гри-додатка на Linux, і надасть їй середовище Linux OS, щоб ви могли запускати такі додатки на Windows OS.

Перевірте, чи зображення успішно завантажене:

docker images

pic

pic

pic

Перевірте, чи було встановлено зображення

Тепер давайте запустимо додаток MySQL.

docker run mysql

Вищезазначена команда не працюватиме. Я навмисно хочу, щоб ви виконали цю команду і побачили помилку.

Натомість спробуйте виконати таку команду.
Попередня/вища команда не працюватиме, оскільки ми не вказали обов'язкові аргументи для SQL, а саме — пароль.

Кожна нова інсталяція MySQL вимагає пароля за замовчуванням. Це універсальний процес. Без вказівки пароля MySQL не буде встановлено на жодному комп'ютері, чи то Windows, Linux чи Unix.

Отже, наступна команда працюватиме:

docker run — name mysql1 -e MYSQLROOTPASSWORD=password -d mysql

pic

Ця команда встановить MySQL в систему Docker. Команда поверне номер контейнера, що означає, що вона успішно виконалася.

Далі... Далі...

docker ps

pic

Тепер давайте зайдемо в систему MySQL.

Виконайте наступну команду:

docker exec -it mysql1 /bin/bash

  • -it означає режим підключення.
    Це означає, що ваш термінал продовжить працювати і увійде в середовище MySQL.

  • Якби ви вказали -dt замість -it, ваш термінал продовжив би з того місця, де ви зупинили останню команду.

  • -it дозволить вам підключитися до середовища MySQL, подібно до того, як ви підключаєтесь до віддаленого комп'ютера через ssh в будь-якому куточку світу.

pic

Ми всередині...

Ми всередині...

Тепер ми запустимо MySQL і створимо користувача, хост та базу даних всередині.

Отже, давайте виконаємо:

mysql

Виконання цієї команди призведе до помилки, тому що MySQL вимагає користувача, хоста (хост означає IP комп'ютера) та пароля.

pic

Отже, давайте вкажемо користувача, хост (IP) та пароль.

root@localhost за замовчуванням не має доступу до MySQL додатку.

Тут root — це ім'я користувача, а localhost — це хост, тобто локальний комп'ютер.

Хост може бути IP-адресою комп'ютера.
Це може бути також IP вашого iPhone (якщо ви хочете отримати доступ до MySQL з вашого iPhone).

pic

Ми всередині… ми всередині…

Ми всередині...

Тепер ми створимо:

  • базу даних
  • користувача
  • хост (IP)

pic

Давайте створимо базу даних та таблицю. Для цього в середовищі MySQL виконайте наступні команди:

CREATE DATABASE xyz;

USE xyz;

Виконання цієї команди створить базу даних та переключить вас на неї в поточній сесії.

Швидко... дуже швидко...

CREATE TABLE table1 (age, int, city varchar(255));

INSERT INTO table1 (age, city) VALUES (10, ‘jammu’);

SELECT * FROM table1;

pic

Створення таблиці та вставка випадкових значень.

Тепер,

створимо користувача та хост, щоб ми могли отримати доступ до цієї бази даних з іншого комп'ютера або iPhone.
(На iPhone має бути встановлений додаток MySQL Workbench)

Тепер вам потрібно:

  • IP-адреса пристрою, з якого ви будете отримувати доступ до бази даних
  • IP-адреса сервера, на якому працює Docker

IP-адресу сервера можна знайти в AWS/GCP/Azure. Я запускав Docker на віртуальній машині в GCP.
Отже, IP-адреса відображається тут.

pic

Щоб дізнатися IP-адресу пристрою, з якого ви будете підключатися до MySQL, на вашому локальному комп'ютері відкрийте cmd або термінал

і перевірте IP (локальний комп'ютер) — комп'ютер/телефон, з якого ви будете підключатися до MySQL сервера.

Я використовую Windows, тому я зробив ось так, щоб перевірити публічну IP-адресу:

curl ip.dnslab.link

(це працює в командному рядку Windows)

pic

Моя публічна IP-адреса локального комп'ютера… НЕ локальна IP-адреса (локальні IP-адреси показуються в ifconfig і ipconfig)

Отже, я отримав IP-адресу свого локального комп'ютера…

Тепер я повертаюся до віртуальної машини, відкриваю MySQL і створюю користувача та хост.

Виконайте ці команди:

mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘PASSWORD’;
mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

pic

Виконайте це… це запустить MySQL сервер в Docker.

mysqld start

pic

Готово… Готово! Все налаштовано.
Ми створили користувача та хост (IP).

Тепер цей MySQL додаток розпізнає цей ім'я користувача та хост (IP). Ми можемо підключитися з будь-якої точки світу, з цього хоста з цим ім'ям користувача.

Тепер, повернувшись до моєї Windows машини, швидко встановимо додаток MySQL Workbench.

Щоб перевірити підключення… зробіть наступне:

запустіть MySQL Workbench > натисніть на Database > Migration > Start Migration > Source Selection

Введіть ім'я користувача та хост.

pic

pic

Натисніть "Test Connection"

pic

Ось і все!

Ви успішно встановили MySQL додаток на Docker (на сервері) і змогли підключитися до нього з іншого комп'ютера, з іншого куточка світу.

Перекладено з: create mysql docker image

Leave a Reply

Your email address will not be published. Required fields are marked *