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 (3306
→ 3306
) 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 mengaturMYSQL_ALLOW_EMPTY_PASSWORD=1
.MYSQL_RANDOM_ROOT_PASSWORD
→ kata sandi acak akan dibuat saat wadah dimulai. Anda harus mengaturMYSQL_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.