Hak akses pada Mariadb

Database default, MariaDB terdiri dari;

  • test

    Database ini sering terhapus/terdelet karena database ini memliki beberapa ijin khusus untuk bebrapa user.

  • information_schema

    Sama seperti database test, untuk membuat user baru, user tersebut harus memiliki hak atau jetentuan secara global untuk “CREATE USER” atau “INSERT” ke database mysql.

  • mysql

    Menangani otentikasi dan otorisasi melalui tabel user pada database mysql. Hal ini berarti password root untuk database akan terus ada pada tabel user dan tidak berada pada sistem operasi yang sedang dijalankan. Pada saat sistem administrator ingin membuat user baru “CREATE USER“, user yang telah di create akan masuk kedalam tabel mysql.user dan user tersebut belum memiliki hak khusus.

Membuat User Baru

Perintah untuk membuat user baru;

CREATE USER namauser@localhost IDENTIFIED BY ‘password’

Ada kemungkinan user dengan nama yang sama mempunyai hak akses yang berbeda dan disesuaikan dengan hostnya dimana setiap host memilihi koneksi untuk akses.

Contoh namauser hanya bisa terkoneksi daro host localhost dengan password “password” dan tidak memiliki hak akses, dimana password tersnkripso pada tabel user. Akun “namauser“, akn ditolak pada setiap perintah jika belum diberikan hak akses. Jika hostname tidak diketahui atau tidak disediakan, maka dapat diasumsikan menggunakan “%” yang berarti user tersebut bisa mengakses dari sumber host manapun.

namauser@localhost namauser hanya akan terkoneksi dari localhost

namauser@10.9.10.10 namauser hanya akan terkoneksi dari Ipv4 10.9.10.10

namauser@10.9.10.% namauser hanya akan terkoneksi dari Ipv4 10.9.10.0

namauser@% namauser hanya akan terkoneksi dari Ipv4 manapun

Pemberian dan Pencabutan hak untuk pengguna (User Accounts)

Hak akses meliputi;

  • Global seperti CREATE USER dan SHOW DATABASES, untuk pelaksanaanya pada server database itu sendiri.

  • Databases, seperti CREATE untuk membuat database baru dan bisa diakses didalam database pada server dengan ketentuan tertinggi.

  • Tabel, seperti perintah CRUD (CREATE, REMOVE, UPDATE, DELETE), untuk membuat tabel dan manipulasi data pada database.

  • Kolom, untuk memberikan seperti penggunaan perintah tabel untuk kolom-kolom tertentu (umumnya jarang sekali digunakan).

  • Lain-lian, detail-detail hak akses, yang bisa didiskusikan secara mendetail didalam dokumentasi MariaDB.

Perintah GRANT dapat digunakan untuk memberikan hak akses ke pengguna (User Account). User yang terkoneksi harus memiliki hak akses GRANT OPTIONS (sebuah hak akses spesial yang ada di beberapa level) untuk memberikan hak akses. Sebuah user mungkin hanya bisa memberikan hak akses ke yang lain yang, dengan catatan telah diberikan hak akses untuk user tersebut.

Namauser tidak memiliki hak akses SELECT pada tabel database kecuali kalau namauser telah diberikan hak aksesnya dan memiliki hak akses GRANT OPTIONS pada tabel tersebut).

GRANT SELECT on [dbname] [tablename] TO [namauser]@[hostname]

*tanpa kurung siku

GRANT SELECT ON mysql.user TO namauser@loacalhost

Memeberikan hak akses SELECT untuk tabel “user” pada database “mysql” untuk user “namauser” dengan hostname “localhost”.

GRANT SELECT ON mysql.* TO namauser@localhost

Memberikan hak akses SELECT untuk semua tabel yang ada pada database “mysql” untuk user “namauser” dengan hostname “localhost”.

GRANT SELECT ON *.* TO namauser@localhost

Memberikan hak akses SELECT untuk semua tabel di semua database untuk user “namauser” dengan hostname “localhost”.

GRANT CREATE, ALTER, DROP ON mysql.* TO userbaru@localhos

