Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Buat Pengguna Oracle Baru dan Berikan Hak Istimewa:Sintaks dan Contoh

Pada artikel ini, kita akan berbicara tentang cara membuat pengguna di Oracle. Anda akan mempelajari cara menambahkan pengguna database baru, mencari tahu aspek tambahan mana yang melibatkan pekerjaan ini:dari pembuatan pengguna awal hingga menjatuhkannya. Selain itu, Anda akan menemukan beberapa tip berguna untuk bekerja dengan IDENTIFY dan TABLESPACE klausa, serta pelajari cara GRANT peran dan izin di Oracle.

Isi

  • Cara Membuat Pengguna Baru di Oracle
  • Contoh Sintaks Oracle CREATE USER
  • Cara Membuat Pengguna Default dengan Pengaturan Default
  • Buat User Identified by Clauses
    • Buat Identifikasi Pengguna dengan Klausul Kata Sandi
    • Klausul Eksternal dan Global
  • BUAT PENGGUNA dengan Klausa Tablespace
    • Ruang Tabel Default
    • Ruang Tabel Sementara
    • Kuota
  • Buat Atribut Pengguna
    • Profil
    • Kata Sandi Kedaluwarsa
    • Penguncian Akun/Pembukaan Akun
  • Berikan Peran kepada Pengguna
  • Memberikan Izin di Oracle
  • Sintaks Perintah HIBAH
  • Hak Istimewa Pengguna Oracle
  • Cara Membuat dan Memberikan Semua Hak Istimewa kepada Pengguna Oracle
  • Cara Memberikan Hak Istimewa Tabel kepada Pengguna di Oracle
  • Buat Pengguna Oracle dan Berikan Izin dengan Mudah dengan dbForge Studio untuk Oracle
  • Cara Menghapus (Drop) Pengguna di Oracle
  • Kesimpulan

Cara Membuat Pengguna Baru di Oracle

Sebelum kita mulai, Anda perlu memeriksa apakah Anda memiliki hak istimewa sistem yang diperlukan untuk membuat pengguna. Jika tidak, pastikan untuk memasukkannya ke akun Anda. Setelah itu, Anda dapat melanjutkan ke tugas-tugas praktis. Contoh dalam artikel ini terkait dengan versi Oracle 19c buat pengguna, tetapi metodenya sama untuk semua versi Oracle yang digunakan (termasuk Oracle 10g, 11g, 12c, dll.).

Contoh Sintaks Oracle CREATE USER

Sebagai permulaan, kita akan melihat ke Oracle CREATE USER sintaksis. Pertama, kita akan membahas cara membuatnya dengan pengaturan default. Setelah itu, kita akan beralih ke variasi yang berbeda dari IDENTIFIED klausa, klausa tablespace, dan kekhasan lain dari CREATE USER sintaks di Oracle.

Cara Membuat Pengguna Default dengan Pengaturan Default

Itu selalu yang terbaik untuk memulai dengan dasar-dasar. Jadi, mari kita fokus pada CREATE USER perintah dengan sendirinya. Seperti, itu akan membuat pengguna dengan atribut default. Lebih lanjut dalam artikel ini, kita akan melihat cara mengonfigurasi pengguna dengan lebih baik dan bagaimana hal itu meningkatkan keamanan database secara umum.

Buat User Identified by Clauses

IDENTIFIED klausa memungkinkan Anda menunjukkan bagaimana database Oracle mengotentikasi pengguna. Mari kita lihat lebih dekat berbagai contoh IDENTIFIED sintaks di Oracle.

Buat User Identified by Password Clause

Dalam kasus yang paling mudah, kami membuat pengguna lokal baru di bawah nama pengguna. Pengguna akan diminta untuk memasukkan kata sandi untuk masuk ke sistem:

CREATE USER <username> IDENTIFIED BY <password>;

Nama pengguna bisa apa saja. Namun, kata sandi harus terdiri dari karakter byte tunggal dari kumpulan karakter basis data. Jika kumpulan karakter juga memiliki karakter multibyte, itu tidak mengubah persyaratan kata sandi – gunakan hanya karakter bita tunggal.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Klausul Eksternal dan Global

