GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Setup MySQL Dengan Docker Di Linux

Jika Anda baru mengenal MySQL atau seseorang yang ingin menginstal database MySQL dengan cepat dan mudah, maka artikel ini cocok untuk Anda. Pada artikel ini, kita akan mempelajari cara mengatur MySQL dengan Docker dan penulisan Docker di Linux.

Mari kita mulai dengan menyiapkan lingkungan buruh pelabuhan untuk meluncurkan wadah MySQL.

1. Instal Docker

Sebelum memutar wadah buruh pelabuhan MySQL, Anda harus menginstal buruh pelabuhan dan komposisi buruh pelabuhan di mesin Anda. Jika Anda belum menginstal docker dan docker-compose, lihat panduan berikut:

  • Cara Memasang Docker Di CentOS
  • Cara Menginstal Docker di Ubuntu

Anda juga dapat merujuk tautan dokumentasi Docker resmi yang diberikan di bawah ini untuk mengetahui cara menyiapkan penulisan Docker dan Docker.

  • https://docs.docker.com/engine/install/
  • https://docs.docker.com/compose/install/

Anda dapat menjalankan perintah berikut untuk memeriksa versi docker dan komposisi docker yang Anda jalankan.

$ docker --version
Docker version 20.10.11, build dea9396
$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. Unduh Gambar MySQL Docker

Buka Hub Docker untuk mendapatkan gambar buruh pelabuhan MySQL . Yang penting Anda harus memutuskan versi MySQL yang akan Anda jalankan.

Jalankan perintah berikut untuk menarik image MySQL dari hub buruh pelabuhan ke mesin Anda.

$ docker pull mysql:latest

Perhatian :Tidak perlu menggunakan tag "latest ", secara default akan menarik gambar terbaru.

Untuk memeriksa apakah gambar tersedia secara lokal, Anda dapat menjalankan perintah berikut:

$ docker images mysql

Contoh keluaran:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

Sekarang gambar siap untuk memutar wadah. Anda juga dapat melewati langkah ini dan menjalankan "docker run " perintah seperti yang ditunjukkan di bagian berikutnya yang akan menarik gambar jika tidak tersedia secara lokal.

3. Luncurkan Penampung MySQL

Jalankan perintah berikut untuk menjalankan wadah buruh pelabuhan MySQL:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql

Mari kita uraikan perintah di atas dan lihat apa yang dilakukan setiap flag.

--name → Untuk memberi nama pada wadah Anda. Jika Anda tidak menentukan flag ini, buruh pelabuhan akan menetapkan beberapa nama yang dibuat secara acak.

-p → Pemetaan pelabuhan. MySQL akan mendengarkan di port 3306 jadi kami memetakan port (33063306 ) dari mesin Host Anda ke wadah buruh pelabuhan. Port host tidak perlu 3306 , itu bisa apa saja yang tersedia untuk digunakan.

Jalankan netstat berikut ini perintah di mesin lokal Anda untuk memeriksa apakah port yang dipetakan mendengarkan atau tidak setelah container diluncurkan.

$ netstat -tlnup | grep -i 3306

Contoh keluaran:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      168870/docker-proxy 
tcp6       0      0 :::3306                 :::*                    LISTEN      168878/docker-proxy 

-v → Pasang volume ke wadah. Perilaku default buruh pelabuhan adalah tidak akan menyimpan data setelah wadah dihapus, sehingga Anda akan kehilangan semua data Anda.

Untuk membuat penyimpanan persisten, saya telah membuat volume bernama "mysql_volume ". MySQL menyimpan data di /var/lib/mysql/ di dalam wadah dan di sini dipetakan ke direktori localhost /var/lib/docker/volumes/mysql_volume1/_data , sehingga data Anda akan persisten.

Jika Anda ingin tahu lebih banyak tentang volume buruh pelabuhan, lihat artikel kami yang terperinci sama.

-d → Akan memulai dan menjalankan wadah dalam mode terpisah. Jika Anda menghilangkan -d bendera, maka Anda akan melihat log startup kontainer di terminal dan Anda harus membuka sesi terminal baru untuk terhubung ke kontainer.

-e → Variabel lingkungan. Anda harus mengatur kata sandi pengguna root mysql menggunakan salah satu dari parameter di bawah ini.

  • MYSQL_ROOT_PASSWORD → Siapkan kata sandi Anda sendiri menggunakan variabel lingkungan ini.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Sandi kosong atau Null akan disetel. Anda harus mengatur MYSQL_ALLOW_EMPTY_PASSWORD=1 .
  • MYSQL_RANDOM_ROOT_PASSWORD → kata sandi acak akan dibuat saat wadah dimulai. Anda harus mengatur MYSQL_RANDOM_ROOT_PASSWORD=1 untuk membuat kata sandi acak.

Jika Anda melewatkan langkah ini, maka akan muncul error seperti gambar di bawah ini.

4. Periksa Status Penampung MySQL

Anda dapat memeriksa status container yang diluncurkan menggunakan perintah berikut:

$ docker ps

Contoh keluaran:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5. Hubungkan Ke Database MySQL

Jalankan perintah berikut untuk terhubung ke wadah MySQL.

$ docker exec -it mysql bash

Hubungkan ke database MySQL sebagai root pengguna dengan menjalankan perintah berikut. Dalam kasus saya, saya telah mengatur kata sandi saya sendiri melalui MYSQL_ROOT_PASSWORD .

$ mysql -u root -p

Jika Anda telah menggunakan MYSQL_RANDOM_ROOT_PASSWORD=1 saat meluncurkan wadah, maka Anda bisa mendapatkan kata sandi yang dibuat secara otomatis dari log.

