Secara default, akun standar tidak memiliki izin. Akun istimewa (termasuk akun awal) dapat memberikan izin operasi pada objek database kepada akun standar.
Anda dapat menggunakan salah satu metode berikut untuk memberikan izin kepada akun database:
Berikan izin operasi pada objek database kepada akun database.
Berikan izin akun berdasarkan peran.
Metode ini menyederhanakan pengelolaan izin untuk beberapa akun database. Sebagai contoh, jika Anda ingin memberikan izin baca pada sebuah tabel kepada beberapa akun database, Anda dapat memberikan izin baca pada tabel tersebut kepada sebuah peran dan kemudian menetapkan peran tersebut kepada beberapa akun.
Berikan izin operasi pada objek database kepada akun database
Ketika sebuah objek database seperti database, skema, tabel, tampilan, urutan, atau fungsi dibuat, semua izin objek tersebut dimiliki oleh pemilik objek. Secara default, hanya pemilik objek dan akun database yang memiliki izin RDS_SUPERUSER yang memiliki izin untuk melakukan operasi pada objek tersebut. Jika akun database lain ingin melakukan operasi pada objek tersebut, akun tersebut harus memiliki izin yang diperlukan.
Tabel berikut menjelaskan izin pada objek database yang berbeda.
Objek database | Izin |
Tabel, tampilan, dan urutan | SELECT INSERT UPDATE DELETE RULE ALL |
Kolom tabel | SELECT INSERT UPDATE |
Tabel eksternal | SELECT RULE ALL |
Database | CONNECT CREATE TEMPORARY | TEMP ALL |
Fungsi | EXECUTE |
Bahasa prosedural | USAGE |
Skema | CREATE USAGE ALL |
Anda harus memberikan izin secara terpisah untuk setiap jenis objek. Sebagai contoh, jika Anda memberikan izin GRANT ALL pada sebuah database, Anda tidak dapat mengakses tabel dalam database tersebut. Anda hanya memiliki izin CONNECT, CREATE, dan TEMP pada database tersebut.
Berikan izin INSERT pada tabel mytable kepada jsmith. Contoh pernyataan:
GRANT INSERT ON mytable TO jsmith;Berikan izin SELECT dan TRUNCATE pada semua tabel dalam skema myschema kepada jsmith. Contoh pernyataan:
GRANT SELECT,TRUNCATE ON ALL TABLES IN SCHEMA myschema TO jsmith;Berikan izin SELECT pada kolom col1 dari tabel mytable kepada jsmith. Contoh pernyataan:
GRANT SELECT (col1) on TABLE mytable TO jsmith;Cabut semua izin pada tabel mytable dari jsmith. Contoh pernyataan:
REVOKE ALL PRIVILEGES ON mytable FROM jsmith;
Berikan izin akun berdasarkan peran
Anda dapat memberikan izin akun database berdasarkan peran. Anda dapat membuat sebuah peran, memberikan izin kepada peran tersebut, dan kemudian menetapkan peran tersebut kepada satu atau lebih akun database. Setelah Anda menyelesaikan operasi tersebut, akun tersebut mewarisi semua izin dari peran tersebut. Bagian berikut menunjukkan contoh tentang cara memberikan izin akun berdasarkan peran.
Buat sebuah peran bernama admin yang memiliki izin CREATEROLE dan CREATEDB.
CREATE ROLE admin CREATEROLE CREATEDB;Tetapkan peran admin kepada john, sally, dan bob.
GRANT admin TO john, sally, bob;Cabut peran admin dari bob.
REVOKE admin FROM bob;Berikan izin pada objek database kepada peran admin. Dengan cara ini, semua akun database yang memiliki peran admin mewarisi izin tersebut.
GRANT ALL ON TABLE mytable TO admin;
GRANT ALL ON SCHEMA myschema TO admin;
GRANT ALL ON DATABASE mydb TO admin;FAQ
Bagaimana cara memberikan izin DROP TABLE?
Anda tidak dapat menjalankan pernyataan GRANT untuk memberikan izin kepada akun database untuk menghapus tabel. Namun, pemilik tabel atau skema dapat menghapus tabel tersebut.
Anda dapat menggunakan akun istimewa atau pemilik tabel atau skema untuk mengubah pemilik tabel atau skema ke akun database lain. Dengan cara ini, pemilik baru dapat menghapus tabel tersebut.
-- Ubah pemilik tabel mytable menjadi new_owner. Dengan cara ini, new_owner dapat menghapus tabel mytable.
ALTER Table mytable OWNER TO new_owner;
-- Ubah pemilik skema myshema menjadi new_role. Dengan cara ini, new_owner dapat menghapus tabel mytable dan semua tabel lainnya dalam skema myschema.
ALTER SCHEMA myschema OWNER TO new_owner; Jika beberapa akun database perlu memiliki izin untuk menghapus tabel atau skema yang sama, Anda dapat memanfaatkan pewarisan izin peran untuk mengubah pemilik tabel atau skema ke peran tertentu dan menetapkan peran tersebut kepada beberapa akun.
-- Buat peran bernama new_role.
CREATE ROLE new_role;
-- Ubah pemilik tabel mytable menjadi new_role. Dengan cara ini, new_role dapat menghapus tabel mytable.
ALTER Table mytable OWNER TO new_role;
-- Ubah pemilik skema myshema menjadi new_role. Dengan cara ini, new_owner dapat menghapus tabel mytable dan semua tabel lainnya dalam skema myschema.
ALTER SCHEMA myschema OWNER TO new_role;
-- Berikan izin new role kepada myuser.
GRANT new_role To myuser; Referensi
Untuk informasi tentang cara membuat akun istimewa dan akun standar, lihat Buat dan kelola akun database.
Untuk informasi tentang cara memberikan akses akun dan mencabut izin akses akun, lihat bagian "GRANT" dan "REVOKE" dari topik sintaks SQL.