Data Control Language m5
Data Control Language m5
Obyektif : 11. Mengetahui dan memahami perintah Data Control Language 12. Dapat menggunakan perintah Grant dan Revoke
Data Control Language (DCL) merupakan perintah-perintah yang dapat digunakan untuk menjaga keamanan basis data. Perintah tersebut dapat dipakai untuk menentukan akses basis data hanya dapat dilakukan oleh orang-orang tertentu dan dengan macam akses yang dibatasi pula. Adapun Objek-Objek DCL dalam Mysql diantaranya :
Tabel user adalah tabel yang ada dalam database MySQL. Tabel user hanya diperuntukkan bagi seorang Administrator (root). Tabel user bersifat global, apapun perubahan yang terjadi pada tabel ini akan mempengaruhi jalannya keseluruhan system MySQL.
Dari kolom yang didapat dari tabel user untuk MySQL yang embeded pada PHP Instant adalah sebagai berikut :
31
Penjelasan fungsi :
32
33
Sintaks Umum 1. Menampilkan data pada kolom host, user dan password saja
3. Mengganti password
4. Perintah FLUSH.
FLUSH PRIVILEGES;
Perintah FLUSH PRIVILEGES adalah suatu perintah untuk mengaktifkan perubahan-perubahan yang terjadi pada user, seperti hak akses, penggantian password pada user, dsb. Perintah FLUSH PRIVILEGES ini hukumnya wajib dilaksanakan setelah Anda melakukan perubahan (apapun juga) secara langsung ke dalam tabel user atau ke dalam database mysql.
Contoh penggunaan :
34
2. Menambah user =Winda dan password=w1nd insert into user (User,Password) values(Winda,w1nd); 3. Menambah user =Febe dan password=4567 insert into user (User,Password) values(Febe,4567); 4. Menambah user =Elfrida dan password=9812 insert into user (User,Password) values(Elfrida,9812); 5. menampilkan user dan password tabel user select user,password from user; 6. Menghapus semua user tanpa identitas Delete from user where user=; 7. Menampilkan semua isi dari tabel user Select * from user; 8. Mengubah password untuk user winda dengan w1nd4 Update user set password =w1nd4 where user=Winda; 9. Mengubah password untuk user Febe dengan f3b3 Update user set password =f3b3 where user=Febe; 10. Mengubah password untuk user Elfrida dengan fr1d4 Update user set password = fr1d4 where user=Elfrida;
35
Tabel_priv berfungsi mengatur tabel apa saja yang dapat diakses oleh seorang user, berikut jenis izin aksesnya. Tingkat akses hanya untuk tabel. Pada prinsipnya hanya bekerja seperti db table, kalau tidak digunakan untuk tabel sebagai ganti database. Sintaks Umum :
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW Contoh penggunaan :
4. Insert into tables_priv (User,Table_name,Table_priv) values (Admin,Point_Of_Sales.user , Point_Of_Sales.Jenis, Point_Of_Sales.item, Point_Of_Sales.JualGlobal,, Point_Of_Sales.JualDetail, SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW);
36
6. Insert into tables_priv (User,Table_name,Table_priv) values(Cewek,Point_Of_Sales.jenis, Point_Of_Sales.item, Point_Of_Sales.jualGlobal, Point_Of_Sales.jualDetail, select,insert,update,show view);
c. GRANT
Grant berfungsi untuk membuat user baru dan memberikan hak istimewa. Grant adalah salah satu privilege untuk tabel. Grant digunakan untuk memberikan privilege kepada tabel yang didefinisikan kepada pemakai lain. Privilege untuk pemakai dalam perintah grant didefinisikan dengan menggunakan nama-nama privilege. Nama privilege memudahkan administrator untuk dapat memberikan priivilege tanpa harus tahu apa nama field dan tabel yang harus diisi.
Perintah grant secara otomatis akan menambah data pemakai apabila data nama pemakai yang disertakan pada perintah tersebut belum ada dalam tabel user. Perintah grant memudahkan administrator untuk tidak perlu melakukan perintah pendefinisian privilege dengan menggunakan sql. Karena dengan menggunakan sql, kita harus hafal nama tabel yang harus diisi, field apa saja yang harus diisi, jumlah field yang harus diisi. Kesalahan mudah dilakukan dengan menggunakan perintah sql karena
37
ketidaktelitian atau ketidakhafalan nama tabel dan nama field yang harus diisi.
Sintak Umum :
GRANT hak_akses ON nama_tabel TO pemakai; GRANT ALL PRIVILEGES ON database_name.* TO myuser IDENTIFIED BY mypassword;
38
d. REVOKE
Untuk menghapus batasan hak akses yang telah diatur dengan menggunakan perintah GRANT, digunakan perintah REVOKE.
Sintak umum :
REVOKE hak_akses ON nama_tabel FROM namaAccount@namaHost;
NamaTabel : merupakan nama tabel yang dikenal hak akses tersebut. Harus ada sedikitnya satu nama tabel. Dapat menggunakan simbol asterik (*) untuk mewakili semua tabel pada database aktif. Penulisan namaTabel dapat juga diikuti oleh nama database diikuti nama tabel yang dipisahkan dengan tanda titik. Menggunakan simbol *.* berarti semua database dan semua tabel yang dikenai hak akses tersebut.
39
namaAccount@namaHost : jika nama account tidak ada, tidak pernah diberikan hak akses dengan perintah GRANT sebelumnya maka akan terjadi error.
Contoh Penggunaan :
40
e. SHOW PROCESSLIST
Digunakan untuk menampilkan kegiatan apa saja yang terjadi pada MySQL server atau menampilkan informasi mengenai thread yang dieksekusi di server. Bila terdapat kegiatan yang membahayakan kita sebagai admin dapat menghentikan dengan perintah KILL atau
MySQLAdmin
Sintak umum :
SHOW PROCESSLIST;
Contoh penggunaan :
SHOW PROCESSLIST;
41
f. KILL
Kill berfungsi menghentikan thread server / untuk membunuh proses yang sedang berjalan
Sintak Umum :
KILL nomor_Id;
Contoh penggunaan :
Kill 2;
g. OPTIMIZE TABLE
Tabel yang sering mengalami proses penghapusan dan penambahan akan menyebabkan struktur yang tidak teratur secara fisik atau telah terjadi fragmentasi. Penghapusan data dalam jumlah besar mempunyai peluang terjadinya fragmentasi. Terutama untuk data bertipe VARCHAR, TEXT atau BLOB
42
Tidak semua DBMS dapat melakukan fragmentasi, kita dapat melihat dukungan setiap DBMS Untuk mengatasi masalah fragmentasi solusinya adalah melakukan OPTIMIZE TABLE Untuk MySQL versi 3.23 keatas mendukung fasilitas OPTIMIZE TABLE. Perlu diketahui pada saat OPTIMIZE TABLE dikerjakan, semua tabel akan di-lock (terkunci) Proses fragmentasi sebaiknya dilakukan secara berkala, misalnya setiap minggu atau setiap bulan.
Sintak umum :
OPTIMIZE TABLE tabel_1, tabel_2, tabel_3, tabel_n;
Contoh penggunaan :
43