$ docker logs
$ docker logs mysql

Kata sandi root yang dibuat secara otomatis akan panjang dan itu bukan sesuatu yang harus diingat. Anda dapat mengatur ulang kata sandi root dengan menjalankan kueri berikut.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

Ganti kata sandi 'mysqlpassword' dengan kata sandi Anda sendiri. Anda juga dapat membuat pengguna Anda sendiri dan memberinya hak istimewa sesuai kebutuhan.

6. Muat Data Sampel

Tujuan utama menyiapkan mysql adalah memuat beberapa data dan menjalankan kueri terhadapnya. Ada beberapa cara Anda dapat memuat data. Saya memiliki file contoh bernama "load_data.sql " dengan pertanyaan berikut di dalamnya.

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

Pendekatan pertama adalah menyalin data dari mesin lokal ke wadah buruh pelabuhan menggunakan "docker cp " perintah.

$ docker cp load_data.sql mysql:/tmp

$ docker exec -it mysql bash

$ ls -l /tmp/

Sekarang Anda dapat terhubung ke klien mysql dan menjalankan perintah sumber atau mengarahkan file ke klien mysql.

$ mysql -u root -p

mysql> source /tmp/load_data.sql

Atau

$ mysql -u root -p < /tmp/load_data.sql

Hubungkan ke database dan kueri tabel Anda.

$ mysql -u root -p

mysql> show databases;

mysql> use football;

mysql> show tables;

mysql> select * from players;

Pendekatan kedua adalah mengarahkan kembali .sql file saat menjalankan docker exec perintah.

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. Setup MySQL Container Menggunakan Docker-Compose

Alih-alih menarik gambar dan menjalankan docker run perintah, Anda dapat menggunakan docker-compose untuk memutar wadah dengan cepat. Docker-compose paling cocok jika Anda memiliki lebih dari satu container yang akan dibuat.

Buat file bernama docker-compose.yml atau docker-compose.yaml mengajukan. Copy dan paste kode yaml berikut. Ini sama dengan apa yang saya jalankan secara manual di bagian sebelumnya.

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

Sekarang jalankan perintah berikut yang akan menjalankan wadah buruh pelabuhan MySQL.

$ docker-compose up

Jalankan perintah berikut untuk memeriksa status container yang diluncurkan menggunakan docker-compose:

$ docker-compose ps

Contoh keluaran:

Name              Command             State                          Ports                       
-------------------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. Terhubung ke Database MySQL Menggunakan MySQL Workbench

Sampai sekarang kita telah melihat bagaimana menghubungkan ke database menggunakan klien mysql dari dalam wadah. Anda juga dapat terhubung ke database menggunakan klien GUI seperti meja kerja mysql, dbeaver, Heidi SQL, dll.

Hal penting yang perlu diperhatikan terlepas dari apa klien GUI yang Anda gunakan, port apa yang dipetakan saat Anda meluncurkan wadah.

Dalam kasus saya, saya telah memetakan localhost (3306 ) -> wadah (3306 ). Jadi Jika saya harus membuat koneksi ke database, saya harus terhubung ke localhost:3306 atau 127.0.01:3306 .

Saya menggunakan MySQL Workbench sebagai klien GUI saya. Jika Anda belum menginstal MySQL workbench di mesin Anda, maka Anda dapat menggunakan instruksi di bawah ini untuk menginstal yang sama.

8.1. Instal MySQL Workbench di Linux

Navigasikan ke situs resmi untuk mengunduh file paket. Anda harus memilih sistem operasi Anda untuk mengunduh .deb atau .rpm berkas.

Pada langkah selanjutnya, ia akan meminta Anda untuk Masuk atau Mendaftar. Anda dapat melewati proses masuk atau mendaftar dengan mengeklik opsi "Tidak, terima kasih, Mulai unduhan saya".

Pada sistem berbasis Debian, instal MySQL Workbench seperti di bawah ini:

$ cd <path to downloaded .deb file>

$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

Pada sistem berbasis RHEL, instal MySQL Workbench seperti di bawah ini:

$ cd <path to downloaded .rpm file>

$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

Setelah instalasi selesai, Anda dapat meluncurkan meja kerja mysql baik dari menu atau tanda hubung.

Luncurkan MySQL Workbench

8.2. Hubungkan ke Database MySQL

Hubungkan ke database yang berjalan di dalam wadah buruh pelabuhan. Anda harus mencoba terhubung ke localhost:3306 atau localhost:<port-no> tergantung pada cara penampung Anda disiapkan.

Sebelum menghubungkan ke database Anda dapat menekan "Uji Koneksi " untuk memeriksa meja kerja MySQL berhasil terhubung ke instance database.

Sekarang Anda dapat mulai menjalankan kueri terhadap tabel yang Anda buat.

9. Kesimpulan

Pada artikel ini, kita telah melihat secara singkat cara meluncurkan kontainer MySQL di buruh pelabuhan menggunakan docker run dan docker-compose metode. Jika Anda ingin menyiapkan MySQL untuk tujuan pengujian atau pembelajaran, Docker sudah lebih dari cukup.

Semoga membantu.


Docker
  1. Cara Mengatur Registri Docker Pribadi di Rocky Linux 8

  2. Cara Mengatur LogAnalyzer dengan Rsyslog dan MySQL

  3. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  1. Cara Setup Pure-FTPD dengan MySQL di CentOS &RedHat

  2. Siapkan Nextcloud dengan Redis menggunakan Docker

  3. Cara Menginstal Jenkins dengan Docker

  1. Cara Setup Opencart di Rocky Linux/Centos 8 Dengan Apache, PHP, Mysql (LAMP Stack)

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menyebarkan Aplikasi dengan Rancher