You are on page 1of 24

Praktikum 5 – Layanan

Database
Tim Dosen Mata Kuliah SOJK
LAMP Stack (Linux Apache MySQL PHP)
Together, they provide a proven set of software for
delivering high-performance web applications. Each
component contributes essential capabilities to the stack:
Linux: The operating system
Apache: The web server
The Apache web server processes requests and serves up
web assets via HTTP so that the application is accessible to
anyone in the public domain over a simple web URL
MySQL: The database
MySQL is an open source RDBMS for storing application
data. With My SQL, you can store all your information in a
format that is easily queried with the SQL language
PHP: The programming language
The PHP open source scripting language works with Apache
to help you create dynamic web pages
STRUCTURED QUERY LANGUAGE (SQL)

DDL DML DCL


Data Data Data
Definition Manipulation Control
Language Language Language

CREATE TABLE INSERT GRANT


ALTER TABLE UPDATE REVOKE
DROP TABLE DELETE

N.B : SELECT is DQL (Data Query Language)


Database Position in Data Center Network

Pada umumnya, database


berada pada server yang
berbeda dengan server
aplikasi yang menggunakan
layanan database tersebut.

Satu server bisa berisi satu


atau lebih database.

Kita dapat mengontrol akses


lms_db
ke database dengan
menggunakan DCL.
akademik_db
Data Control Language
• Control Who can Do What on What resource
• Who: users come from what IP Address
• Do What: the allowed operations (e.g,: SELECT only, or can INSERT,
DELETE etc)
• What resource: the above operations can be executed on which
table/database (e.g,: All tables, or just a particular table)
MySQL Administrations
MySQL Administrations
Check MySQL Installation
dpkg --list | grep mysql
Start MySQL Service, berjalan pada port 3306
sudo service mysql start
netstat -tan
Login Pertama Kali ke MySQL CLI dengan menggunakan MySQL Client
sudo mysql
Set Password untuk Root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tekom';
FLUSH PRIVILEGES;
Keluar dari MySQL CLI
\q atau exit;
MySQL Administrations

Login ke MySQL CLI (password tekom) – dilakukan pada shell linux


mysql -u root –p –h 127.0.0.1 (opsional –D [nama-db])
Membuat database baru
create database diploma_db;
Mengubah working database
use diploma_db;
Menampilkan table di suatu database (digunakan setelah use <nama-database>)
show tables;
Import database (dilakukan pada shell linux)
mysql -u root -p diploma_db < diploma_db_dummy-mysql.sql
MySQL Administrations

Membuat user baru


CREATE USER 'tekom'@'localhost' IDENTIFIED BY 'tekom';
CREATE USER 'diploma'@'<ip-windows>' IDENTIFIED BY 'diploma';
Set mysql untuk listen di all IP address
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ubah bagian
bind-address = 127.0.0.1 menjadi bind-address = 0.0.0.0
Lakukan test koneksi untuk user tekom dari ubuntu
mysql -u tekom –p –h 127.0.0.1
Lakukan test koneksi untuk user diploma dari windows, menggunakan heidisql
Lakukan sebaliknya, login melalui ubuntu menggunakan user diploma dan login
melalui windows menggunakan user tekom. Apa yang terjadi?
MySQL Administrations
Memberikan hak akses (terbatas) kepada user
GRANT INSERT, UPDATE ON diploma_db.* TO 'tekom'@'localhost';
GRANT SELECT ON diploma_db.* TO 'diploma'@'<ip-windows>';
Memberikan hak akses (penuh) kepada user
GRANT ALL PRIVILEGES ON diploma_db.* TO 'tekom'@'localhost';
Setiap kali melakukan perubahan hak akses, execute command berikut:
FLUSH PRIVILEGES;
Login menggunakan user tekom dari Ubuntu, dan eksekusi SQL statement sbb:
USE diploma_db;
SELECT * FROM mahasiswa;
Apa hasilnya? Lakukan login menggunakan user diploma dari windows, dan
lakukan insert data, apa hasilnya?
MySQL Administrations

Mencabut hak akses kepada user


REVOKE INSERT, UPDATE ON diploma_db.* FROM 'tekom'@'localhost';
REVOKE SELECT ON diploma_db.* FROM 'diploma'@'<ip-windows>';
REVOKE ALL PRIVILEGES ON diploma_db.* FROM 'diploma'@'<ip-
windows>';
Menghapus user
DROP USER 'tekom'@'localhost';
Review hak akses user
SHOW GRANTS FOR 'tekom'@'localhost';
Export Database (dilakukan pada shell linux)
mysqldump -u root -p diploma_db > diploma_db_dump-mysql-1.sql
Postgresql Administrations
PostgreSQL Administrations
Check MySQL Installation
dpkg --list | grep postgresql
Start PostgreSQL Service, berjalan pada port 5432
sudo service postgresql start
netstat –tan
Login Pertama Kali ke PostgreSQL CLI dengan menggunakan PSQL Client
sudo su - postgres
psql
Secara default user postgres login dengan menggunakan UNIX domain socket. Jika ingin
melakukan konfigurasi supaya login menggunakan user postgresql membutuhkan password,
maka pada psql cli, execute SQL statement berikut:
ALTER USER postgres WITH ENCRYPTED PASSWORD 'tekom';
PostgreSQL Administrations
Keluar dari PSQL CLI
\q
Kemudian lakukan perubahan konfigurasi pada:
sudo vi /etc/postgresql/10/main/pg_hba.conf
Ganti bagian ini