Selain mengidentifikasi dengan kata sandi, Anda dapat menggunakan salah satu dari dua cara otentikasi pengguna lainnya. Ini akan mengonfigurasi pengguna eksternal atau pengguna global. Untuk melakukannya, Anda harus menyertakan EXTERNALLY atau GLOBALLY klausa dalam CREATE USER perintah Oracle.

EXTERNALLY memungkinkan untuk membuat pengguna eksternal. Dalam hal ini, pengguna diautentikasi oleh sistem eksternal, seperti sistem operasi. Misalnya, pengguna database Oracle adalah pengguna Windows. Dengan demikian, mereka dapat mengakses database setelah diautentikasi oleh Windows tanpa memasukkan kata sandi lain. Bekerja di bawah pengguna eksternal adalah opsi standar untuk pengguna basis data biasa. Tetapi pengguna tersebut hanya memiliki peran standar (CONNECT dan RESOURCE), tanpa hak administrator atau operator database.

Untuk membuat pengguna eksternal, kami menjalankan pernyataan di bawah ini:

CREATE USER external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

Dengan cara ini, kami telah membuat pengguna eksternal baru untuk database kami. Namanya external_user1. Tidak diperlukan kata sandi tambahan. Kami menetapkan pengguna ini tablespace default tbs_new_10 dengan kuota 10 Mb. Batasan lain ditentukan oleh external_user_profile1 yang diterapkan pada pengguna ini.

Seperti yang kami sebutkan sebelumnya, sistem eksternal yang berbeda dapat memelihara dan mengelola pengguna eksternal dalam database Oracle. Menggunakan kemampuan sistem operasi adalah opsi yang paling umum. Jadi, jika kita ingin membuat pengguna database eksternal yang dapat diakses oleh akun sistem di sistem operasi, kita hanya perlu sedikit mengubah pernyataan kita. Kami akan menambahkan awalan ops$ ke nama pengguna:

CREATE USER ops$external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

GLOBALLY memungkinkan untuk membuat pengguna global. Ini berarti bahwa login dan kata sandi mereka disimpan di Server Keamanan Oracle Pusat, bukan di database tertentu. Selain itu, peran yang ditetapkan untuk pengguna global di Server pusat itu berlaku untuk pengguna ini di basis data apa pun. Tidak perlu mengonfigurasi peran pengguna dalam database terpisah. Perhatikan bahwa Anda perlu mengaktifkan opsi sistem masuk tunggal untuk pengguna global.

Untuk membuat pengguna database global, kami menggunakan pernyataan berikut:

CREATE USER global_user1
  IDENTIFIED GLOBALLY AS 'CN=manager, OU=division, O=oracle, C=US'
  DEFAULT TABLESPACE USERS
  QUOTA 10M on USERS;

Sekarang kita memiliki pengguna database global baru dengan nama global_user1 . Kami menugaskan USERS tablespace default untuk pengguna itu dengan penawaran 10 juta.

BUAT PENGGUNA dengan Tablespace Clause

Sekarang, mari kita tinjau dasar Oracle membuat skrip pengguna baru. Di bawah ini:

CREATE USER username
    IDENTIFIED BY password
    DEFAULT TABLESPACE tablespace
    TEMPORARY TABLESPACE tbs_temp_01
    QUOTA {size | UNLIMITED} ON tablespace;

Seperti yang Anda lihat, skrip menyertakan beberapa klausa yang harus kita pertimbangkan:

Ruang Tabel Default

Klausa ini menentukan tablespace default untuk objek yang dibuat oleh pengguna. Jika tidak, objek tersebut disimpan di tablespace default database. Jika tidak ada tablespace default yang ditentukan untuk database khusus ini, objek akan masuk ke tablespace sistem.

Batasan:jangan tentukan tablespace sementara yang dikelola secara lokal (seperti batalkan tablespace atau tablespace sementara yang dikelola kamus) untuk menjadi tablespace default pengguna yang dibuat Oracle.

