Home > Manajemen Database > Pengaturan Ijin Akses Database MySQL

Pengaturan Ijin Akses Database MySQL


Server database MySQL menawarkan banyak pilihan kontrol bagi pengguna biasa maupun Administrator. Administrator dapat mengatur hak (atau ijin akses) dari pengguna tertentu terhadap server MySQL dengan membatasi akses mereka ke suatu database lengkap atau hanya membatasi ijin untuk tabel tertentu.

Aturan kontrol yang dibuat oleh Administrator akan tersimpan di dalam lima (5) tabel dari database mysql, yaitu:

>> tabel user, menentukan hak “dasar” apa saja yang dimiliki pengguna, serta darimana seorang pengguna dapat terhubung ke server
>> tabel db, tables_priv, dan columns_priv, menetapkan hak akses pengguna terhadap suatu database, tabel atau kolom di dalam tabel tertentu, diakses dari suatu host tertentu.
>> tabel host, menentukan  host mana saja yang dapat mengakses suatu database, dan sejauh apa hak yang dimiliki oleh akses dari host tersebut.


Bagaimana Memberikan Ijin ke Pengguna?

Pernyataan GRANT memberikan Administrator kekuatan untuk mmembolehkan semuanya atau sebagian hak terpilih terhadap suatu database kepada pengguna tertentu, bisa juga hanya ijin terhadap tabel tertentu. Sebelum menjalankan perintah GRANT, tentukan anda, sebagai Administrator harus login terlebih dahulu ke server MySQL.

$mysql -u db_admin password  db_passwd

Catatan: db_admin dan db_passwd merupakan username Administrator dan passwordnya. Jika Administrator bernama “root’ dan belum diberikan password maka baris di atas menjadi:

$mysql -u root

Sekarang GRANT sudah dapat diberikan pada prompt mysql>.

Contoh berikut memperlihatkan cara memberikan hak SELECT kepada pengguna db_user:

GRANT SELECT ON db_base.* TO db_user@’localhost’ IDENTIFIED BY ‘db_passwd’;

Baris di atas menyatakan bahwa pengguna db_user hanya dapat mengakses database db_base menggunakan perintah SELECT. Pengguna db_user juga hanya dapat mengakses ini dari localhost dengan password db_password.

Jika ijin SELECT dianggap tidak cukup, Administrator dapat memberikan ijin tambahan, seperti berikut:

GRANT SELECT, INSERT, DELETE ON db_base.* TO db_user@’localhost’ IDENTIFIED BY ‘db_passwd’;

Sekarang pengguna db_user dapat mengakses database dengan perintah SELECT, INSERT dan DELETE, tentunya saat login dari localhost seperti sebelumnya.

Bagaimana untuk memberikan hak penuh secara total dari suatu database kepada pengguna db_user tersebut? GUnakan GRANT ALL:

GRANT ALL PRIVILEGES ON db_base.* TO db_user @’%’ IDENTIFIED BY ‘db_passwd’;

Baris di atas menyatakan bahwa pengguna db_user memperoleh akses total terhadap database db_base dan dapat mengakses database ini dari mesin (komputer) lain, tidak hanya dari localhost. Tanda “%” menggantikan localhost, menyatakan bahwa pengguna dapat memanfaatkan semua perijinan atau hak tadi dari host manapun.

Kadang kala diperlukan agar ijin hanya diberikan untuk mengakses tabel tertentu. Caranya, cukup ganti ‘*’ pada’db_base.*’ dengan nama tabel yang dibolehkan tersebut.

GRANT ALL PRIVILEGES ON db_base.phonebook TO db_user @’%’ IDENTIFIED BY ‘db_passwd’;

Baris di atas menyatakan bahwa pengguna db_user mendapatkan ijin penuh terhadap tabel phonebook di dalam database db_base.

Apakah semua privilege (ijin) yang ditetapkan di atas telah berlaku? BELUM. Perintah-perintah di atas hanya memasukkan baris-baris (record) ke dalam tabel yang terkait dengan perijinan akses. Administrator hanya mengaktifkan perijinan dengan dengan perintah FLUSH PRIVILEGES.

FLUSH PRIVILEGES;

Selain dengan perintah FLUSH PRIVILEGES, merestart server MySQL juga akan memberlakukan semua pengaturan yang ada di dalam database mysql, namun ini tentu tidak bijak dilakukan apalagi saat server MySQL tersebut diakses banyak pengguna (dan aplikasi).

  1. itankjs
    30 August 2014 at 3:01 pm

    tks.. ilmunya semoga bermanfaat
    http://ji-software.com

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: