Install MariaDB di Debian 12: Perbedaan antara revisi
Tidak ada ringkasan suntingan |
Tidak ada ringkasan suntingan |
||
| Baris 282: | Baris 282: | ||
== Menampilkan Data di Halaman PHP == | |||
Data di database bisa ditampilkan di halaman web memakai PHP. PHP terhubung ke MariaDB, menjalankan perintah <code>SELECT</code>, lalu hasilnya dicetak menjadi tabel HTML. Di praktek ini kita memakai user <code>guru</code>, bukan <code>root</code>. | |||
=== Menyiapkan Ulang Database === | |||
Pada langkah sebelumnya database <code>db_sekolah</code> sudah dihapus, jadi buat lagi. Masuk ke MariaDB | |||
<code>robie@debian:~$ sudo mariadb -u root</code> | |||
Buat database, tabel, dan isi datanya | |||
<code>MariaDB [(none)]> CREATE DATABASE db_sekolah;</code> | |||
<code>MariaDB [(none)]> USE db_sekolah;</code> | |||
<code>MariaDB [db_sekolah]> CREATE TABLE siswa ( | |||
nis VARCHAR(10) PRIMARY KEY, | |||
nama VARCHAR(50), | |||
kelas VARCHAR(10), | |||
jurusan VARCHAR(20) | |||
);</code> | |||
<code>MariaDB [db_sekolah]> INSERT INTO siswa (nis, nama, kelas, jurusan) VALUES ('001', 'Andi Pratama', 'XII', 'TJKT'), ('002', 'Budi Santoso', 'XII', 'TJKT'), ('003', 'Siti Aminah', 'XI', 'TJKT');</code> | |||
Buat user <code>guru</code> dan beri hak akses. Jika user sudah ada, perintah ini tidak akan error | |||
<code>MariaDB [db_sekolah]> CREATE USER IF NOT EXISTS 'guru'@'localhost' IDENTIFIED BY '12345';</code> | |||
<code>MariaDB [db_sekolah]> GRANT ALL PRIVILEGES ON db_sekolah.* TO 'guru'@'localhost';</code> | |||
<code>MariaDB [db_sekolah]> FLUSH PRIVILEGES;</code> | |||
<code>MariaDB [db_sekolah]> EXIT;</code> | |||
=== Install PHP === | |||
Install PHP beserta modul MySQL untuk PHP | |||
<code>robie@debian:~$ sudo apt install php php-mysql -y</code> | |||
Restart Apache agar PHP terbaca | |||
<code>robie@debian:~$ sudo systemctl restart apache2</code> | |||
Cek versi PHP | |||
<code>robie@debian:~$ php -v</code> | |||
=== Membuat Halaman PHP === | |||
Buat file PHP di folder web server | |||
<code>robie@debian:~$ sudo nano /var/www/html/siswa.php</code> | |||
Isi file dengan kode berikut | |||
<pre> | |||
<?php | |||
// 1. Data koneksi | |||
$host = "localhost"; | |||
$user = "guru"; | |||
$pass = "12345"; | |||
$db = "db_sekolah"; | |||
// 2. Membuat koneksi ke MariaDB | |||
$koneksi = mysqli_connect($host, $user, $pass, $db); | |||
// 3. Cek koneksi | |||
if (!$koneksi) { | |||
die("Koneksi gagal: " . mysqli_connect_error()); | |||
} | |||
// 4. Menjalankan perintah SQL | |||
$hasil = mysqli_query($koneksi, "SELECT * FROM siswa"); | |||
?> | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<title>Data Siswa</title> | |||
</head> | |||
<body> | |||
<h2>Data Siswa</h2> | |||
<table border="1" cellpadding="5" cellspacing="0"> | |||
<tr> | |||
<th>No</th> | |||
<th>NIS</th> | |||
<th>Nama</th> | |||
<th>Kelas</th> | |||
<th>Jurusan</th> | |||
</tr> | |||
<?php | |||
$no = 1; | |||
// 5. Mengambil data baris demi baris | |||
while ($row = mysqli_fetch_assoc($hasil)) { | |||
?> | |||
<tr> | |||
<td><?php echo $no++; ?></td> | |||
<td><?php echo htmlspecialchars($row['nis']); ?></td> | |||
<td><?php echo htmlspecialchars($row['nama']); ?></td> | |||
<td><?php echo htmlspecialchars($row['kelas']); ?></td> | |||
<td><?php echo htmlspecialchars($row['jurusan']); ?></td> | |||
</tr> | |||
<?php } ?> | |||
</table> | |||
</body> | |||
</html> | |||
<?php | |||
// 6. Menutup koneksi | |||
mysqli_close($koneksi); | |||
?> | |||
</pre> | |||
Simpan dengan menekan <code>CTRL+O</code>, <code>Enter</code>, lalu keluar dengan <code>CTRL+X</code>. | |||
Penjelasan fungsi yang dipakai: | |||
# <code>mysqli_connect()</code> untuk membuat koneksi ke database dengan host, user, password, dan nama database. | |||
# <code>mysqli_connect_error()</code> untuk menampilkan pesan jika koneksi gagal. | |||
# <code>mysqli_query()</code> untuk menjalankan perintah SQL, di sini <code>SELECT * FROM siswa</code>. | |||
# <code>mysqli_fetch_assoc()</code> untuk mengambil satu baris hasil dalam bentuk array dengan nama kolom sebagai kunci, contoh <code>$row['nama']</code>. Dipakai di dalam <code>while</code> agar semua baris terbaca. | |||
# <code>htmlspecialchars()</code> untuk mengamankan teks sebelum dicetak ke HTML. | |||
# <code>mysqli_close()</code> untuk menutup koneksi. | |||
=== Membuka Halaman di Browser === | |||
Buka browser lalu ketikkan alamat berikut | |||
<code>http://localhost/siswa.php</code> | |||
Jika dibuka dari komputer lain, ganti <code>localhost</code> dengan alamat IP server Debian. | |||
Jika berhasil, halaman akan menampilkan tabel seperti berikut | |||
+----+------+--------------+-------+---------+ | |||
| No | NIS | Nama | Kelas | Jurusan | | |||
+----+------+--------------+-------+---------+ | |||
| 1 | 001 | Andi Pratama | XII | TJKT | | |||
| 2 | 002 | Budi Santoso | XII | TJKT | | |||
| 3 | 003 | Siti Aminah | XI | TJKT | | |||
+----+------+--------------+-------+---------+ | |||
=== Jika Terjadi Error === | |||
# <code>Call to undefined function mysqli_connect()</code> artinya paket <code>php-mysql</code> belum terinstall atau Apache belum direstart. | |||
# <code>Access denied for user 'guru'@'localhost'</code> artinya password salah atau hak akses belum diberikan. Cek dengan <code>SHOW GRANTS FOR 'guru'@'localhost';</code>. | |||
# <code>Unknown database 'db_sekolah'</code> artinya database belum dibuat ulang. Ulangi langkah menyiapkan ulang database. | |||
# Halaman tidak terbuka atau file terunduh, artinya Apache belum jalan atau PHP belum aktif. Cek dengan <code>sudo systemctl status apache2</code> dan pastikan sudah restart Apache setelah install PHP. | |||
[[Kategori:Linux]] | [[Kategori:Linux]] | ||
[[Kategori:ASJ TKJ]] | [[Kategori:ASJ TKJ]] | ||
Revisi per 20 Oktober 2026 06.51
Pengertian Database
Database adalah kumpulan data yang disimpan secara teratur agar mudah dicari, diolah, dan ditampilkan. Contoh di sekolah data siswa tidak ditulis di buku satu per satu, tetapi disimpan dalam database dengan nama db_sekolah.
Untuk mengatur database dibutuhkan aplikasi yang disebut DBMS (Database Management System). Contoh DBMS adalah MariaDB, MySQL, PostgreSQL. Di praktek ini kita memakai MariaDB.
Bahasa untuk memerintah database disebut SQL (Structured Query Language). Yang dipakai di praktek ini dibagi 3:
- DDL untuk membuat struktur. Contoh
CREATE DATABASE,CREATE TABLE,DROP TABLE,DROP DATABASE. - DML untuk mengolah isi. Contoh
INSERT,SELECT,UPDATE,DELETE. - DCL untuk hak akses. Contoh
CREATE USER,GRANT,FLUSH PRIVILEGES.
Kenapa MariaDB di Debian 12
MariaDB adalah hasil fork dari MySQL yang gratis dan open source. Di Debian 12 MariaDB sudah menjadi database bawaan pengganti MySQL dengan versi 10.11.
Saat install ada 2 paket utama:
mariadb-serveruntuk service database yang jalan di belakang layar lewat port 3306.mariadb-clientuntuk perintahmariadbdanmysqllewat terminal.
Di Debian 12 user root memakai unix_socket, artinya login harus pakai sudo tanpa password seperti sudo mariadb -u root. Ini beda dengan Ubuntu yang biasanya diminta password saat install.
Istilah Dasar yang Dipakai di Praktek Ini
Agar tidak bingung saat praktek, hafalkan istilah berikut yang dipakai dengan contoh data siswa:
- Database
db_sekolahadalah lemari besarnya. - Tabel
siswaadalah satu laci di dalam lemari. - Kolom adalah judul tegak. Contoh
nis, nama, kelas, jurusan. - Baris atau record adalah isi mendatar. Contoh
'001', 'Andi Pratama', 'XII', 'TJKT'. - Primary Key adalah penanda unik agar tidak kembar. Di praktek ini
nis VARCHAR(10) PRIMARY KEY.
Alur praktek di bawah urutannya sama dengan cara kerja asli: install lalu cek service, masuk, lihat database, buat database, pilih database, buat tabel, isi data, edit, hapus sebagian, backup, atur user, baru hapus tabel dan database untuk latihan.
Install MariaDB di Debian 12
Untuk menginstall MariaDB di Debian 12 caranya mudah. lakukan perintah berikut pada terminal linux.
Update Sistem
robie@debian:~$ sudo apt update
Instal MariaDB
robie@debian:~$ sudo apt install mariadb-server mariadb-client -y
tunggu proses hingga selesai.
Proses install akan terlihat seperti berikut
robie@debian:~$ sudo apt install mariadb-server mariadb-client -y Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: galera-4 gawk libaio1 libdbi-perl libhtml-template-perl libsigsegv2 mariadb-client-core mariadb-server-core socat ... Setting up mariadb-server (1:10.11.4-1~deb12u1) ... Processing triggers for libc-bin ... robie@debian:~$
Cek Service MariaDB
Untuk mengecek service mariadb sudah berjalan ketikkan perintah berikut
robie@debian:~$ sudo systemctl status mariadb
Jika instalasi berhasil, akan terlihat pesan active (running).
Agar otomatis jalan saat komputer hidup
robie@debian:~$ sudo systemctl enable mariadb
Untuk mengecek versi
robie@debian:~$ mariadb --version
Masuk ke MariaDB lewat Terminal
Di Debian 12 user root memakai unix_socket, jadi masuk pakai sudo tanpa password
robie@debian:~$ sudo mariadb -u root -p
atau
robie@debian:~$ sudo mysql -u root
Jika berhasil akan terlihat seperti berikut
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MariaDB [(none)]>
Untuk keluar nanti ketik EXIT;
Mengecek Database
Setelah masuk ke MariaDB [(none)]> ketikkan perintah berikut untuk melihat database yang ada
MariaDB [(none)]> SHOW DATABASES;
akan terlihat seperti berikut
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
Membuat Database Baru
Contoh membuat database dengan nama db_sekolah
MariaDB [(none)]> CREATE DATABASE db_sekolah;
cek lagi dengan SHOW DATABASES; maka db_sekolah sudah ada.
Memilih Database
Untuk memakai database yang telah dibuat
MariaDB [(none)]> USE db_sekolah;
akan terlihat
Database changed MariaDB [db_sekolah]>
Membuat Tabel
Contoh membuat tabel siswa ke database db_sekolah yang telah dipilih
MariaDB [db_sekolah]> CREATE TABLE siswa (
nis VARCHAR(10) PRIMARY KEY,
nama VARCHAR(50),
kelas VARCHAR(10),
jurusan VARCHAR(20)
);
Untuk mengecek tabel
MariaDB [db_sekolah]> SHOW TABLES;
Untuk melihat struktur tabel
MariaDB [db_sekolah]> DESCRIBE siswa;
Menginputkan Data ke Tabel
Contoh input data siswa
MariaDB [db_sekolah]> INSERT INTO siswa (nis, nama, kelas, jurusan) VALUES ('001', 'Andi Pratama', 'XII', 'TJKT');
MariaDB [db_sekolah]> INSERT INTO siswa (nis, nama, kelas, jurusan) VALUES ('002', 'Budi Santoso', 'XII', 'TJKT'), ('003', 'Siti Aminah', 'XI', 'TJKT');
Untuk melihat isi tabel
MariaDB [db_sekolah]> SELECT * FROM siswa;
akan terlihat seperti berikut
+------+--------------+-------+---------+ | nis | nama | kelas | jurusan | +------+--------------+-------+---------+ | 001 | Andi Pratama | XII | TJKT | | 002 | Budi Santoso | XII | TJKT | | 003 | Siti Aminah | XI | TJKT | +------+--------------+-------+---------+
Mengedit Data di Tabel
Contoh mengedit kelas Siti Aminah dari XI menjadi XII
MariaDB [db_sekolah]> UPDATE siswa SET kelas='XII' WHERE nis='003';
cek lagi dengan SELECT * FROM siswa WHERE nis='003';
Menghapus Data di Tabel
Contoh menghapus data Budi Santoso
MariaDB [db_sekolah]> DELETE FROM siswa WHERE nis='002';
cek lagi dengan SELECT * FROM siswa; maka tinggal 2 data.
Backup dan Restore Database
Lakukan backup sebelum menghapus tabel atau database. Harus keluar dulu dari mariadb dengan EXIT;
robie@debian:~$ sudo mysqldump -u root -p db_sekolah > backup-sekolah.sql
masukkan password root lalu cek hasil backup
robie@debian:~$ ls -lh backup-sekolah.sql
akan terlihat seperti berikut
-rw-r--r-- 1 robie robie 2,5K Okt 13 10:00 backup-sekolah.sql
Untuk melihat isi file backup
robie@debian:~$ cat backup-sekolah.sql
Untuk restore ke database baru. Contoh restore ke db_sekolah_baru
MariaDB [(none)]> CREATE DATABASE db_sekolah_baru;
MariaDB [(none)]> EXIT;
robie@debian:~$ sudo mysql -u root -p db_sekolah_baru < backup-sekolah.sql
cek hasil restore
robie@debian:~$ sudo mariadb -u root -p
MariaDB [(none)]> USE db_sekolah_baru;
MariaDB [db_sekolah_baru]> SHOW TABLES;
MariaDB [db_sekolah_baru]> SELECT * FROM siswa;
maka data siswa akan kembali seperti semula.
Membuat User Baru dan Hak Akses
Agar tidak selalu memakai user root, buat user baru. Contoh membuat user guru dengan password 12345
MariaDB [(none)]> CREATE USER 'guru'@'localhost' IDENTIFIED BY '12345';
Untuk melihat user yang ada
MariaDB [(none)]> SELECT User, Host FROM mysql.user;
akan terlihat seperti berikut
+-------------+-----------+ | User | Host | +-------------+-----------+ | mariadb.sys | localhost | | root | localhost | | guru | localhost | +-------------+-----------+
Berikan hak akses ke database db_sekolah
MariaDB [(none)]> GRANT ALL PRIVILEGES ON db_sekolah.* TO 'guru'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
Untuk mengecek hak akses user guru
MariaDB [(none)]> SHOW GRANTS FOR 'guru'@'localhost';
Untuk mencoba login dengan user guru keluar dulu dengan EXIT; lalu ketikkan perintah berikut
robie@debian:~$ mariadb -u guru -p
masukkan password 12345 maka akan masuk
Enter password: Welcome to the MariaDB monitor. MariaDB [(none)]>
Jika ingin menghapus user
MariaDB [(none)]> DROP USER 'guru'@'localhost';
Menghapus Tabel
MariaDB [db_sekolah]> DROP TABLE siswa;
cek dengan SHOW TABLES; maka akan kosong Empty set.
Menghapus Database
MariaDB [db_sekolah]> DROP DATABASE db_sekolah;
cek dengan SHOW DATABASES; maka db_sekolah sudah hilang.
Untuk keluar dari mariadb
MariaDB [(none)]> EXIT;
Menampilkan Data di Halaman PHP
Data di database bisa ditampilkan di halaman web memakai PHP. PHP terhubung ke MariaDB, menjalankan perintah SELECT, lalu hasilnya dicetak menjadi tabel HTML. Di praktek ini kita memakai user guru, bukan root.
Menyiapkan Ulang Database
Pada langkah sebelumnya database db_sekolah sudah dihapus, jadi buat lagi. Masuk ke MariaDB
robie@debian:~$ sudo mariadb -u root
Buat database, tabel, dan isi datanya
MariaDB [(none)]> CREATE DATABASE db_sekolah;
MariaDB [(none)]> USE db_sekolah;
MariaDB [db_sekolah]> CREATE TABLE siswa (
nis VARCHAR(10) PRIMARY KEY,
nama VARCHAR(50),
kelas VARCHAR(10),
jurusan VARCHAR(20)
);
MariaDB [db_sekolah]> INSERT INTO siswa (nis, nama, kelas, jurusan) VALUES ('001', 'Andi Pratama', 'XII', 'TJKT'), ('002', 'Budi Santoso', 'XII', 'TJKT'), ('003', 'Siti Aminah', 'XI', 'TJKT');
Buat user guru dan beri hak akses. Jika user sudah ada, perintah ini tidak akan error
MariaDB [db_sekolah]> CREATE USER IF NOT EXISTS 'guru'@'localhost' IDENTIFIED BY '12345';
MariaDB [db_sekolah]> GRANT ALL PRIVILEGES ON db_sekolah.* TO 'guru'@'localhost';
MariaDB [db_sekolah]> FLUSH PRIVILEGES;
MariaDB [db_sekolah]> EXIT;
Install PHP
Install PHP beserta modul MySQL untuk PHP
robie@debian:~$ sudo apt install php php-mysql -y
Restart Apache agar PHP terbaca
robie@debian:~$ sudo systemctl restart apache2
Cek versi PHP
robie@debian:~$ php -v
Membuat Halaman PHP
Buat file PHP di folder web server
robie@debian:~$ sudo nano /var/www/html/siswa.php
Isi file dengan kode berikut
<?php
// 1. Data koneksi
$host = "localhost";
$user = "guru";
$pass = "12345";
$db = "db_sekolah";
// 2. Membuat koneksi ke MariaDB
$koneksi = mysqli_connect($host, $user, $pass, $db);
// 3. Cek koneksi
if (!$koneksi) {
die("Koneksi gagal: " . mysqli_connect_error());
}
// 4. Menjalankan perintah SQL
$hasil = mysqli_query($koneksi, "SELECT * FROM siswa");
?>
<!DOCTYPE html>
<html>
<head>
<title>Data Siswa</title>
</head>
<body>
<h2>Data Siswa</h2>
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<th>No</th>
<th>NIS</th>
<th>Nama</th>
<th>Kelas</th>
<th>Jurusan</th>
</tr>
<?php
$no = 1;
// 5. Mengambil data baris demi baris
while ($row = mysqli_fetch_assoc($hasil)) {
?>
<tr>
<td><?php echo $no++; ?></td>
<td><?php echo htmlspecialchars($row['nis']); ?></td>
<td><?php echo htmlspecialchars($row['nama']); ?></td>
<td><?php echo htmlspecialchars($row['kelas']); ?></td>
<td><?php echo htmlspecialchars($row['jurusan']); ?></td>
</tr>
<?php } ?>
</table>
</body>
</html>
<?php
// 6. Menutup koneksi
mysqli_close($koneksi);
?>
Simpan dengan menekan CTRL+O, Enter, lalu keluar dengan CTRL+X.
Penjelasan fungsi yang dipakai:
mysqli_connect()untuk membuat koneksi ke database dengan host, user, password, dan nama database.mysqli_connect_error()untuk menampilkan pesan jika koneksi gagal.mysqli_query()untuk menjalankan perintah SQL, di siniSELECT * FROM siswa.mysqli_fetch_assoc()untuk mengambil satu baris hasil dalam bentuk array dengan nama kolom sebagai kunci, contoh$row['nama']. Dipakai di dalamwhileagar semua baris terbaca.htmlspecialchars()untuk mengamankan teks sebelum dicetak ke HTML.mysqli_close()untuk menutup koneksi.
Membuka Halaman di Browser
Buka browser lalu ketikkan alamat berikut
Jika dibuka dari komputer lain, ganti localhost dengan alamat IP server Debian.
Jika berhasil, halaman akan menampilkan tabel seperti berikut
+----+------+--------------+-------+---------+ | No | NIS | Nama | Kelas | Jurusan | +----+------+--------------+-------+---------+ | 1 | 001 | Andi Pratama | XII | TJKT | | 2 | 002 | Budi Santoso | XII | TJKT | | 3 | 003 | Siti Aminah | XI | TJKT | +----+------+--------------+-------+---------+
Jika Terjadi Error
Call to undefined function mysqli_connect()artinya paketphp-mysqlbelum terinstall atau Apache belum direstart.Access denied for user 'guru'@'localhost'artinya password salah atau hak akses belum diberikan. Cek denganSHOW GRANTS FOR 'guru'@'localhost';.Unknown database 'db_sekolah'artinya database belum dibuat ulang. Ulangi langkah menyiapkan ulang database.- Halaman tidak terbuka atau file terunduh, artinya Apache belum jalan atau PHP belum aktif. Cek dengan
sudo systemctl status apache2dan pastikan sudah restart Apache setelah install PHP.