Menginstal MySQL/MariaDB

Alessio, Héctor Louzao, Ankur Sinha Versi F37 Last review: 2022-06-10
MySQL adalah sistem manajemen basis data relasional (RDBMS) yang populer. MariaDB lahir sebagai cabang dari MySQL. Saat ini, kedua produk tersebut sedikit berbeda. Migrasi data dari satu sistem ke sistem lainnya mungkin bukan tugas yang mudah.

MariaDB sepenuhnya dilisensikan di bawah GPLv2, sementara MySQL memiliki dua opsi lisensi: GPLv2 (untuk edisi Community) dan Enterprise.

Di repositori Fedora, Anda dapat menemukan:

  • MariaDB 10.3 (sebagai paket reguler atau sebagai modul)

  • MariaDB 10.4 (sebagai modul)

  • MySQL 8.0 Edisi Komunitas (sebagai paket reguler atau sebagai modul)

Paket MariaDB dan MySQL bertabrakan karena keduanya menyediakan file yang serupa. Oleh karena itu, Anda hanya dapat menginstal salah satu dari keduanya, baik MariaDB maupun MySQL, tetapi tidak keduanya.

Selain itu, Anda juga dapat menginstal MySQL Community Edition (8.0 atau 5.7) dari repositori yang dikelola oleh Oracle/MySQL sendiri.

Instal dari Oracle MySQL

This page discusses third-party software sources not officially affiliated with or endorsed by the Fedora Project. Use them at your own discretion. Fedora recommends the use of free and open source software and avoidance of software encumbered by patents.

Menambahkan repositori MySQL ke Fedora

Silakan unduh paket rilis yang disediakan oleh Oracle dari: https://dev.mysql.com/downloads/repo/yum/ Setelah diunduh, silakan instal menggunakan dnf:

sudo dnf install <path to downloaded rpm>

Harap diperhatikan bahwa repositori ini disediakan oleh Oracle, sehingga segala masalah/bug yang ditemukan perlu dilaporkan kepada mereka melalui saluran komunikasi mereka: https://www.mysql.com/about/faq/

Menginstal MySQL di Fedora

sudo dnf install mysql-server

Mulai Layanan MySQL dan Aktifkan saat login:

sudo systemctl start mysqld
sudo systemctl enable mysqld

temukan Kata Sandi Default, Untuk alasan keamanan, MySQL menghasilkan kunci root sementara. Perlu diperhatikan bahwa MySQL memiliki kebijakan keamanan yang lebih ketat daripada MariaDB.

sudo grep 'temporary password' /var/log/mysqld.log

Konfigurasi MySQL sebelum penggunaan pertama

sudo mysql_secure_installation

Kemudian, jawab pertanyaan keamanan sesuai keinginan Anda. Atau cukup jawab ya untuk semuanya.

Menggunakan MySQL

sudo mysql -u root -p

Menghapus MySQL

Saya menyarankan untuk menghapus dengan cara berikut, cara yang paling tepat dan aman tanpa menghapus banyak dependensi adalah:

sudo rpm -e --nodeps mysql-community-libs mysql-community-common mysql-community-server

Instal dari Repositori Utama Fedora

Komunitas menyediakan paket MySQL di repositori utama.

sudo dnf install {community-mysql-server|mariadb-server}

Konfigurasi MySQL/MariaDB

Aktifkan layanan saat boot dan mulai:

sudo systemctl enable {mysqld|mariadb}
sudo systemctl start  {mysqld|mariadb}

Konfigurasi SQL sebelum penggunaan pertama

sudo mysql_secure_installation

Beberapa pertanyaan akan diajukan: jawablah sesuai keinginan Anda; menjawab ya untuk semua pertanyaan tersebut adalah hal yang wajar.

Menggunakan SQL

sudo mysql -u root -p

Menghapus SQL

Saya mengusulkan untuk menghapus dengan cara berikut:

sudo dnf hapus {community-mysql-server|mariadb-server}

Instal dari Podman

Mengunduh Gambar Docker SQL Server

podman pull {mysql/mysql-server|mariadb/server}

Lihat Log

podman logs {mysql|mariadb}

Memulai Instans Server MySQL

Perintah di bawah ini berisi kata sandi acak yang dihasilkan untuk pengguna root;

