Skip to content
VDS · Basis data

MySQL dan MariaDB: instalasi dan database pertama Anda

Instalasi server database di VDS, konfigurasi awal yang aman, membuat database dan user, memeriksa koneksi, dan error umum pertama.

Diperbarui 23 Agustus 2026

MySQL dan cabang kompatibelnya, MariaDB, adalah yang menjalankan sebagian besar situs PHP. Perintah dan kliennya sama; perbedaannya mulai terlihat pada penyetelan halus.

Instalasi

apt update && apt install -y mariadb-server      # Debian, Ubuntu
dnf install -y mariadb-server                    # AlmaLinux, CentOS Stream
systemctl enable --now mariadb

Jika Anda secara khusus membutuhkan MySQL dari Oracle, pasang mysql-server dari repositori resminya. Layanannya akan bernama mysql.

Tutup celah dasar segera:

mariadb-secure-installation

Skrip akan meminta Anda menetapkan kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh, dan menghapus database uji. Jawab "yes" untuk semuanya.

Database dan pengguna

Jangan menjalankan aplikasi Anda sebagai root — buat pengguna terpisah untuk setiap proyek:

CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;

Encoding utf8mb4 wajib: utf8 lama di MySQL hanya menyimpan tiga byte per karakter dan rusak pada emoji serta beberapa karakter.

Periksa:

mariadb -u shop -p shop -e "SELECT 1;"

Selengkapnya tentang izin, lihat pengguna dan grant.

Konfigurasi awal

Pengaturannya berada di /etc/mysql/mariadb.conf.d/50-server.cnf atau /etc/my.cnf.d/. Berikut minimum yang harus segera Anda perbaiki:

[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100

bind-address = 127.0.0.1 membuat database hanya dapat diakses secara lokal. Jika aplikasi Anda berada di mesin yang sama, memang begitu seharusnya. Jika Anda membutuhkan database dari luar, baca akses jarak jauh sebelum mengubah apa pun.

Ukuran buffer pool dipilih berdasarkan tier — lihat penyetelan memori.

Setelah mengedit: systemctl restart mariadb.

Kesalahan umum

GejalaPenyebabYang harus dilakukan
Access denied for userKata sandi salah atau entri pengguna terikat ke host yang berbedaPeriksa SELECT user, host FROM mysql.user;
Can't connect through socketLayanan tidak berjalansystemctl status mariadb, periksa journalctl -u mariadb
Too many connectionsAplikasi tidak menutup koneksiPool di sisi aplikasi, lalu max_connections
Teks rusakEncoding berbeda antara database dan koneksiSeragamkan semuanya ke utf8mb4
Database tidak menyala setelah rebootLayanan tidak diatur untuk menyala saat bootsystemctl enable mariadb

Tidak ada pencadangan otomatis untuk mesin ini. Siapkan dump tepat setelah tabel pertama Anda berfungsi — pencadangan database. Disk NVMe cepat, tetapi hanya ada satu.