Tabel yang digunakan untuk menyimpan informasi mengenai daftar procedure dalam MySQL adalah

Kelas XI-RPL SMKN 4 Bandung Materi Basis Data Semester Genap MENGGUNAKAN ADMINISTRASI DAN KEAMANAN DI MYSQL

PENDAHULUAN Keamanan: Keadaan bebas dari bahaya Keamanan di MySQL merupakan hal yang tidak boleh dianggap sepele Karena MySQL merupakan software database client-server yang bisa diakses oleh banyak user Tidakadasistemyang100%aman Kenyamanan berbanding terbalik dengan kemanan Semakin tinggi tingkat keamanan, semakin sulit / tdk nyaman mengakses informasi

BEBERAPA ISTILAH KEAMANAN DATABASE Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography] (http://id.wikipedia.org/wiki/kriptografi) Password : kumpulan karakter atau string yg digunakan oleh pengguna jaringan / sebuah sistem operasi yg mendukung banyak pengguna (multiuser) untuk memverifikasi identitas dirinya kepada sistem keamanan yang dimiliki oleh jaringan / sistem tsb (http://id.wikipedia.org/wiki/password) Enkripsi : proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus (http://id.wikipedia.org/wiki/enkripsi) MD5 (Message-Digest algortihm 5) ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 128-bit

YANG HARUS DIPERHATIKAN Janganmemberihakakseskesemuauser Pahami perintah DCL (hak akses) di MySQL (Grant dan Revoke) Jangan menyimpan password dalam bentuk teks di MySQL (pakai fungsi enkripsi searah seperti PASSWORD() dan MD5() untuk menenkripsi isi password) Tepat dalam memilih Password Pasang firewall di server Lakukan validasi data yang dientri setiap user ke dlm database Hati-hati dalam mengirim data via internet

Hak Akses (Privileges) di MySQL - 1 Semuahakaksestersimpandidatabase mysql:

Hak Akses (Privileges) di MySQL - 2 columns_priv: menyimpan hak akses user terhadap kolom db : menyimpan informasi mengenai hak akses user terhadap database. func : menyimpan informasi mengenai function yang didefinisikan di MySQL. host : menyimpan daftar komputer (bisa berupa alamat IP, nama komputer, atau %) yang berhak mengakses suatu database. proc : menyimpan informasi mengenai daftar procedure dalam MySQL. procs_priv : menyimpan informasi mengenai hak akses user terhadap procedure. tables_priv : menyimpan informasi mengenai hak akses user terhadap tabel user : menyimpan informasi user MySQL yang mencakup informasi user, password dan host user, serta hak akses user.

Perintah DCL (Grant & Revoke) di MySQL Grant : Memberikan / mengijinkan seorang user untuk mengakses tabel dalam database tertentu Revoke: digunkan untuk mencabut suatu hak akses dalam database tertentu

Bentuk Umum Perintah Grant dan Revoke 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

Pilihan untuk priv_type dalam perintah Grant dan Revoke:

Contoh Grant : GRANT ALL PRIVILEGES ON pemesanan.* TO tukul@localhost IDENTIFIED BY 123456' WITH GRANT OPTION; GRANTALLPRIVILEGESON*.* TO hindun@localhost IDENTIFIED BY 123456' WITH GRANT OPTION; GRANT SELECT ON pemesanan.pelanggan TO john@ % IDENTIFIED BY 123456' WITH GRANT OPTION; GRANT SELECT ON pemesanan.pelanggan TO IDENTIFIED BY 123456' WITH GRANT OPTION; CATATAN: Setiap perubahan hak akses di MySQL, termasuk menambahkan user baru, tdk berlaku sebelum diakhiri dgn perintah FLUSH PRIVILEGES;

Contoh Mengatur Hak Akses User yang sudah ada di MySQL GRANT ALL PRIVILEGES ON sekolah.* TO tukul@localhost; FLUSH PRIVILEGES;

Contoh Revoke : Menghapushakaksesuser tukul terhadapdatabase pemesanan. REVOKE ALL PRIVILEGES ON pemesanan.* FROM tukul@localhost; FLUSH PRIVILEGES;

Mengubah Password User UPDATE user SET Password=PASSWORD( passwordnya ) WHERE User= usernya AND Host= host-nya ; SET PASSWORD FOR user@host-nya = PASSWORD ( passwordnya ); FLUSH PRIVILEGES;

Sharing MySQL lewat computer-to-computer (ad-hoc) >> Win Xp Siapkan2 buahlaptop, misala danb Misal: laptop A akandijadikanserver Sebelumnya, non-aktifkan Windows Firewall pada laptop A Pada laptop A, Klik Start>Control panel>network Connections Klik kanan pada Wireless Network Connection>Pilih Properties

Sharing MySQL Pilih tab wireless networks Pada Preferred networks, klik add

Sharing MySQL SetelahdiOK, makaakankembalikewireless Network Connection Properties Lalu klik Advanced Pada bagian Network to access : pilih Computer-to- Computer (ad hoc) networks only, lalu Close. KlikOK

Sharing MySQL Sebelumdidihubungkan2buahlaptoptsb Atur IPAddressmasing-masinglaptopAdanB Pada laptop A, Buka kembali Wireless Network Connection Properties Pilih tab General>Double Click pada Internet Protocol (TCP/IP), lalu atur seperti berikut:

Sharing MySQL Kemudianuntuklaptop B, aturip nyasepertiberikut: IP Address : 192.168.1.2 Subnet mask : 255.255.255.0

Sharing MySQL Nah,kalausudahselesaisettingIPuntukkedualaptop(A danb) Sekarang pada laptop B coba view Wireless Network Connection Pilih wireless network yg tadi dibuat >> konekdb, klik connect

Sharing MySQL Untuk menguji koneksi kedua laptop, kita gunakan Command Prompt Padalaptop A : ping 192.168. 1.2 Pada laptop B : ping 192.168.1.1 Kalaudarilaptop B adapesan: Reply from 192.168.1.1, berarti koneksi sudah berhasil Sekarang tinggal tes masuk ke server MySQL yang adadilaptop A melaluilaptop B

PadalaptopA,melaluiMySQLnyacobaketiksbb: GRANT SELECT ON pemesanan.pelanggan TOjohn@ % IDENTIFIED BY 123456' WITH GRANT OPTION; FLUSH PRIVILEGES; Melalui laptop B coba masuk ke MySQL dengan user diatas (john) dan password (123456).AMATI HASILNYA!

Menguji Hak Akses Sintaks DCL diatas berarti memberikan hak akses kepada john melakukan perintah SELECT saja pada tabel pelanggan yang ada pada database pemesanan Untuk menguji hak aksesnya, coba lakukan perintah selain select pada tabel pelanggan, misalnya melakukan update atau insert, kemudian amati hasilnya!

Referensi : Nugroho, Bunafit. 2006. Database Relasional Dengan MySQL. Yogyakarta : Andi Publisher. Yakub. 2008. Sistem Basis Data. Yogyakarta : Graha Ilmu. http://www.achmatim.net http://www.ilmukomputer.org http://www.mysql.com http://id.wikipedia.org

End of this session

Stored Procedure adalah sebuah fungsi berisi kode SQL yang dapat digunakan kembali.

Dalam Stored Procedure juga dapat dimasukkan parameter sehingga fungsi dapat digunakan lebih dinamis berdasarkan parameter tersebut

Cara penulisan Stored Procedure

DELIMITER $$ CREATE PROCEDURE nama_procedure() BEGIN kode sql END$$ DELIMITER ;

Sedangkan untuk menjalankan Stored procedure adalah

CALL nama_procedure();

Hands ON

Sebelum mencoba menggunakan Stored Procedure kita harus mempunyai table yang siap digunakan

Referensi contoh membuat table dan record dapat dibaca di materi DDL dan DML

Buat table mahasiswa dan isi nilainya

CREATE TABLE mahasiswa ( nim INT(10), nama VARCHAR(100), alamat VARCHAR(100), PRIMARY KEY(nim) ); INSERT INTO mahasiswa VALUES (21400200,"faqih","bandung"), (21400201,"ina","jakarta"), (21400202,"anto","semarang"), (21400203,"dani","padang"), (21400204,"jaka","bandung"), (21400205,"nara","bandung"), (21400206,"senta","semarang");

> SELECT * FROM mahasiswa; +----------+-------+----------+ | nim | nama | alamat | +----------+-------+----------+ | 21400200 | faqih | bandung | | 21400201 | ina | jakarta | | 21400202 | anto | semarang | | 21400203 | dani | padang | | 21400204 | jaka | bandung | | 21400205 | nara | bandung | | 21400206 | senta | semarang | +----------+-------+----------+ 7 rows in set (0.00 sec)

Membuat Stored Procedure selectMahasiswa() untuk mendapatkan seluruh NIM dan NAM mahasiswa

DELIMITER $$ CREATE PROCEDURE selectMahasiswa() BEGIN SELECT nim, nama FROM mahasiswa; END$$ DELIMITER ;

Untuk memanggil Stored Procedure selectMahasiswa()

Hasilnya adalah

> CALL selectMahasiswa(); +----------+-------+ | nim | nama | +----------+-------+ | 21400200 | faqih | | 21400201 | ina | | 21400202 | anto | | 21400203 | dani | | 21400204 | jaka | | 21400205 | nara | | 21400206 | senta | +----------+-------+ 7 rows in set (0.00 sec)

Jadi, setiap ingin menampilkan NIM dan NAMA mahasiswa kita tidak perlu membuat kode SQL seperti biasanya. Cukup simpan kode SQL di Stored Procedure dan bisa kita panggil dan gunakan berulang – ulang

Stored Procedure dengan Parameter

Kita juga memasukkan parameter di Stored Procedure agar menjadi lebih dinamis

Contoh, kita ingin membuat kode SQL untuk mencari data mahasiswa berdasarkan alamat.

DELIMITER $$ CREATE PROCEDURE alamatMahasiswa ( alamatMhs VARCHAR(100) ) BEGIN SELECT * FROM mahasiswa WHERE alamat = alamatMhs; END$$ DELIMITER ;

Di dalam nama Stored Procedure terdapat parameter alamatMhs dengan tipe data varchar

Saat masuk ke kode SQL yaitu mencari mahasiswa dengan alamat yang sama dengan parameter yang diinputkan

Cara memanggilnya adalah

CALL alamatMahasiswa("bandung")

Hasilnya

> CALL alamatMahasiswa("bandung"); +----------+-------+---------+ | nim | nama | alamat | +----------+-------+---------+ | 21400200 | faqih | bandung | | 21400204 | jaka | bandung | | 21400205 | nara | bandung | +----------+-------+---------+ 3 rows in set (0.00 sec)

Dengan Stored Procedure alamatMahasiswa() kita mencari data mahasiswa yang berasal dari “bandung”

DML dengan Stored Procedure

Stored Procedure tidak hanya bisa diterapkan di Data Query Language (DQL) tetapi juga Data Manipulation Language (DML)

Misal kita ingin memasukkan data mahasiswa dengan Stored Procedure

DELIMITER $$ CREATE PROCEDURE insertMahasiswa ( nimMhs INT(10), namaMhs VARCHAR(100), alamatMhs VARCHAR(100) ) BEGIN INSERT INTO mahasiswa VALUES (nimMhs, namaMhs, alamatMhs); END$$ DELIMITER ;

Jika kita ingin memasukkan record baru di table mahasiswa maka akan ada 3 parameter saat memanggil Stored Procedure insertMahasiswa()

> CALL insertMahasiswa(21400207,"joni","jakarta"); Query OK, 1 row affected (0.05 sec) > SELECT * FROM mahasiswa; +----------+-------+----------+ | nim | nama | alamat | +----------+-------+----------+ | 21400200 | faqih | bandung | | 21400201 | ina | jakarta | | 21400202 | anto | semarang | | 21400203 | dani | padang | | 21400204 | jaka | bandung | | 21400205 | nara | bandung | | 21400206 | senta | semarang | | 21400207 | joni | jakarta | +----------+-------+----------+ 8 rows in set (0.00 sec)

Selanjutnya jika ingin memasukkan data mahasiswa ke table mahasiswa tidak perlu membuat kode INSERT berkali-kali. Kita bisa gunakan Stored Procedure insertMahasiswa() untuk menggantikan proses INSERT yang biasanya kita gunakan

Jadi Stored Procedure sangat penting dan akan memudahkan dalam menggunakan kode yang ingin dieksekusi secara berulang – ulang.

Materi MySQL dibagi menjadi beberapa artikel:

Cara Install XAMPP di Windows dan Linux
Belajar MySQL Dasar : Tutorial MySQL untuk Pemula
Belajar MySQL Dasar : Memahami perintah DDL
Belajar MySQL Dasar : Memahami perintah DML
Belajar MySQL Dasar : Memahami perintah DQL
Belajar MySQL Dasar : Memahami perintah DCL
Belajar MySQL Dasar : Memahami perintah TCL

Belajar MySQL Lanjut : Cara Menggunakan JOIN
Belajar MySQL Lanjut : Cara Membuat Stored Procedure
Belajar MySQL Lanjut : Cara Membuat VIEW
Belajar MySQL Lanjut : Cara Membuat TRIGGER
Belajar MySQL Lanjut : DDL MySQL dengan Python
Belajar MySQL Lanjut : DML MySQL dengan Python
Belajar MySQL Lanjut : DQL MySQL dengan Python