Duplicate entry

Copy-pasting from Stack Overflow is like cooking with a recipe book. You may end up with a decent meal, but you'll never truly master the art of programming.

SQL SECURITY DEFINER INVOKER MYSQL

SQL SECURITY adalah salah satu opsi yang dapat digunakan dalam definisi stored procedure di MySQL untuk menentukan konteks keamanan di mana stored procedure akan dijalankan. Ada dua opsi yang tersedia dalam SQL SECURITY, yaitu DEFINER dan INVOKER.

  • DEFINER: Opsi ini mengeksekusi stored procedure dengan hak akses yang diberikan kepada pengguna yang membuat stored procedure tersebut (yaitu, definernya). Dalam konteks ini, stored procedure dijalankan dengan hak akses yang diberikan pada definernya, bukan hak akses pengguna yang memanggil stored procedure.
  • INVOKER: Opsi ini mengeksekusi stored procedure dengan hak akses yang diberikan kepada pengguna yang memanggil stored procedure tersebut. Dalam konteks ini, stored procedure dijalankan dengan hak akses yang dimiliki oleh pengguna yang memanggil stored procedure.

Perbedaan utama antara opsi DEFINER dan INVOKER adalah hak akses yang digunakan untuk mengeksekusi stored procedure. Dengan opsi DEFINER, stored procedure dijalankan dengan hak akses yang diberikan pada definernya, sedangkan dengan opsi INVOKER, stored procedure dijalankan dengan hak akses pengguna yang memanggil stored procedure.

Secara default, MySQL menggunakan opsi DEFINER ketika sebuah stored procedure dibuat tanpa menyertakan opsi SQL SECURITY. Namun, sangat penting untuk mempertimbangkan opsi SQL SECURITY ketika membuat stored procedure, terutama jika stored procedure tersebut akan dijalankan dengan hak akses yang sensitif atau penting.

Dalam penggunaannya, opsi DEFINER biasanya digunakan pada stored procedure yang berisi perintah SQL untuk mengubah struktur database atau mengakses data sensitif, sementara opsi INVOKER biasanya digunakan pada stored procedure yang hanya digunakan untuk menjalankan operasi sederhana dan tidak memerlukan hak akses khusus.

CREATE PROCEDURE example_procedure (IN id INT)
SQL SECURITY INVOKER
BEGIN
  SELECT * FROM users WHERE id = id;
END;

Dalam contoh di atas, stored procedure example_procedure didefinisikan dengan opsi SQL SECURITY INVOKER. Stored procedure ini memiliki satu parameter id yang digunakan untuk memfilter hasil SELECT.

Ketika stored procedure ini dipanggil, ia akan dijalankan dengan hak akses pengguna yang memanggilnya. Dalam hal ini, pengguna yang memanggil stored procedure harus memiliki hak akses SELECT pada tabel users untuk dapat mengeksekusi stored procedure ini.

Penting untuk dicatat bahwa pengguna yang memanggil stored procedure ini akan menggunakan hak akses dan izin yang dimilikinya, bukan hak akses definernya. Oleh karena itu, opsi SQL SECURITY INVOKER sangat berguna untuk memastikan bahwa hak akses dan izin yang diterapkan pada stored procedure selalu sesuai dengan konteks pengguna yang memanggilnya.

posted by ismail okta kurniawan in MySQL Sejuta Umat and have No Comments

Place your comment

Please fill your data and comment below.
Name
Email
Website
Your comment

Skip to toolbar