Pengaturan Privileges User MySQL/MariaDB

Hallo semuanya, Saya mau berbagi tips nih mengenai pengaturan privileges user MySQL / MariaDB. kalau kalian sudah membaca postingan saya mengenai Tips Membuat User Database MySQL/MariaDB , disitu Saya sudah sedikit menjelaskan pentingnya mengatur privileges user database. Kenapa pengaturan privileges itu penting? karena kalau kita tidak mengaturnya alias memberikan full akses kepada user, ditakutkan akan ada penyalahgunaan user database itu sendiri. Seperti contoh kasus, ada developer baru, dia belum terlalu mahir di query database, lalu dia tidak sengaja menghapus data atau bahkan tabel dan juga database, itu sangat berbahaya. Maka dari itu MySQL/MariaDB menyediakan aturan privileges bagi user agar meminimalisir kesalahan yang bisa terjadi.

Untuk itu langsung saja, inilah aturan privileges yang ada di MySQL/MariaDB :

Privileges Keterangan
ALL [PRIVILEGES] Memberikan seluruh hak akses, kecuali GRANT OPTION
ALTER Hak akses untuk merubah tabel ( query ALTER TABLE )
ALTER ROUTINE Hak akses untuk merubah stored routines
CREATE Hak akses untuk membuat tabel dan database
CREATE ROUTINE Hak akses untuk membuat dan menghapus stored routine
CREATE TABLESPACE Hak akses untuk membuat, mengubah dan menghapus tablespaces dan log file
CREATE TEMPORARYTABLES Hak akses untuk membuat tabel sementara
CREATE USER Hak akses untuk membuat, menghapus, dan mengubah user ( query : CREATE USER, DROP USER, RENAME USER dan REVOKE ALL PRIVILEGES )
CREATE VIEW Hak akses untuk membuat dan mengubah views
DELETE Hak akses untuk menghapus data ( query DELETER )
DROP Hak akses untuk menghapus database, tabel dan view
EVENT Hak akses untuk membuat event
EXECUTE Hak akses untuk menjalankan stored routines
FILE Hak akses untuk membuat server membaca maupun membuat file
GRANT OPTION Hak akses untuk memberikan hak akses kepada user lainnya.
INDEX Hak akses untuk membuat dan menghapus index
INSERT Hak akses untuk menambahkan data (query INSERT)
LOCK TABLES Hak akses untuk mengunci tabel ( query LOCK TABLES )
PROCESS Hak akses untuk melihat seluruh proses ( query SHOW PROCESSLIST )
PROXY Hak akses untuk proses proxy
REFERENCES Hak akses Pembuatan batasan kunci asing
RELOAD Hak akses untuk operasi FLUSH
REPLICATION CLIENT Hak akses untuk mengubah urutan master dan slave server
REPLICATION SLAVE Hak akses untuk server replikasi untuk membaca log event biner dari server Master
SELECT Hak akses untuk melihat data ( query SELECT )
SHOW DATABASES Hak akses untuk melihat seluruh database ( query SHOW DATABASES )
SHOW VIEW Hak akses untuk melihat pembuatan view ( query SHOW CREATE VIEW )
SHUTDOWN Hak akses untuk mysqladmin shutdown
SUPER Hak akses untuk fungsi administrasi server, seperti CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, dan perintah debug mysqladmin
TRIGGER Hak akses untuk operasi trigger
UPDATE Hak akses untuk memperbaharui data ( query UPDATE )
USAGE Sama artinya dengan tanpa hak akses

 

selanjutnya cara menggunakannya tinggal menjalankan query seperti ini :

GRANT privileges ON `namaDatabase`.`namaTabel` TO 'user'@'alamatIP';

contohnya :

#1
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1';
#2
GRANT SELECT, SHOW VIEW ON `myDatabase`.* TO 'admin'@'127.0.0.1';
#3
GRANT SELECT, INSERT, UPDATE, DELETE ON `myDatabase`.`myTable` TO 'admin'@'127.0.0.1';

Sedikit penjelasan :

#1 untuk bagian *.* artinya kita memberikan akses tersebut ke semua database beserta tabel yang dimilikinya.

#2 kita dapat menggunakan tanda , koma untuk menentukan lebih dari satu privileges dan untuk bagian `myDatabase`.* artinya kita memberikan akses hanya di database myDatabase dengan akses keseluruh tabel database tersebut

#3 kita juga dapat memberikan akses hanya pada tabel tertentu di salah satu database dengan contoh ini `myDatabase.`myTable`

tips dari saya, atur privileges sesuai dengan tingkatan serta kebutuhan developer masing – masing. Kalau di tempat Saya bekerja contohnya seperti ini :

#Privileges untuk Senior development / Senior Database Administrator (DBA)
GRANT ALL PRIVILEGES ON *.* TO 'superAdmin'@'127.0.0.1';

#Privileges untuk DBA yang bertugas menganalisa / patching data
GRANT SELECT, SHOW VIEW, SHOW DATABASES, PROCESS, INSERT, UPDATE, DELETE ON *.* TO 'adminDBA'@'127.0.0.1';

#Privileges untuk user Backup Data
GRANT SELECT, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE ON *.* TO 'backupUser'@'127.0.0.1';

#Privileges untuk user only read salah satu database
GRANT SELECT, SHOW VIEW ON `databaseX`.* TO 'userX'@'127.0.0.1';

Yap, itulah sedikit tips mengenai pengaturan privileges user MySQL / MariaDB yang bisa Saya bagikan, semoga tulisan Saya dapat bermanfaat. Terima kasih ^^.

 

SUMBER :

6.2.2 Privileges Provided by MySQL

Lukems: Hanya manusia biasa yang hidup sederhana dan mempunyai keluarga kecil yang bahagia

This website uses cookies.