Ruang Tabel Sementara

Klausa ini menentukan grup tablespace/tablespace yang dimaksudkan untuk menampung segmen sementara pengguna. Tanpa itu, segmen sementara pengguna tersebut disimpan di tablespace sementara default dari database tablespace sistem. Saat Anda menentukan grup tablespace termasuk nilai tablespace_group_name dalam skrip, segmen sementara pengguna dapat disimpan di tablespace mana pun dari grup itu.

Catatan :
Pastikan untuk menentukan tablespace sementara dengan ukuran blok standar. Itu tidak bisa membatalkan tablespace atau tablespace dengan manajemen ruang segmen otomatis.

Kuota

Klausa ini menentukan berapa banyak ruang yang dapat dialokasikan pengguna ini di tablespace. Beberapa QUOTA klausa dalam satu Oracle CREATE USER perintah dapat hadir jika Anda perlu menentukan beberapa tablespace.
Klausa dapat menyertakan UNLIMITED definisi untuk memungkinkan pengguna tertentu ini mengalokasikan tablespace sebanyak yang dibutuhkan, tanpa batas.

Pembatasan :QUOTA klausa tidak berlaku untuk tablespace sementara.

Buat Atribut Pengguna

Ada tambahan, opsional Oracle CREATE USER atribut yang dapat Anda sertakan dalam sintaks. Perhatikan contoh berikut:

CREATE USER username
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace]
    [QUOTA {size | UNLIMITED} ON tablespace]
    [PROFILE profile]
    [PASSWORD EXPIRE]
    [ACCOUNT {LOCK | UNLOCK}];

Mari kita tinjau klausa opsional ini.

Profil

Klausa opsional ini memungkinkan Anda membatasi sumber daya database untuk pengguna tertentu ini sekaligus ketika batasan ditentukan dalam profil tertentu. Tanpa klausa ini, pengguna baru secara otomatis berada di bawah profil default.

Kata Sandi Kedaluwarsa

Klausa ini opsional, tetapi banyak administrator database mengaturnya untuk keamanan yang lebih efektif. Jika disertakan, klausa ini akan menentukan perubahan paksa kata sandi di sisi pengguna. Biasanya, ini terjadi ketika pengguna mencoba masuk ke database untuk pertama kalinya.

Penguncian Akun/Pembukaan Akun

Anda dapat menggunakan salah satu dari klausa ini. Dengan LOCK diterapkan, Oracle membuat akun pengguna, tetapi akun itu tidak akan memiliki akses ke database. Jika Anda menerapkan UNLOCK klausa atau tidak menentukan salah satu dari dua klausa ini, akun akan dapat digunakan sekaligus. Status tidak terkunci adalah default.

CREATE USER pernyataan dengan parameter tambahan ini adalah sebagai berikut:

CREATE USER visitor
    IDENTIFIED BY migzw23ter
    DEFAULT TABLESPACE tbs_new_10
    QUOTA 50M ON tbs_new_10
    TEMPORARY TABLESPACE tbs_temp_10
    QUOTA 5M ON system 
    PROFILE qualified_user
    PASSWORD EXPIRE;
ACCOUNT UNLOCK	

Di sini, pernyataan tersebut membuat pengguna database Oracle baru bernama pengunjung , dengan sandi migzw23ter . Pengguna ini diberi tablespace default tbs_new_10 dengan kuota 50Mb. Pengguna ini juga diizinkan untuk menggunakan tablespace sementara tbs_temp_10 .

Berikan Peran kepada Pengguna

Langkah pertama adalah pembuatan pengguna. Yang berikutnya adalah mengatur hak pengguna. Pengguna yang baru dibuat tidak diperbolehkan melakukan apa pun, bahkan untuk terhubung ke database.