podman logs mysql 2>&1 | grep GENERATED
podman run -d --name=mysql -e MYSQL_ROOT_PASSWORD=mypassword mysql/mysql-server

Memulai Instans Server MariaDB

podman run -d --name=mariadb -ed MYSQL_ROOT_PASSWORD=mypassword mariadb/server
Kata sandi kosong secara default untuk MariaDB
Opsi -d yang digunakan untuk BOTH dalam perintah podman run di atas membuat kontainer berjalan di latar belakang. Gunakan perintah ini untuk memantau output dari kontainer:

Menghubungkan ke Server MySQL dari dalam Kontainer

podman exec -it mysql mysql -uroot -p

Anda harus mereset kata sandi root server dengan menjalankan perintah berikut:

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

Menghubungkan ke Server MariaDB dari dalam Kontainer

podman exec -it mariadb bash

Mengatur ulang kata sandi SQL_ROOT_PASSWORD

Anda harus mereset kata sandi root server dengan menjalankan perintah berikut:

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

Menghentikan dan Menghapus Kontainer SQL

podman {start|stop|restart} {mysql|mariadb}

Menghapus Kontainer SQL

podman rm {mysql|mariadb}
Anda dapat melakukan hal yang sama dengan docker, cukup ganti podman dengan docker.

Menggunakan RDBMS

Hubungkan ke shell MySQL/MariaDB menggunakan perintah mysql.

Untuk keduanya, perintahnya adalah mysql. Sintaks dan opsi umumnya sama.

$ mysql -u root -p

Setelah mendapatkan akses ke shell, Anda dapat mendapatkan versi yang sedang berjalan dari perangkat lunak:

mysql> SELECT version();

Anda dapat membuat database:

mysql> create schema test;

Buat pengguna:

mysql> GRANT ALL PRIVILEGES ON test.* TO 'my_user'@'localhost' IDENTIFIED BY 'PaSsWoRd';

List the available databases:

mysql> show schemas;

Lokasi berkas

Penyimpanan disk basis data terletak di /var/lib/mysql.

Cara Mengizinkan Akses Jarak Jauh MySQL/MariaDB/MYSQL Community

Tambahkan Aturan Baru ke Firewalld

Buka port SQL (3306) pada FireWalld:

sudo firewall-cmd --permanent --zone=public --add-service=mysql

OR

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp

Mulai ulang layanan firewalld.service

systemctl restart firewalld.service

Pengeditan Berkas Konfigurasi:

Berkas konfigurasi:

  • MySQL → /etc/my.cnf/

  • MySQL Community → /etc/my.cnf.d/community-mysql-server.cnf

  • MariaDB → /etc/my.conf

Anda dapat memastikan hal tersebut dengan perintah berikut rpm -qc [package].

Navigasi ke baris yang dimulai dengan direktif bind-address. Baris tersebut akan terlihat seperti ini: Anda dapat mengatur direktif ini ke alamat IP wildcard, yaitu *, ::, atau 0.0.0.0:

bind-address            = 0.0.0.0

Setelah mengubah baris ini, simpan dan tutup berkas, lalu restart layanan MySQL:

sudo systemctl restart {mysqld|mariadb}

Membuat Pengguna

CREATE USER 'your_username'@'host_ip_addr' IDENTIFIED BY 'your_password';
Ganti your_username dan your_password sesuai dengan nama pengguna dan kata sandi yang Anda inginkan. Di sini, host_ip_addr adalah nama host atau alamat IP komputer dari mana Anda ingin terhubung ke server MySQL/MariaDB. Anda juga dapat menggunakan % sebagai host_ip_addr jika ingin terhubung dari komputer mana pun. Anda juga dapat menggunakan format seperti 192.168.2.% jika ingin terhubung dari komputer-komputer dalam rentang alamat IP 192.168.2.1 – 192.168.2.254.

Allow Access

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%';
  IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;

OR

Seringkali orang ingin membuat pengguna “root” yang dapat terhubung dari mana saja. Sebagai contoh, kita akan melakukannya, tetapi untuk memperbaikinya, kita akan membuat pengguna root yang dapat terhubung dari mana saja di jaringan area lokal (LAN).

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%'
  IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Menghubungkan

mysql -u [USER] -h [IP] -p

Cara Mengatasi Masalah dalam SQL

Versi:

