Tujuan:
1.
Mengadministrasi
Database MySQL
2.
Mengatur
Hak Akses User
Administrasi
Database MySQL
Data
organisasi atau perusahaan sebaiknya tidak bisa dilihat oleh semua anggota,
user atau pegawai, hanya orang tertentu saja yang diberi hak untuk mengetahui
dan menggunakan untuk kepentingan analisis dan pengambilan keputusan.
Privilege
adalah hak dan wewenang yang diberikan kepada pemakai yang telah didefinisikan
untuk dapat mengakses dan mengelola database MySQL. Dalam bahasa yang lebih
sederhana adalah hak akses atau permission.
Superuser
database MySQL adalah penanggung jawab dan pengelola database MySQL dengan
level tertinggi, superuser akan menentukan privilege dari setiap pemakai. Privilege
mengatur hak mengakses database, data mana saja yang boleh diakses, dari mana
saja bisa mengaksesnya.
Dalam
istilah database secara umum superuser database sering disebut dengan
administrator database atau system manager, tergantung pada database yang
digunakan. Dalam MySQL superuser bernama root.
MySQL
menggunakan tabel-tabel khusus untuk melakukan pengelolaan pemakai dari
privilegenya yang tersimpan di dalam database dengan nama mysql.
use mysql;
show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
Tabel
columns_priv
Tabel
ini digunakan untuk menyimpan informasi privilege pemakai sampai dengan level
field.
mysql> desc columns_priv;
+-------------+----------------------------------------------+------+-----+---------+-------+
| Field |
Type
| Null | Key | Default | Extra |
+-------------+----------------------------------------------+------+-----+---------+-------+
| Host |
char(60) binary
| | PRI | |
|
| Db |
char(64) binary
| | PRI | |
|
| User |
char(16) binary
| | PRI | |
|
| Table_name |
char(64) binary
| | PRI | |
|
| Column_name | char(64) binary | | PRI | |
|
| Timestamp |
timestamp(14)
| YES | | NULL
| |
| Column_priv |
set('Select','Insert','Update','References') | |
| | |
+-------------+----------------------------------------------+------+-----+---------+-------+
Tabel
db
Berisi
informasi database mana saja yang bisa diakses oleh setiap pemakai, dan dari
komputer mana.
mysql> desc db;
+-----------------------+-----------------+------+-----+---------+-------+
| Field
| Type | Null | Key |
Default | Extra |
+-----------------------+-----------------+------+-----+---------+-------+
| Host
| char(60) binary | | PRI
| | |
| Db
| char(64) binary | | PRI
| | |
| User
| char(16) binary | | PRI
| | |
| Select_priv
| enum('N','Y') | |
| N | |
| Insert_priv
| enum('N','Y') | |
| N |
|
| Update_priv
| enum('N','Y') | |
| N | |
| Delete_priv
| enum('N','Y') | |
| N | |
| Create_priv
| enum('N','Y') | |
| N | |
| Drop_priv | enum('N','Y') |
| | N |
|
| Grant_priv
| enum('N','Y') | |
| N | |
| References_priv
| enum('N','Y') | |
| N | |
| Index_priv
| enum('N','Y') | | |
N | |
| Alter_priv
| enum('N','Y') | |
| N | |
| Create_tmp_table_priv | enum('N','Y') |
| | N |
|
| Lock_tables_priv
| enum('N','Y') | |
| N | |
+-----------------------+-----------------+------+-----+---------+-------+
Tabel
func
mysql> desc func;
+-------+------------------------------+------+-----+----------+-------+
| Field | Type | Null | Key |
Default | Extra |
+-------+------------------------------+------+-----+----------+-------+
| name | char(64)
binary | | PRI | | |
| ret |
tinyint(1) | |
| 0 | |
| dl |
char(128) | |
| | |
| type |
enum('function','aggregate') |
| | function | |
+-------+------------------------------+------+-----+----------+-------+
Tabel
host
Digunakan
untuk menyimpan informasi kompyuter mana saja yang dapat mengakses database
MySQL, siapa nama pemakainya.
mysql> desc host;
+-----------------------+-----------------+------+-----+---------+-------+
| Field
| Type | Null | Key |
Default | Extra |
+-----------------------+-----------------+------+-----+---------+-------+
| Host
| char(60) binary | | PRI
| | |
| Db
| char(64) binary | | PRI
| | |
| Select_priv
| enum('N','Y') | |
| N | |
| Insert_priv
| enum('N','Y') | |
| N | |
| Update_priv
| enum('N','Y') | |
| N | |
| Delete_priv
| enum('N','Y') | |
| N | |
| Create_priv
| enum('N','Y') | |
| N | |
| Drop_priv
| enum('N','Y') | |
| N | |
| Grant_priv
| enum('N','Y') | |
| N | |
| References_priv
| enum('N','Y') | |
| N |
|
| Index_priv
| enum('N','Y') | |
| N | |
| Alter_priv
| enum('N','Y') | |
| N | |
| Create_tmp_table_priv | enum('N','Y') |
| | N |
|
| Lock_tables_priv
| enum('N','Y') | |
| N | |
+-----------------------+-----------------+------+-----+---------+-------+
Tabel
tables_priv
Tabel
ini menyimpan informasi privilege pemakai pada level tabel
mysql> desc tables_priv;
+-------------+---------------------------------------------------------------------------------------+
| Field |
Type
| Null | Key | Default | Extra |
+-------------+---------------------------------------------------------------------------------------+
| Host |
char(60) binary
| | PRI | |
|
| Db |
char(64) binary
| | PRI | |
|
| User |
char(16) binary
| | PRI | |
|
| Table_name |
char(60) binary
| | PRI | |
|
| Grantor |
char(77)
| | MUL | |
|
| Timestamp |
timestamp(14)
| YES | | NULL
| |
| Table_priv |
set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter')
| | |
| |
| Column_priv |
set('Select','Insert','Update','References')
| | |
| |
+-------------+---------------------------------------------------------------------------------------+
Tabel
user
Digunakan
untuk menyimpan data pemakai database dan data privilegenya pada saat mengakses
ke dalam database.
mysql> desc user;
+----------------------+-----------------------------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+----------------------+-----------------------------------+------+-----+---------+-------+
| Host
| varchar(60) binary | | PRI | |
|
| User
| varchar(16) binary
| | PRI | |
|
| password
| varchar(16)
| | |
| |
| Select_priv
| enum('N','Y')
| | | N
| |
| Insert_priv
| enum('N','Y')
| | | N
| |
| Update_priv
| enum('N','Y')
| | | N
| |
| Delete_priv
| enum('N','Y')
| | | N
| |
| Create_priv
| enum('N','Y')
| | | N
| |
| Drop_priv
| enum('N','Y')
| | | N
| |
| Reload_priv
| enum('N','Y')
| | | N
| |
| Shutdown_priv
| enum('N','Y')
| | | N
| |
| Process_priv
| enum('N','Y') |
| | N |
|
| File_priv
| enum('N','Y')
| | | N
| |
| Grant_priv
| enum('N','Y')
| | | N
| |
| References_priv
| enum('N','Y')
| | | N
| |
| Index_priv
| enum('N','Y')
| | | N
| |
| Alter_priv
| enum('N','Y')
| | | N
| |
| Show_db_priv | enum('N','Y') | |
| N | |
| Super_priv
| enum('N','Y')
| | | N
| |
| Create_tmp_table_priv| enum('N','Y') | |
| N | |
| Lock_tables_priv
| enum('N','Y')
| | | N
| |
| Execute_priv
| enum('N','Y')
| | | N
| |
| Repl_slave_priv
| enum('N','Y')
| | |
N | |
| Repl_client_priv
| enum('N','Y')
| | | N
| |
| ssl_type
| enum('','ANY','X509','SPECIFIED') | |
| | |
| ssl_cipher
| blob |
| | |
|
| x509_issuer
| blob
| | |
| |
| x509_subject
| blob
| | |
| |
| max_questions
| int(11) unsigned
| | | 0
| |
| max_updates
| int(11) unsigned
| | | 0
| |
| max_connections
| int(11) unsigned
| | | 0
| |
+----------------------+-----------------------------------+------+-----+---------+-------+
Pengelolaan
Privilege Pemakai
Cara
mendefinisikan pemakai yang diperbolehkan mengakses database MySQL adalah
dengan menambahkan sebuah record kepada tabel user dengan menggunakan perintah
Sql secara langsung.
Setelah
pemakai dimasukan kedalam tabel user, maka berikutnya yang dilakukan adalah
mendefinisikan privilege pemakai tersebut dalam mengakses dan mengelola
database MySQL.
Cara
mendefinisikan privilege pemakai dalam MySQL:
a.
menggunakan DML
b.
Menggunakan DCL
Mendefinisikan
Pemakai dan Privilegenya dengan DCL
Perintah
yang digunakan : GRANT
sintax:
GRANT [privilege] [all | nama-nama_kolom}
ON namadb.namatbl|*
TO namauser[@hostname]
[IDENTIFIED BY “password”
[WITH GRANT OPTION]
Privilege
dalam Grant
|
Nama
Privilege
|
Keterangan
|
|
ALL
|
Digunakan
untuk memberikan privilege kepada pemakai
|
|
ALTER
|
Privilege
yang diberikan agar pemakai dapat melakukan perubahan pada tabel, kolom, dan
indeks
|
|
CREATE
|
Privilege
yang memperbolehkan user untuk membuat tabel atau database
|
|
DELETE
|
Privilege
yang memperbolehkan user untuk menghapus record dari tabel
|
|
DROP
|
Privilege
yang memperbolehkan user untuk menghapus tabel atau database
|
|
FILE
|
Privilege
yang memperbolehkan user supaya dapat melakukan penulisan dan pembacaan file
di dalam server
|
|
INDEX
|
Privilege
yang memperbolehkan user untuk menambah atau menghapus indeks
|
|
INSERT
|
Privilege
yang memperbolehkan user untuk menambahkan record ke dalam tabel
|
|
PROCESS
|
Privilege
yang memperbolehkan user supaya dapat melihat dan mematikan proses sistem
MySQL
|
|
REFERENCES
|
Privilege
ini belum diimplementasikan
|
|
RELOAD
|
Privilege
yang memperbolehkan user untuk dapat memberikan perintah FLUSH
|
|
SELECT
|
Privilege
yang memperbolehkan user untuk menggunakan perintah SELECT
|
|
SHUTDOWN
|
Privilege
yang memperbolehkan user untuk mematikan server MySQL
|
|
UPDATE
|
Privilege
yang memperbolehkan user untuk menggunakan fungsi UPDATE
|
Pencabutan
privilege dengan DCL
Perintah
yang digunakan : REVOKE
sintax:
REVOKE [privileges][nama-nama kolom]
ON namadb.namatbl
FROM namauser.hostname
Lakukan
eksplorasi untuk perintah-perintah pendefinisian dan pencabutan pemakai dan
privilegenya baik dengan perintah DML maupun DCL, kemudian simpulkan hasilnya.
FLUSH
PRIVILEGES
Setelah
selesai melakukan pendefinisian/pencabutan user maupun privilege, maka aturan
tidak akan diberlakukan sebelum dijalankan perintah Flush Privilege. Flush
Privilege merupakan perintah yang memaksa MySQL untuk menggunakan daftar
pemakai dan privilegenya dari data pemakai dan privilege database yang baru.





15.31
Miftahur Rohman


0 komentar:
Posting Komentar