![]() |
OpO ~ Memahami Hak Akses (Privileges) Pada MySQL |
Ciao,
OpODab.com - MySQL pada dasarnya merupakan
sistem database yang aman. Di MySQL kita dapat mengatur hak akses tiap user
terhadap data di database. MySQL memungkinkan kita mengatur hak akses user
sampai pada tingkat kolom. Artinya kita dapat mengatur kolom tertentu dapat
diakses oleh user siapa saja. Semua pengaturan hak akses (privileges)
tersimpan di database mysql yang secara default sudah ada di
sistem MySQL.
Di dalam database mysql
antara lain terdapat tabel-tabel sebagai berikut:
- user. Tabel ini digunakan untuk menyimpan informasi user MySQL yang mencakup informasi user, password dan host user, serta informasi hak akses user.
- db. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap database.
- host. Tabel ini digunakan untuk menyimpan daftar komputer (bisa berupa alamat IP, nama komputer, atau %) yang berhak mengakses suatu database.
- tables_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap tabel. Dengan kata lain menyimpan tabel ini dapat diakses oleh siapa dengan hak akses apa saja.
- columns_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap kolom.
- procs_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap procedure.
- proc. Tabel ini digunakan untuk menyimpan informasi mengenai daftar procedure dalam MySQL.
- func. Tabel ini digunakan untuk menyimpan informasi mengenai function yang didefinisikan di MySQL.
GRANT dan REVOKE di
MySQL Untuk
mengatur hak akses di MySQL, pada dasarnya kita menggunakan bentuk perintah
GRANT dan REVOKE. Berikut ini bentuk umum perintah GRANT dan REVOKE secara
sederhana :
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
Berikut ini pilihan
untuk priv_type dalam bentuk umum perintah GRANT dan REVOKE di atas:
ALL PRIVILEGES FILE
RELOAD
ALTER INDEX SELECT
CREATE INSERT SHUTDOWN
DELETE PROCESS UPDATE
DROP REFERENCES USAGE
Perintah GRANT dan
REVOKE dapat digunakan untuk membuat user baru maupun mengatur hak akses user
yang sudah ada dengan hak akses (privileges ) tertentu. Tingkatan hak akses
user dapat terbagi menjadi tingkatan global (tersimpan di tabel mysql.user),
database (tersimpan di tabel mysql.host dan mysql.db), tabel (tersimpan di
tabel mysql.tables_priv) dan kolom (tersimpan di tabel mysql.columns_priv). Setiap
perubahan hak akses di MySQL, termasuk menambahkan user baru, tidak akan
berlaku sebelum diakhiri dengan perintah FLUSH PRIVILEGES.
Baca
Juga : Dasar
Perintah SQL
Menambahkan dan Mengatur
Hak Akses User
Untuk menambahkan dan
mengatur hak akses (privileges) user di MySQL, kita dapat menggunakan 2
cara.
- Pertama langsung melakukan INSERT atau UPDATE ke tabel mysql.user, dan tabel-tabel lain sesuai dengan hak aksesnya. Cara ini tidak disarankan karena mengandung resiko terjadi kesalahan.
- Kedua adalah dengan perintah GRANT dan REVOKE. Perintah ini mudah dipahami dan diterapkan karena lebih sederhana. MySQL secara otomatis akan menyimpan informasi user ke tabel sesuai dengan hak aksesnya. Berikut ini beberapa contoh menambahkan user baru di MySQL:
Menambahkan user baru
dengan nama user ‘lholhox’ yang
dapat mengakses semua database dari komputer ‘localhost’ dengan password ‘lholhox’. User ini juga berhak menjalankan perintah
GRANT untuk user lain.
GRANT ALL
PRIVILEGES ON *.* TO lholhox@localhost
IDENTIFIED BY 'lholhox' WITH GRANT OPTION;
Menambahkan user baru
dengan nama user ‘agus’, tidak dapat mengakses database (*.*), hanya
dapat mengakses dari komputer dengan IP ‘192.168.1.5’ dan password ‘agus’.
GRANT
USAGE ON *.* TO agus@192.168.1.5 IDENTIFIED BY 'agus';
Baca Juga
: 9
Langkah Merancang Database
Menambahkan user baru
dengan nama user ‘admin, hanya dapat mengakses database ‘penjualan’,
hanya dapat mengakses dari komputer ‘localhost’ dan dengan password ‘admin’.
GRANT ALL
PRIVILEGES ON penjualan.* TO admin@localhost
IDENTIFIED BY 'admin';
Berikut ini beberapa
contoh mengatur hak akses user yang sudah ada di MySQL:
Mengubah hak akses user
‘agus’ agar dapat mengakses database ‘penjualan’.
GRANT ALL
PRIVILEGES ON penjualan.* TO agus@192.168.1.5; FLUSH PRIVILEGES;
Mengubah hak akses user
‘admin’ agar dapat CREATE di database ‘penjualan’.
GRANT
CREATE ON penjualan.* TO admin@localhost;
FLUSH
PRIVILEGES;
Menghapus Hak Akses User
Untuk menghapus hak
akses user, dapat dilakukan dengan perintah REVOKE. Berikut ini
contohnya:
Menghapus hak akses user
‘admin’ terhadap database ‘penjualan’.
REVOKE
CREATE ON penjualan.* FROM admin@localhost;
FLUSH
PRIVILEGES;
Mengganti Password User
Untuk mengganti password
suatu user di MySQL, kita tinggal menjalankan perintah UPDATE terhadap field
Password di tabel mysql.user. Password tersebut diekripsi dengan fungsi PASSWORD().
Baca
Juga : Tipe
Tabel Dan Kolom Pada MySQL
Berikut ini perintah SQL
yang dapat digunakan untuk mengganti password user:
UPDATE
user SET Password=PASSWORD(‘123’)
WHERE User=’admin’
AND Host=’localhost’;
SET
PASSWOR
D FOR admin@localhost
= PASSWORD (‘123’);
FLUSH
PRIVILEGES;
Ciao,
OpODab,
Posting Komentar