Memberikan hak akses CREATE, ALTER dan DROP pada database “mysql” untuk user “namauser” dengan hostname“localhost”.

GRANT ALL PRIVILEGES ON *.* TO userbaru@localhost

Memberikan semua hak akses yang telah disediakan pada semua database untuk user “namauser” dengan hostname “localhost”, (sangat efektif untuk membuat superuser baru seperti root.)

Perintah REVOKE digunakan untuk mencabut hak akses yang telah diberikan kepada user. User tersebut harus berada pada hak akses GRANT OPTIONS dan memiliki hak akses agar hak akses tersebut bisa di cabut.

REVOKE SELECT on [dbname] [tablename FROM [namauser]@[hostname]

*tanpa kurung siku

Penting untuk diingat

Setelah memberikan hak akses “GRANT” atau mencabut hak akses “REVOKE”, reload semua hak akses dari tabel-tabel hak akses pada database tersebut.

FLUSH PRIVILEGES

Untuk mencabut hak akses, daftar dari pemberian hak akses akan sangat dibutuhkan. Cara mudah untuk mengetahui daftar hak akses untuk user tertentu adalah :

SHOW GRANTS FOR [namauser]@[hostname]

*tanpa kurung siku

Disaat ada sebuah user yang sudah tidak digunakan lagi, user tersebut bisa di hapus/delete dari database menggunakan DROP USER namauser;. Username tersebut harus menggunakan format yang sama user’@’host’ pada saat membuat user baru “CREATE USER“.

DROP USER [namauser]@[hostname]

*tanpa kurung siku

Melihat Daftar User 

Untuk melihat user yang terdaftar di dalam MySQL Server, kita dapat mengaksesnya dengan melihat tabel user yang terdapat di dalam database mysql.

Database mysql digunakan secara internal untuk manajemen meta data MySQL (metadataadalah data tentang sistem mysql itu sendiri) dimana salah satunya adalah tabel user MySQL. Karena pentingnya database ini, biasanya hanya user root yang memiliki hak akses penuh untuk database mysql.

Database mysql terdiri dari banyak tabel, namun untuk keperluan user, kita hanya akan menggunakan tabel user. Berikut query untuk melihat seluruh user yang terdaftar dalam MySQL:

SELECT user,host FROM mysql.user;

Dari query SELECT diatas, kita bisa melihat user apa saja dan pada alamat mana saja yang terdaftar.

Penting

Disaat sebuah user yang sedang mengakses database akan di hapus/delete, user tersebut tidak akan terdelete hingga koneksi user tersebut tertutup/close. Koneksi tidak akan tertutup/close secara otomatis.

Beberapa kejadian umum disaat mengakses Database

User telah diberikan hak akses terhubung ke database dari host manapun, tetapi hanya bisa terhubung melalui localhost menggunakan perintah mysql (aplikasi yang digunakan user tersebut tidak bisa terhubung dari host yang lain).

Hapus/remove skip-networking yang merujuk ke user tersebut dari my.cnf kemudian restart service nya.

User tidak bisa terhubung dengan user apapun pada localhost, “tidak secara remote”.

Cek konfigurasi bind-address di my.cnfuntuk memastikan database dapat diakses.
Pastikan di tabel user bahwa user tersebut termasuk dalam daftar yang akan terhubung ke database.

User bisa terhubung, tetapi tidak bisa melihat database apapun selain dari pada information_schema dan test.

Umumnya masalah tersebut terjadi ketika user baru telah dibuat/created, user tersebut tidak diberikan hak akses oleh superadmin.

User bisa terhubung, tetapi tidak bisa membuat database apapun.

Log In sebagai superadmin/root, kemudian berikan hak akses CREATE ke user tersebut.

User bisa terhubung, tetapi tidak bisa membaca atau menulis data apapun.

Log In sebagai superadmin/root, kemudian berikan hak akses CRUD (Create, Remove, Update, Delete) ke user tersebut.

Referensi : catatankakimu

               duniailkom

Updated: 1 Oktober 2018 — 19:29

Tinggalkan Balasan