Bekerja dengan database Oracle pasti mencakup tugas menciptakan pengguna database. Ada akun pengguna sistem yang dibuat sendiri oleh Oracle – jam , OE , sistem , dll. Akun ini memiliki konfigurasi standar dengan hak dan batasan. Namun, pekerjaan sehari-hari akan selalu membutuhkan pengguna lain.

Salah satu tugas DBA adalah membuat pengguna database tambahan. Pekerjaan tersebut termasuk mengonfigurasi akun pengguna, mengatur hak istimewa, dan mengelola pengguna sesuai dengan tujuan bisnis.

Memberikan Izin di Oracle

Dengan menggunakan GRANT perintah, Anda dapat memberi pengguna hak istimewa tertentu dan mengonfigurasi peran mereka sesuai dengan kebutuhan Anda. Di Oracle, Anda dapat memberikan izin Anda kepada orang lain sehingga mereka dapat memanipulasi dan mengelola data dalam database Anda. GRANT adalah pernyataan yang sangat kuat dengan banyak opsi yang memungkinkan, tetapi fungsionalitas intinya adalah untuk mengelola hak istimewa pengguna dan peran di seluruh database.

Sintaks Perintah GRANT

Sintaks dasar kueri untuk memberikan hak istimewa tertentu kepada pengguna adalah sebagai berikut:

GRANT <permission> to <user>;

Hak Istimewa Pengguna Oracle

GRANT perintah dapat memberikan hak istimewa kepada pengguna untuk membuat, mengubah, menjatuhkan, dan mengelola objek basis data. Misalnya, hak istimewa untuk membuat ruang tabel dan menghapus baris tabel mana pun dalam database adalah hak istimewa sistem.

Oracle memiliki lebih dari 100 hak istimewa sistem yang dapat ditemukan di tabel SYSTEM_PRIVILEGE_MAP.

CLUSTER BUAT/BUAT APA PUN/UBAH APAPUN/JAUHKAN Kluster APAPUN
BASIS DATA UBAH DATABASE, ALTER SISTEM, SISTEM AUDIT
INDEX BUAT APA PUN/UBAH APAPUN/JAUHKAN INDEKS APAPUN
PROFIL BUAT/UBAH/LEPAS PROFIL
PERAN BUAT/UBAH APAPUN/JAUHKAN APAPUN /HIBAH APAPUN (memungkinkan REVOKE)
Segmen Kembalikan BUAT/UBAH/LEPASKAN SEGMEN ROLLBACK
USER BUAT/UBAH/JADILAH/HAPUS PENGGUNA
LIHAT BUAT/BUAT APAPUN/JAUHKAN TAMPILAN APAPUN
SINONIM BUAT/BUAT SETIAP/BUAT PUBLIK/LEPASKAN APA PUN/JAUHKAN SINONIM PUBLIK
SESI BUAT/UBAH/SESI TERBATAS, UBAH BIAYA SUMBERDAYA
TABEL BUAT/BUAT APA PUN/UBAH APAPUN/LEPASKAN APAPUN/PILIH APAPUN/MASUKKAN APAPUN/PERBARUI APAPUN/HAPUS/KUNCI TABEL APAPUN
TABLESPACE BUAT/ALTER/DROP/KELOLA TABLESPACE

Biasanya, administrator database memberikan hak istimewa kepada pengguna. Namun, ada kasus ketika administrator perlu mentransfer hak pengguna Oracle mereka. Ini adalah saat hak istimewa DBA masuk. Jika DBA perlu memberikan hak istimewa sistem kepada orang lain, itu harus dilakukan dengan opsi admin:

GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;

Selain hak istimewa sistem Oracle, hak istimewa objek diberikan pada objek database:tabel, tampilan, prosedur, dan sebagainya.

Cara Membuat dan Memberikan Semua Hak Istimewa kepada Pengguna Oracle

Pertama, kita perlu memberi pengguna kita hak istimewa sistem untuk masuk ke database. Kami menggunakan pernyataan berikut untuk itu:

GRANT CREATE SESSION to visitor;

