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 :