Menjadi seperti dibawah ini (perhatikan bagian md5)

Restart service postgresql, dan lakukan login menggunakan user postgres, maka postgresql akan meminta
password
sudo service postgresql restart
sudo su - postgres
psql
PostgreSQL Administrations
Login ke PSQL CLI (password tekom) – dilakukan pada shell linux
psql -U postgres –h 127.0.0.1 [-d opsional-nama-database]
Membuat database baru (pada psql cli)
create database diploma_db;
Mengubah working database (pada psql cli)
\connect diploma_db;
Menampilkan list database
\l
Menampilkan table di suatu database (digunakan setelah \connect <nama-database>)
\dt
Import database (dilakukan pada shell linux)
psql -U postgres -h 127.0.0.1 -d diploma_db < diploma_db_dummy-
postgresql.sql
PostgreSQL Administrations

Membuat user baru


CREATE USER tekom WITH ENCRYPTED PASSWORD 'tekom';
CREATE USER diploma WITH ENCRYPTED PASSWORD 'diploma';
Set postgresql untuk listen di all IP address
sudo vi /etc/postgresql/10/main/postgresql.conf
Ubah bagian

Menjadi
PostgreSQL Administrations
Memberikan hak akses untuk connect ke DB kepada user (belum memberikan
akses ke table)
GRANT CONNECT ON DATABASE diploma_db TO diploma;
GRANT ALL PRIVILEGES ON DATABASE diploma_db TO tekom;
Memberikan hak akses ke table untuk user
GRANT SELECT ON TABLE mahasiswa TO tekom;
GRANT INSERT,UPDATE ON TABLE mahasiswa TO diploma;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO tekom;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO tekom;
Melihat hak akses database
\l (perhatikan kolom Access privileges )
Melihat hak akses table
\dp (perhatikan kolom Access privileges )
PostgreSQL Administrations
Mencabut hak akses kepada user
REVOKE CONNECT ON DATABASE diploma_db FROM diploma;
REVOKE ALL PRIVILEGES ON DATABASE diploma_db FROM tekom;
REVOKE INSERT,UPDATE ON TABLE mahasiswa FROM tekom;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM tekom;
Menghapus User (harus revoke terlebih dahulu)
DROP USER tekom;
Melihat user
\du
Pembatasan IP address yang dapat terkoneksi ke DB dilakukan pada file
/etc/postgresql/10/main/pg_hba.conf
Melakukan backup database
pg_dump -U postgres diploma_db > /diploma_db_dummy-postgresql-1.sql
Tugas Praktikum
Tugas Praktikum
• Lakukan konfigurasi agar login menggunakan user root pada MySQL
membutuhkan password
• Lakukan konfigurasi agar login menggunakan user postgres pada
PostgreSQL membutuhkan password
• Untuk setiap DBMS (MySQL dan PostgreSQL) buat database dengan
nama diploma_db
• Lakukan import dari file diploma_db_dummy-mysql.sql ke db
diploma_db pada MySQL
• Lakukan import dari file diploma_db_dummy-postgresql.sql ke db
diploma_db pada PostgreSQL
Tugas Praktikum
• Untuk setiap DBMS (MySQL dan PostgreSQL buat 2 user:
• Username untuk user pertama adalah <nim+a>, contoh: jika nim adalah
J3D808080 maka username adalah J3D808080a
• Username untuk user pertama adalah <nim+b>, contoh: jika nim adalah
J3D808080 maka username adalah J3D808080b
• Pada setiap DBMS, batasi IP address yang dapat terkoneksi ke DB
dengan ketentuan sbb:
• User <nim+a> hanya dapat terkoneksi ke DB dari IP address localhost
• User <nim+b> hanya dapat terkoneksi ke DB dari IP address Host OS
(Windows)
• Lakukan pengujian
Tugas Praktikum
• Untuk kedua user tersebut pada setiap DBMS, berikan hak akses sbb:
• Hak akses untuk select pada table mahasiswa untuk user <nim+a>
• Hak akses untuk insert pada table mahasiswa untuk user <nim+b>
• Lakukan pengujian
• Pada kedua DBMS, berikan hak akses penuh untuk semua table di database diploma_db
kepada user <nim+a>
• Upload file demo-mysql.php ke directory root dari virtualhost pada 2a.<nim>.org
• Upload file demo-psql.php ke directory root dari virtualhost pada 2b.<nim>.org
• Edit file demo-mysql.php agar terkoneksi ke mysql menggunakan user <nim+a>
• Edit file demo-pgsql.php agar terkoneksi ke mysql menggunakan user <nim+a>
• Lakukan akses ke 2a.<nim>.org dan 2b.<nim>.org menggunakan browser dan laporkan
hasilnya pada laporan praktikum
Referensi
• https://www.postgresql.org/docs/10/sql-grant.html
• https://www.postgresql.org/docs/10/sql-revoke.html
• https://dev.mysql.com/doc/refman/5.7/en/sql-server-administration-
statements.html

Tools
https://www.heidisql.com/
https://winscp.net/eng/download.php

You might also like