KODE CHATBOX

Powered by : Rumah Technology

4.01.2012

BAB 7


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.


0 komentar:

Posting Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Hosting