Ada banyak izin yang dapat diberikan administrator basis data kepada pengguna. Tetapi penting untuk tetap berpegang pada konsep utama keamanan, yaitu memberi pengguna hak istimewa minimum yang diperlukan untuk melakukan pekerjaan secara efisien. Itu sebabnya tidak disarankan untuk memberikan semua hak istimewa kepada pengguna.

Anda dapat menerapkan hak istimewa lainnya satu per satu, masing-masing dengan pernyataan terpisah. Atau, dimungkinkan untuk menggabungkan izin ini menjadi satu, seperti yang ditunjukkan di bawah ini:

GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER to visitor;

Jika pengguna tertentu ini diizinkan untuk mengubah tabel, prosedur, pemicu, dll., sintaks untuk mengatur hak istimewa yang diperlukan untuk setiap kasus di bawah ini. Sekali lagi, berhati-hatilah saat mengizinkan pengguna mengubah elemen apa pun, karena izin ini bersifat global.

GRANT ALTER ANY TABLE to visitor;
GRANT ALTER ANY PROCEDURE to visitor;
GRANT ALTER ANY TRIGGER to visitor;

Untuk mengizinkan pengguna menghapus elemen, kami menggunakan pernyataan di bawah ini:

GRANT DELETE ANY TABLE to visitor;
GRANT DROP ANY PROCEDURE to visitor;
GRANT DROP ANY TRIGGER to visitor;
GRANT DROP ANY VIEW to visitor;

Cara Memberikan Hak Istimewa Tabel kepada Pengguna di Oracle

Sebelum Anda menetapkan hak istimewa untuk pengguna tertentu, Anda harus mempertimbangkan tugas mana yang harus dilakukan orang tersebut dalam database. Skenario yang paling umum termasuk membuat tabel, tampilan, prosedur, pemicu. Beberapa kasus memerlukan kemungkinan untuk mengubah atau menghapus elemen tersebut. Bergantung pada situasinya, administrator menentukan hak istimewa sistem mana yang akan diberikan.

Mari kita lihat lebih dekat cara memberikan CREATE TABLE hak istimewa untuk pengguna di Oracle. Jika kami mengizinkan pengguna kami – pengunjung – untuk membuat tabel di database, kita akan menggunakan query berikut:

GRANT CREATE TABLE to visitor;

Buat Pengguna Oracle dan Berikan Izin dengan Mudah dengan dbForge Studio untuk Oracle

Jika Anda bekerja dengan database Oracle setiap hari dan mencari IDE all-in-one yang nyaman, pencarian Anda berakhir di sini. dbForge Studio for Oracle membantu pengembang untuk mempercepat pengkodean PL/SQL, menyediakan alat pengeditan data serbaguna untuk mengelola data dalam database dan eksternal.

Pada artikel ini, kami akan membuat pengguna Oracle dan memberikan hak istimewa DBA menggunakan skrip multiguna ini:

DECLARE
 schema_name VARCHAR2(255):='username1'; -- Insert your username instead of 'username1'
 row_count NUMBER;
BEGIN
 FOR r IN (SELECT sid,serial# FROM v$session WHERE username = schema_name)
 LOOP
   EXECUTE IMMEDIATE 'ALTER SYSTEM DISCONNECT SESSION ''' || r.sid || ',' || r.serial# || ''''||' IMMEDIATE';
   EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || r.sid || ',' || r.serial# || '''';
 END LOOP;

 SELECT count(*) INTO row_count FROM dba_users WHERE username = schema_name;
 IF row_count > 0 THEN
   EXECUTE IMMEDIATE 'DROP USER '||schema_name||' CASCADE';
 END IF;
 EXECUTE IMMEDIATE 'CREATE USER '||schema_name||' IDENTIFIED BY ' || schema_name;
 EXECUTE IMMEDIATE 'GRANT dba TO '|| schema_name;
 EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = '||schema_name;
END;
/ 

Apa yang kami lakukan dalam skrip yang disediakan, adalah:

  • membuat pengguna baru
  • memberikan hak istimewa DBA kepada pengguna yang baru dibuat
  • menyetel pengguna yang baru dibuat sebagai pengguna default untuk sesi saat ini

Di Oracle, pengguna dan skema pada dasarnya adalah hal yang sama. Anda dapat menganggap bahwa pengguna adalah akun untuk terhubung ke database, dan skema adalah kumpulan objek yang dimiliki akun tersebut. Skema yang baru dibuat kosong dan, oleh karena itu, tidak akan ditampilkan di Database Explorer .

Mari kita buat departemen tabel untuk membuat pengguna baru muncul dalam daftar. Untuk melakukannya, silakan gunakan skrip berikut:

CREATE TABLE departments (
  department_id NUMBER CONSTRAINT PK_DepID PRIMARY KEY,
  department_name varchar2(255) NOT NULL,
  location_id NUMBER  NOT NULL);

Ingatlah bahwa Anda tidak perlu membuka dokumen SQL yang berbeda untuk operasi ini. dbForge Studio untuk Oracle memungkinkan Anda untuk mengeksekusi kode hanya sebagian. Cukup pilih CREATE TABLE klausa, buat klik kanan, dan pilih Jalankan Pilihan .

Jika Anda memiliki AutoComit fitur ON, langkah sebelumnya akan menjadi yang terakhir. Namun, jika tidak aktif, Anda harus melakukan perubahan. Kemudian, saat menyegarkan Database Explorer, Anda akan melihat nama pengguna1 dalam daftar.

Ada beberapa contoh ketika sesi lama tetap berjalan di server. Mereka mungkin mengganggu eksekusi perintah baru. Dalam kode di atas, semua sesi lama secara otomatis ditempatkan dan dihapus dari server. Jika Anda perlu memulai kembali sesi Anda saat ini, Anda dapat memutuskan atau mematikannya menggunakan salah satu kueri berikut:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Cara Menghapus (Drop) Pengguna di Oracle

Jika Anda perlu menghapus pengguna karena alasan apa pun, Anda harus menggunakan DROP USER perintah dengan sintaks berikut:

DROP USER <username>;

Dalam kasus pengujian kami, kami menghapus pengguna pengunjung dibuat sebelumnya:

DROP USER visitor;

Namun, ada beberapa batasan yang perlu Anda perhatikan sebelum menjatuhkan pengguna:

  • Anda tidak dapat menghapus pengguna tanpa menghapus semua objek terkait. Jadi, Anda harus menghapus semua tabel, tampilan, prosedur, dll. yang dibuat pengguna ini sebelum melanjutkan ke perintah DROP.
  • Anda tidak dapat menghapus pengguna yang terhubung ke database. Pertama, Anda harus menghapus semua sesi yang dimiliki pengguna. Setelah itu, Anda dapat menjatuhkan pengguna itu sendiri.

Ada perintah khusus yang memungkinkan untuk menjatuhkan pengguna dengan semua objek databasenya dalam satu kesempatan:

DROP USER <username> CASCADE;

Kesimpulan

Kesimpulannya, sekarang Anda dapat menggunakan Oracle SQL CREATE USER perintah untuk menambahkan pengguna baru, mengkonfigurasi, dan mengelolanya. Kami menggunakan contoh untuk kinerja manual. Namun, kemampuan solusi perangkat lunak modern untuk database Oracle dapat menyederhanakan pekerjaan ini, membuatnya lebih cepat dan lebih akurat. Jangan ragu untuk mencoba dbForge Studio dengan .

Tautan Berguna

  • Menyiapkan Akun Pengguna Baru di Oracle
  • Alat Administrasi Database Oracle
  • Membuat Database di Oracle
  • Tabel Ganti Nama Oracle
  • Tabel Perubahan Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - perbarui bergabung - tabel tanpa kunci yang diawetkan

  2. Fitur file kontrol snapshot dengan RMAN dan ORA-00245

  3. Kueri nama kolom dari tabel dari pengguna lain

  4. Bagaimana cara men-debug ORA-01775:rantai sinonim yang berulang?

  5. pilih rownum dari gaji di mana rownum=3;