FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
A. TUJUAN
Mahasiswa memahami keamanan di MySQL, mampu melakukan manajemen database, dan
memahami hak akses (privileges) pada MySQL.
B. ALAT DAN BAHAN
a. Personal komputer.
b. Aplikasi MySQL.
C. TEORI SINGKAT
Security (keamanan) di MySQL merupakan salah satu yang sangat penting. MySQL merupakan software
database yang bersifat client-server, yang memungkinkan beberapa user dapat mengakses server
MySQL dari mana pun. Untuk itu, server MySQL harus benar-benar aman dari akses (serangan) orang-
orang yang tidak berhak. Berikut ini beberapa hal yang harus diperhatikan dalam mengamankan
server MySQL:
❖ Jangan pernah memberi akses ke semua user, kecuali super user (root) untuk dapat mengakses
database mysql. Jika seseorang dapat mengakses database ini, maka dia dapat melihat informasi
user (termasuk user, password dan host) MySQL dan (mungkin) dapat menambah atau mengubah
informasi tersebut.
❖ Pelajari mengenai hak akses di MySQL. Perintah GRANT dan REVOKE digunakan untuk mengatur
hak akses di MySQL. Sebisa mungkin jangan memberikan hak akses ke MySQL pada semua host (%).
MySQL pada dasarnya merupakan sistem database yang aman. MySQL dapat mengatur hak akses tiap
user terhadap data di database. MySQL memungkinkan kita mengatur hak akses user sampai pada
tingkat kolom. Artinya kita dapat mengatur kolom tertentu dapat diakses oleh user siapa saja. Tentu,
kita juga dapat mengatur hak akses user terhadap tabel, dan database. Semua pengaturan hak akses
(privileges) tersimpan di database mysql yang secara default sudah ada di sistem MySQL. Di dalam
database mysql antara lain terdapat tabel-tabel sebagai berikut:
▪ user. Tabel ini digunakan untuk menyimpan informasi user MySQL yang mencakup informasi user,
password dan host user, serta informasi hak akses user.
▪ db. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap database.
▪ host. Tabel ini digunakan untuk menyimpan daftar komputer (bisa berupa alamat IP, nama
komputer, atau %) yang berhak mengakses suatu database.
▪ tables_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap
tabel. Dengan kata lain menyimpan tabel ini dapat diakses oleh siapa dengan hak akses apa saja.
▪ columns_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap
kolom.
▪ procs_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap
procedure.
▪ proc. Tabel ini digunakan untuk menyimpan informasi mengenai daftar procedure dalam MySQL.
▪ func. Tabel ini digunakan untuk menyimpan informasi mengenai function yang didefinisikan di
MySQL.
1
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
GRANT dan REVOKE
GRANT dan REVOKE digunakan untuk mengatur hak akses user.
Berikut ini bentuk umum perintah GRANT dan REVOKE secara sederhana :
GRANT priv_type
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[WITH GRANT OPTION]
REVOKE priv_type
ON {tbl_name | * | *.* | db_name.*}
FROM user_name
Berikut ini pilihan untuk priv_type dalam bentuk umum perintah GRANT dan
REVOKE di atas:
ALL PRIVILEGES FILE RELOAD
ALTER INDEX SELECT
CREATE INSERT SHUTDOWN
DELETE PROCESS UPDATE
DROP REFERENCES USAGE
Tingkatan hak akses user dapat terbagi menjadi tingkatan global (tersimpan di tabel [Link]),
database (tersimpan di tabel [Link] dan [Link]), tabel (tersimpan di tabel mysql.tables_priv)
dan kolom (tersimpan di tabel mysql.columns_priv). Setiap perubahan hak akses di MySQL,
termasuk menambahkan user baru, tidak akan berlaku sebelum diakhiri dengan perintah FLUSH
PRIVILEGES.
D. LANGKAH KERJA
1. Konfigurasi user root
Root merupakan super-user database, sehingga root-lah yang berkuasa dalam manajemen
database. Untuk membuat password pada user root (jika belum diberi password), kita harus
mengaktifkan database mysql. Kemudian lihat tabel user.
Melihat user yang terdapat pada tabel user:
MariaDB [mysql]> select user, host, password from user;
+------+-----------------+----------+
| user | host | password |
+------+-----------------+----------+
| root | localhost | |
| root | desktop-7f1f7e7 | |
| root | [Link] | |
| root | ::1 | |
+------+-----------------+----------+
4 rows in set (0.00 sec)
Sebelum diberi password
2
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
Selanjutnya :
MariaDB [mysql]> UPDATE user SET password=password('punyaku') WHERE
user='root';
MariaDB [mysql]> select user, host, password from user;
+------+-----------------+-------------------------------------------+
| user | host | password |
+------+-----------------+-------------------------------------------+
| root | localhost | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | desktop-7f1f7e7 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | [Link] | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | ::1 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
+------+-----------------+-------------------------------------------+
4 rows in set (0.00 sec)
Setelah diberi password
Untuk mengaktifkan kofigurasi, berikan Flush privileges.
MariaDB [mysql]> flush privileges;
Keluar dari mysql : \q
2. Login kembali sebagai root untuk melihat password yang sudah dikonfigurasi
Maka sebagai user root harus login menggunakan password :
3. Menambah user baru
Yang memiliki hak penuh untuk menambah user adalah user root. Maka harus login sebagai root.
a. Menambah user baru tanpa password
CREATE USER 'nama_user';
Note : nama user = nama user yang akan ditambahkan, maksimal 16 karakter.
MariaDB [mysql]> create user 'fulan';
3
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
Silahkan cek tabel user, setlah menamah user fulan!
+---------+-----------------+-------------------------------------------+
| user | host | password |
+---------+-----------------+-------------------------------------------+
| root | localhost | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | desktop-7f1f7e7 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | [Link] | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | ::1 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| fulan | % | |
+---------+-----------------+-------------------------------------------+
Untuk mencobakan user baru, kita harus keluar dari mysql sebagai user root, dan login sebagai user
baru:
C:\Program Files\MariaDB 10.0\bin>mysql -u fulan -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.01 sec)
Sehingga diperoleh hasil seperti di atas, terlihat bahwa user ‘fulan’ belum memiliki hak akses
terhadap databases apapun.
b. Menambah user baru dengan password
CREATE USER 'nama_user' IDENTIFIED BY 'password' ;
MariaDB [mysql]> create user 'abdi' identified by 'abcdef';
Query OK, 0 rows affected (0.00 sec)
Cek kembali tabel user !
+---------+-----------------+-------------------------------------------+
| user | host | password |
+---------+-----------------+-------------------------------------------+
| root | localhost | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | desktop-7f1f7e7 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | [Link] | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | ::1 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| fulan | % | |
| abdi | % | *C2D24DCA38E9E862098B85BF0AB35CAA52803797 |
+---------+-----------------+-------------------------------------------+
c. Menambah user dengan IP address
Alamat yang sering digunakan sebagai alamat IP adalah localhost, yang berarti alamat IP komputer
tempat dimana MySQL Server berada. Karena tahap belajar ini kita menggunakan MySQL Client pada
4
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
komputer yang sama dengan MySQL server, maka selanjutnya lokasi yang akan digunakan adalah
localhost :
CREATE USER ‘nama user’@localhost
MariaDB [mysql]> create user 'indah'@localhost;
Cek kembali tabel user !
+---------+-----------------+-------------------------------------------+
| user | host | password |
+---------+-----------------+-------------------------------------------+
| root | localhost | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | desktop-7f1f7e7 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | [Link] | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| root | ::1 | *997FB27CC2E6B9DC96EBDB75CC66182024996000 |
| fulan | % | |
| abdi | % | *C2D24DCA38E9E862098B85BF0AB35CAA52803797 |
| indah | localhost | |
+---------+-----------------+-------------------------------------------+
d. Menambah user baru dan memberikan hak akses.
MariaDB [(none)]> grant all privileges on *.* to sayah@localhost
identified by '1223' with grant option;
MariaDB [(none)]> flush privileges;
➢ Menambahkan user baru dengan nama user ‘sayah’ yang dapat mengakses semua
database (*.*) dari komputer ‘localhost’ dengan password ‘1223’. User ini juga berhak
menjalankan perintah GRANT untuk user lain.
Note : hal ini tidak disarankan jika menambahkan user baru. Karena yang memiliki hak akses penuh
terhadap database hanya user root.
e. Menambah user baru dengan izin akses database.
MariaDB [mysql]> grant all privileges on coba.* to akuh@localhost
identified by 'abcd';
➢ Menambahkan user baru dengan nama user ‘akuh’, password ‘abcd’, hanya dapat
mengakses database ‘coba’.
MariaDB [mysql]> flush privileges;
Lakukan testing, login sebagai user ‘akuh’ !
C:\Program Files\MariaDB 10.0\bin>mysql -u akuh -p
Enter password: ****
Dan hanya terlihat database coba yang bisa diakses oleh user ‘akuh’.
5
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| coba |
| information_schema |
| test |
+--------------------+
4. Privileges
Set privileges (membatasi hak akses) terhadap user hanya dapat dilakukan oleh user root.
Misalnya, hak akses select dan update akan diberikan terhadap user ‘abdi’:
Kemudian...
Login sebagai user ‘abdi’, dan lakukan akses terhadap database.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| coba |
| information_schema |
| test |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [coba]> show tables;
+----------------+
| Tables_in_coba |
+----------------+
| buku |
+----------------+
Database coba memiliki dua buah tabel, yaitu buku dan anggota. Karena user ‘abdi’ hanya
diberikan hak akses terhadap tabel buku, maka tidak dapat mengakses tabel anggota.
MariaDB [coba]> select *from buku;
+---------+------------------+------+---------------------+
| id_buku | judul_buku | stok | penerbit |
+---------+------------------+------+---------------------+
| AL01 | Pintar Algoritma | 5 | Informatika Bandung |
| DB01 | Mahir Database | 3 | Andi Offset |
| GO01 | Ilmu Antariksa | 2 | Andi Offset |
+---------+------------------+------+---------------------+
3 rows in set (0.00 sec)
Note: akses ditolak..ini berarti privileges yang diberikan untuk user ‘abdi’ berhasil.
6
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
MariaDB [coba]> select *from buku;
+---------+------------------+------+---------------------+
| id_buku | judul_buku | stok | penerbit |
+---------+------------------+------+---------------------+
| AL01 | Pintar Algoritma | 2 | Informatika Bandung |
| DB01 | Mahir Database | 3 | Andi Offset |
| GO01 | Ilmu Antariksa | 2 | Andi Offset |
+---------+------------------+------+---------------------+
3 rows in set (0.00 sec)
5. Menghapus hak akses user
Untuk menghapus hak akses user, dapat dilakukan dengan perintah REVOKE.
a. Login sebagai user root
b. Login kembali sebagai user ‘abdi’ dan lihat hasilnya :
MariaDB [coba]> show tables;
+----------------+
| Tables_in_coba |
+----------------+
| buku |
+----------------+
1 row in set (0.00 sec)
6. Merubah password user
a. MariaDB [mysql]> update user set password=password('kirei') where
user='indah' and host='localhost';
Query OK, 1 row affected (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 0
b. MariaDB [mysql]> set password for
holland@localhost=password('bakeri');
Query OK, 0 rows affected (0.04 sec)
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
7
FT UNP Padang Lembaran : Job Sheet
Jurusan : Teknik Elektronika Mata Kuliah : Sistem Basis Data
Waktu : 3 x 50 Menit Topik : MySQL
Kode : TIK 190 Judul : Administrasi User dan Keamanan
7. Menghapus user
a. Login sebagai root
Hasilnya :
D. EVALUASI
Lakukan manajemen database sebagai berikut :
1. Tambahkan dua buah user
2. Lakukan set privileges yang berbeda untuk masing-masing user.
3. Dokumentasikan setiap perubahan, dan hasil yang terjadi.
4. Database yang digunakan adalah database ‘coba’.
0ooo0