全部产品
Search
文档中心

Hologres:Fungsi model izin sederhana

更新时间:Jan 13, 2026

Topik ini menjelaskan fungsi-fungsi yang dapat Anda gunakan untuk mengelola Model Izin Sederhana (SPM) di Hologres.

Ikhtisar fungsi

Topik ini menjelaskan fungsi dan fitur Model Izin Sederhana.

  • spm_enable: Mengaktifkan model izin sederhana.

  • spm_migrate: Melakukan migrasi objek instans yang sudah ada, seperti tabel, view, dan foreign table, ke model izin SPM.

  • spm_create_user: Membuat pengguna dengan hanya izin logon. Anda harus memberikan izin spesifik kepada pengguna tersebut untuk pengembangan.

  • spm_grant: Menambahkan pengguna ke kelompok pengguna.

  • spm_revoke: Menghapus pengguna dari kelompok pengguna.

  • spm_disable: Menonaktifkan model izin sederhana untuk DB saat ini.

  • spm_cleanup: Melakukan purge terhadap kelompok pengguna yang dicadangkan oleh SPM dari suatu DB.

spm_enable

  • Deskripsi

    Fungsi spm_enable() mengaktifkan model izin sederhana.

    Setelah memanggil fungsi spm_enable(), sistem secara otomatis membuat empat kelompok pengguna: {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer.

  • Sintaksis

    CALL spm_enable();
    Catatan

    Hanya superuser instans yang dapat memanggil fungsi spm_enable().

  • Catatan Penggunaan

    Perubahan berikut terjadi setelah memanggil fungsi spm_enable() untuk mengaktifkan SPM:

    • Semua izin pada DB dicabut dari kelompok pengguna PUBLIC. Akibatnya, pengguna tanpa izin eksplisit tidak dapat terhubung ke DB target.

    • Semua izin pada semua skema di dalam DB dicabut dari kelompok pengguna PUBLIC.

    • Kelompok {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer semuanya dapat terhubung ke DB.

    • Kelompok {db}_admin menjadi Pemilik DB dan semua skema di dalam DB.

    • Kelompok {db}_developer, {db}_writer, dan {db}_viewer memiliki izin USAGE pada semua skema. Kelompok {db}_developer juga memiliki izin CREATE pada semua skema.

    • Kelompok {db}_developer menjadi pemilik objek yang dibuat oleh anggota kelompok {db}_admin dan {db}_developer. Kelompok {db}_writer diberikan izin baca-tulis, dan kelompok {db}_viewer diberikan izin read-only.

spm_migrate

  • Deskripsi

    Fungsi spm_migrate() melakukan migrasi objek instans yang sudah ada, seperti tabel, view, dan foreign table, ke model izin SPM.

  • Sintaksis

    CALL spm_migrate( [ batch_size ] );

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    Rentang nilai

    batch_size

    Jumlah objek per migrasi massal.

    Jika Anda mengatur parameter ini ke 0, nilai saat ini dari max_locks_per_transaction digunakan sebagai ukuran batch.

    Nilai harus berada dalam rentang [0, max_locks_per_transaction]. Nilai di luar rentang ini tidak valid. Anda dapat menjalankan perintah SQL show max_locks_per_transaction; untuk melihat nilai aktual max_locks_per_transaction.

    Jika instans Anda memiliki banyak objek (ribuan atau puluhan ribu) yang perlu dialihkan ke model izin sederhana, Anda harus menjalankan fungsi spm_migrate() beberapa kali hingga semua objek dialihkan.

    Selain itu, bergabunglah dengan grup komunikasi gudang data real-time Hologres untuk meminta peningkatan nilai parameter max_locks_per_transaction, lalu lakukan operasi tersebut. Untuk informasi lebih lanjut tentang cara bergabung ke grup, lihat Dapatkan dukungan online lebih lanjut.

  • Catatan Penggunaan

    • Jika pesan DONE BUT NOT COMPLETED dikembalikan setelah memanggil fungsi spm_migrate(), berarti tidak semua objek telah dimigrasikan. Anda harus memanggil kembali spm_migrate().

    • Jika pesan COMPLETED dikembalikan, berarti semua objek telah dimigrasikan.

  • Contoh

    CALL spm_migrate(); // Alihkan maksimal sejumlah objek sesuai max_locks_per_transaction ke pengelolaan SPM.
    
    CALL spm_migrate(128); // Alihkan 128 objek ke pengelolaan SPM.

spm_create_user

  • Deskripsi

    Fungsi spm_create_user() membuat pengguna dalam model izin sederhana. Pengguna yang dibuat hanya memiliki izin logon. Anda harus memberikan izin spesifik kepada pengguna tersebut untuk pengembangan.

    Catatan

    Hanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.

  • Sintaksis

    CALL spm_create_user( user_name [, role_name] );

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    user_name

    Username yang akan dibuat. Formatnya sebagai berikut:

    • Akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.

    • Akun Pengguna RAM, seperti RAM$mainaccount:subuser atau p4_202338382183xxx.

    role_name

    Saat membuat pengguna, Anda dapat menambahkan pengguna tersebut ke salah satu kelompok pengguna berikut sesuai kebutuhan:

    • {db}_admin

    • {db}_developer

    • {db}_writer

    • {db}_viewer

  • Contoh

    CALL spm_create_user('my_t***@aliyun.com');
    CALL spm_create_user('RAM$my_test:mysubuser', 'mydb_developer');
    CALL spm_create_user('13532313103042xxx');
    CALL spm_create_user('p4_23319103042xxx', 'mydb_admin');

spm_grant

  • Deskripsi

    Fungsi spm_grant() menambahkan pengguna ke kelompok pengguna {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.

    Catatan

    Hanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.

  • Sintaksis

    CALL spm_grant( role_name, user_name );

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    role_name

    Anda dapat menambahkan pengguna ke salah satu kelompok pengguna berikut sesuai kebutuhan:

    • {db}_admin

    • {db}_developer

    • {db}_writer

    • {db}_viewer

    Untuk informasi lebih lanjut tentang izin kelompok pengguna, lihat Model izin sederhana (SPM).

    user_name

    Username yang akan ditambahkan ke kelompok pengguna. Formatnya sebagai berikut:

    • Akun Alibaba Cloud, seperti 13432193xxxx atau x*@aliyun.com.

    • Akun Pengguna RAM, seperti RAM$mainaccount:subuser atau p4_202338382183xxx.

  • Catatan Penggunaan

    • Anda hanya dapat memanggil fungsi ini setelah model izin sederhana diaktifkan.

    • user_name harus berupa akun Alibaba Cloud atau ID akun Alibaba Cloud.

    • role_name harus berupa {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.

  • Contoh

    CALL spm_grant('mydb_developer', 'p4_202338382183xxx');// Berikan izin developer untuk database mydb kepada Pengguna RAM.
    CALL spm_grant('mydb_admin', 'RAM$my_test:xxx');// Berikan izin admin untuk database mydb kepada Pengguna RAM.
    CALL spm_grant('otherdb_admin', '13532313103042xxx'); // Error. Untuk menambahkan pengguna ke role DB lain, hubungkan ke DB tersebut dan jalankan fungsi spm_grant.

spm_revoke

  • Deskripsi

    Fungsi spm_revoke() menghapus pengguna dari kelompok pengguna {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.

    Catatan

    Hanya superuser atau anggota kelompok {db}_admin yang dapat memanggil fungsi ini.

  • Sintaksis

    CALL spm_revoke( role_name, user_name );
  • Catatan Penggunaan

    • Anda hanya dapat memanggil fungsi ini setelah model izin sederhana diaktifkan.

    • user_name harus berupa akun Alibaba Cloud atau ID akun Alibaba Cloud.

    • role_name harus berupa {db}_admin, {db}_developer, {db}_writer, atau {db}_viewer.

  • Contoh

    CALL spm_revoke('mydb_developer', 'p4_202338382183xxx');// Hapus Pengguna RAM dari kelompok developer database mydb.
    CALL spm_revoke('mydb_admin', 'RAM$my_test:xxx');// Hapus Pengguna RAM dari kelompok admin database mydb.
    CALL spm_revoke('otherdb_admin', '13532313103042xxx'); // Error. Untuk menghapus pengguna dari kelompok pengguna DB lain, hubungkan ke DB tersebut dan jalankan spm_revoke.

spm_disable

  • Deskripsi

    Fungsi spm_disable() menonaktifkan model izin sederhana untuk DB saat ini.

    Catatan

    Hanya superuser yang dapat memanggil fungsi ini.

  • Sintaksis

    CALL spm_disable();
  • Catatan Penggunaan

    Langkah-langkah berikut menjelaskan cara menonaktifkan SPM:

    • Kelompok pengguna {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer tetap dipertahankan. Anda dapat menggunakan pernyataan otorisasi dalam mode expert untuk menambahkan pengguna ke kelompok-kelompok pengguna ini guna pengelolaan izin. Pemilik objek database tetap {db}_developer.

    • Izin CONNECT dan TEMPORARY pada DB diberikan kepada PUBLIC.

    • Izin USAGE dan CREATE pada skema public di dalam DB diberikan kepada PUBLIC.

    • Izin EXECUTE pada fungsi dan prosedur di skema public DB diberikan kepada PUBLIC.

    • Izin USAGE pada LANGUAGE buatan pengguna diberikan kepada PUBLIC.

    • Izin USAGE pada TYPE buatan pengguna diberikan kepada PUBLIC.

  • Contoh

    CALL spm_disable();

spm_cleanup

  • Deskripsi

    Fungsi spm_cleanup() melakukan purge terhadap kelompok pengguna yang dicadangkan oleh SPM dari suatu DB, termasuk {db}_admin, {db}_developer, {db}_writer, dan {db}_viewer.

    Catatan

    Hanya superuser yang dapat memanggil fungsi ini.

  • Sintaksis

    CALL spm_cleanup( db_name [, batch_size ] );

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    Rentang nilai

    db_name

    DB tempat kelompok pengguna akan di-purge. Apabila db_name mengandung karakter khusus atau huruf kapital, sertakan dalam tanda kutip ganda. Misalnya, "MYDB".

    Tidak ada

    batch_size

    Jumlah objek yang dimigrasikan dalam satu batch.

    Nilai 0 menunjukkan bahwa nilai max_locks_per_transaction saat ini digunakan sebagai batch_size.

    [0, max_locks_per_transaction]. Nilai di luar rentang ini tidak valid.

    Jika instans Anda memiliki banyak objek untuk dimigrasikan, seperti ribuan atau bahkan puluhan ribu, overflow lock dapat terjadi. Jika hal ini terjadi, eksekusi fungsi spm_migrate() beberapa kali hingga semua objek dimigrasikan.

    Juga, bergabunglah dengan grup komunikasi Hologres untuk meminta peningkatan nilai parameter max_locks_per_transaction, lalu eksekusi migrasi tersebut. Untuk informasi tentang cara bergabung ke grup, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.

  • Catatan Penggunaan

    • Jika pesan DONE BUT NOT COMPLETED dikembalikan, pembersihan belum lengkap dan kelompok pengguna yang dicadangkan belum dihapus. Anda harus memanggil kembali fungsi spm_cleanup().

    • Jika pesan COMPLETED dikembalikan, pembersihan telah selesai dan kelompok pengguna yang dicadangkan telah dihapus. Anda tidak perlu memanggil fungsi ini lagi.

  • Contoh

    CALL spm_cleanup('mydb'); // Alihkan kepemilikan maksimal sejumlah objek sesuai max_locks_per_transaction ke current_user sekaligus.
    CALL spm_cleanup('mydb', 128);// Alihkan kepemilikan 128 objek ke current_user sekaligus.
    • Skenario 1: Hapus DB, lalu purge kelompok pengguna.

      drop database mydb;
      CALL spm_cleanup('mydb');  // Tidak perlu mencoba ulang. Operasi berhasil dalam satu kali jalan.
    • Skenario 2: Jika DB masih ada, Anda harus terhubung ke DB tersebut untuk melakukan purge.

       CALL spm_cleanup('otherdb');
      ERROR:  Permission Denied. execute in database otherdb, or drop database before call spm_cleanup.

Izin pemanggilan fungsi

Tabel berikut menjelaskan izin pemanggilan fungsi untuk kelompok pengguna yang berbeda.

Fungsi

Fungsi

Superuser

db_admin

db_developer | db_writer | db_viewer

spm_enable

Mengaktifkan model izin sederhana.

Ya.

Tidak

Tidak

spm_disable

Menonaktifkan model izin sederhana.

Ya.

Tidak diberikan

Tidak

spm_grant

Menambahkan pengguna ke kelompok.

Ya.

Ya.

Tidak

spm_revoke

Menghapus pengguna dari kelompok.

Ya.

Diberikan

Tidak

spm_migrate

Memindahkan tabel atau objek mirip tabel yang sudah ada ke pengelolaan SPM.

Ya.

Diberikan

Tidak

spm_cleanup

Menghapus semua kelompok pengguna yang dicadangkan dari suatu DB.

Ya.

Tidak

Tidak.

spm_create_user

Membuat pengguna sederhana yang hanya memiliki izin logon.

Ya.

Ya.

Tidak

Perintah izin yang dibatasi

Setelah mengaktifkan model izin sederhana, beberapa perintah terkait izin dibatasi. Tabel berikut menjelaskan perintah-perintah yang dibatasi dalam model izin sederhana.

Pernyataan

Deskripsi

alter table owner to xx

Pemilik semua tabel secara otomatis adalah kelompok pengguna developer dari skema yang bersangkutan. Pemilik tidak dapat diubah dan tidak perlu diubah secara manual.

grant

Setelah Anda menambahkan pengguna ke kelompok pengguna menggunakan spm_grant, Anda tidak perlu menjalankan pernyataan grant.

revoke

Saat menambahkan pengguna ke kelompok pengguna dengan spm_revoke, Anda tidak perlu mengeksekusi pernyataan revoke.

alter default privileges

Pada model izin sebelumnya, otorisasi hanya berlaku untuk tabel saat ini dan masa lalu. Anda harus memberikan izin lagi untuk tabel masa depan. Dalam model sederhana, Anda tidak perlu mempertimbangkan waktu pembuatan tabel. Anda hanya perlu menambahkan pengguna ke kelompok pengguna untuk memberikan izin yang sesuai. Oleh karena itu, Anda tidak perlu memberikan izin untuk tabel masa depan.

create role / drop role / alter role / alter role set kelompok pengguna default

Kelompok pengguna db_admin, db_developer, db_writer, dan db_viewer adalah kelompok pengguna sistem default. Kelompok ini dibuat secara otomatis setelah model izin sederhana diaktifkan. Pengguna, termasuk superuser, tidak diizinkan membuat atau mengubah kelompok pengguna default ini.

rename to/from kelompok pengguna default

Anda tidak dapat mengganti nama kelompok pengguna yang dicadangkan (*_admin, *_developer, *_writer, *_viewer).