Indonesia Website Awards
Indonesia Website Awards

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 :

PrivilegesKeterangan
ALL [PRIVILEGES]Memberikan seluruh hak akses, kecuali GRANT OPTION
ALTERHak akses untuk merubah tabel ( query ALTER TABLE )
ALTER ROUTINEHak akses untuk merubah stored routines
CREATEHak akses untuk membuat tabel dan database
CREATE ROUTINEHak akses untuk membuat dan menghapus stored routine
CREATE TABLESPACEHak akses untuk membuat, mengubah dan menghapus tablespaces dan log file
CREATE TEMPORARYTABLESHak akses untuk membuat tabel sementara
CREATE USERHak akses untuk membuat, menghapus, dan mengubah user ( query : CREATE USER, DROP USER, RENAME USER dan REVOKE ALL PRIVILEGES )
CREATE VIEWHak akses untuk membuat dan mengubah views
DELETEHak akses untuk menghapus data ( query DELETER )
DROPHak akses untuk menghapus database, tabel dan view
EVENTHak akses untuk membuat event
EXECUTEHak akses untuk menjalankan stored routines
FILEHak akses untuk membuat server membaca maupun membuat file
GRANT OPTIONHak akses untuk memberikan hak akses kepada user lainnya.
INDEXHak akses untuk membuat dan menghapus index
INSERTHak akses untuk menambahkan data (query INSERT)
LOCK TABLESHak akses untuk mengunci tabel ( query LOCK TABLES )
PROCESSHak akses untuk melihat seluruh proses ( query SHOW PROCESSLIST )
PROXYHak akses untuk proses proxy
REFERENCESHak akses Pembuatan batasan kunci asing
RELOADHak akses untuk operasi FLUSH
REPLICATION CLIENTHak akses untuk mengubah urutan master dan slave server
REPLICATION SLAVEHak akses untuk server replikasi untuk membaca log event biner dari server Master
SELECTHak akses untuk melihat data ( query SELECT )
SHOW DATABASESHak akses untuk melihat seluruh database ( query SHOW DATABASES )
SHOW VIEWHak akses untuk melihat pembuatan view ( query SHOW CREATE VIEW )
SHUTDOWNHak akses untuk mysqladmin shutdown
SUPERHak akses untuk fungsi administrasi server, seperti CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, dan perintah debug mysqladmin
TRIGGERHak akses untuk operasi trigger
UPDATEHak akses untuk memperbaharui data ( query UPDATE )
USAGESama 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

Kategori: Database

Lukems

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

0 Komentar

Tinggalkan Balasan

Avatar placeholder

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *