Wednesday, September 8, 2010

MySQL Manajemen User

MySQL Database adalah sebuah database yang populer, salah satu feature yang dimiliki oleh MySQL adalah Manajemen User.

Dalam sebuah Database MySQL Server biasanya terdapat banyak database, Dan pada umumnya satu buah database (dpt lebih dari satu) digunakan oleh satu buah aplikasi/web.


Contoh lainnya adalah pada jasa share hosting satu buah Database MySQL Server di pake rame-rame oleh banyak penyewa.

Karna Sebuah Database MySQL digunakan oleh rame-rame sudah saat nya dibutuhkan Manajemen User, untuk mengelolah hak ases dari setiap user dalam mengakses database agar tercipta ketertiban setiap user dalam menggunakan database.

Pada kasus lain Manajemen User Database juga dirasakan perlu diterapkan pada prodak-prodak aplikasi/program yang mengakses Database yang dapat berupa CMS, Framework atau apa pun yang mana prodak tersebut bersifat Open Source.

Karna  Open Source setiap orang bisa mengetahui dimana letak konfigurasi koneksi Database dan  bila kofigurasi itu berhasil 'dibongkar' dan koneksi-nya ke database menggunakan user Root  maka dapat terjadi kemungkian terburuk adalah Database dapat dirusak oleh-nya.

Untuk memenuhi kebutuhan tersebut dan mecegah kejadian buruk diatas maka Manajemen User adalah pilihan solusinya.

Berikut ini adalah Cara membuat membuat user di Database MySQL.

1. Masuk ke Console MySQL menggunakan user Root, sebagai contoh password yang saya gunakan adalah pass.
mysql -uroot -ppass

2. Sebagai contoh saya membuat sebuah user bernama dendie dengan password pass
CREATE USER 'dendie'@'localhost' IDENTIFIED BY 'pass';

3. Sebagai contoh, Kemudian user dendie diberikan akses hanya dapat mengakses database bernama sms
GRANT ALL PRIVILEGES ON sms.* TO 'dendie'@'%' WITH GRANT OPTION;

simbol sms.* mengartikan database yang dapat diakses adalah database sms beserta seluruh tabelnya.

Bila Anda menuliskannya begini sms.inbox artinya yang dapat diakses hanya tabel inbox pada tabel sms

simbol 'dendie'@'%' artinya database dapat diakses menggunakan user dendie dari IPAddess apa saja.

Bila Anda menuliskan 'dendie'@'119.168.10.28' artinya user dendie hanya dapat digunakan dari IP Address 119.168.10.28

Bila user dendie mencoba mengakses database selain sms maka yang terjadi adalah
ERROR 1044 (42000): Access denied for user 'dendie'@'localhost' to database 'portofolio

Sedangkan untuk menghapus user dapat mengunakan perintah seperti ini
DROP USER 'dendie'@'%';
pada contoh diatas adalah menghapus user dendie yang IP Address nya apa saja (%)

DROP USER 'yuli'@'localhost';
Pada contoh diatas adalah menghapus user yuli yang aksesnya dari localhost

Untuk melihat daftar user yang ada pada database dapat menggunakan cara seperti ini, terlebih dulu Anda harus login sebagai root
use mysql
select host,user from user;
Kemudian akan muncul hasil seperti dibawah ini
+---------------+------------------+
| host          | user             |
+---------------+------------------+
| %             | root             |
| 127.0.0.1     | root             |
| 192.168.10.%  | root             |
| dendie-laptop | root             |
| localhost     | debian-sys-maint |
| localhost     | root             |
| localhost     | websekolah       |
| localhost     | yuli             |
+---------------+------------------+

6 comments:

  1. tambahan mas, setelah command-command mandatory dituliskan diikuti dengan command : flush privileges. thanks.

    ReplyDelete
  2. pada posting ini menggunakan mysql version 5.1.4.

    untuk scrip-script diatas menggunakan Account Management Statements MySQL jadi tidak perlu flush privilege.

    Bila mengunakan manipulating SQL ke kelompok Grant Tables MySQL maka diperlukan perintah flush privilege.

    ReplyDelete
  3. terima kasih, blognya membantu

    ReplyDelete
  4. mas gmn caranya proteksi database agar selain user saya (contoh: fulan) tidak dpt mengakses database tsb, bahkan user root sendiri pun tdk bisa mengaksesnya, spt halnya pada firebird dimana kita bisa memproteksi database dari user lain dan dari SYSDBA (super usernya firebird)

    ReplyDelete
  5. aku coba pake grant all privileges on *.* to user_name with grant option;
    Query ok,

    Nah udah query ok. Tapi waktu ku mau buat database kok access denied ?
    Di mysqlnya jg udah pake user aku, bkn mysql -u root lagi.

    ReplyDelete