dnf list installed | grep -i -e maria -e mysql -e galera

Periksa parameter dalam berkas konfigurasi:

  • MySQL:

mysqld --print-defaults
  • Komunitas MariaDB/MySQL:

/usr/libexec/mysqld --print-defaults
Kompatibilitas antara versi yang berbeda tidak diperbolehkan. Cukup instal salah satunya.

Cara Mengakses Log Kesalahan SQL

Seringkali, penyebab utama perlambatan, crash, atau perilaku tak terduga lainnya dalam SQL dapat Dalam banyak kasus, log kesalahan paling mudah dibaca menggunakan program less, sebuah perintah baris perintah u

Jika SQL tidak berperilaku sesuai yang diharapkan, Anda dapat memperoleh informasi lebih lanjut tentang sumber masalahnya

  • systemctl status mysqld.service tidak berjalan dengan baik, Informasi ini tidak menjelaskan dengan jelas apa yang sedang terjadi?, setelah perintah ini, Anda harus mengetik journalctl -xe -u mariadb -u mysqld.

  • Periksa berkas log, yang dapat ditemukan di /var/log/mysql/mysqld.log untuk MySQL, dan /var/log/mariabd untuk MariaDB.

Cara Mengatasi Kesalahan Socket dalam SQL

SQL mengelola koneksi ke server basis data melalui penggunaan berkas soket, yaitu jenis berkas khusus yang memfasilitasi komunikasi antara proses-proses yang berbeda. Berkas soket server MySQL bernama mysqld.sock dan pada sistem Ubuntu biasanya disimpan di direktori /var/run/mysqld/. Berkas ini dibuat secara otomatis oleh layanan MySQL.

Terkadang, perubahan pada sistem Anda atau konfigurasi SQL dapat menyebabkan SQL tidak dapat membaca berkas soket, sehingga Anda tidak dapat mengakses basis data Anda. Kesalahan soket yang paling umum terlihat seperti ini:

ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket ‘/var/run/mysqld/mysqld.sock’ (2)

Ada beberapa alasan mengapa kesalahan ini dapat terjadi, dan beberapa cara potensial untuk mengatasinya. Salah satu penyebab umum kesalahan ini adalah layanan SQL dihentikan atau tidak pernah dimulai sejak awal, artinya layanan tersebut tidak dapat membuat berkas soket sejak awal. Untuk mengetahui apakah ini penyebab kesalahan yang Anda alami, coba mulai layanan tersebut dengan perintah systemctl:

sudo systemctl start {mysqld|mariadb}

Kemudian coba akses prompt MySQL lagi. Jika Anda masih menerima kesalahan soket, periksa kembali lokasi di mana instalasi MySQL Anda mencari berkas soket. Informasi ini dapat ditemukan di berkas mysqld.cnf:

Cari parameter socket di bagian [mysqld] dari berkas ini. Parameter tersebut akan terlihat seperti ini:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Tutup berkas ini, lalu pastikan berkas mysqld.sock ada dengan menjalankan perintah ls pada direktori tempat SQL mengharapkan berkas tersebut berada:

ls -a /var/run/mysqld/

Jika berkas soket ada, Anda akan melihatnya dalam output perintah ini:

mysqld.pid  mysqld.sock  mysqld.sock.lock

Jika file tidak ada, penyebabnya mungkin karena MySQL mencoba membuatnya, tetapi tidak memiliki izin yang cukup untuk melakukannya. Anda dapat memastikan izin yang benar telah diterapkan dengan mengubah kepemilikan direktori menjadi pengguna dan grup mysql:

sudo chown mysql:mysql /var/run/mysqld/

Pastikan pengguna MySQL memiliki izin yang sesuai untuk direktori tersebut. Menyetel izin menjadi 775 biasanya akan berfungsi dalam kebanyakan kasus:

sudo chmod -R 755 /var/run/mysqld/

Akhirnya, restart layanan MySQL agar dapat mencoba membuat berkas soket lagi:

sudo systemctl restart {mysqld|mariadb}

Coba akses prompt MySQL sekali lagi. Jika Anda masih mengalami kesalahan soket, kemungkinan ada masalah yang lebih serius dengan instance MySQL Anda. Dalam hal ini, Anda sebaiknya memeriksa log kesalahan untuk melihat apakah ada petunjuk yang dapat membantu.