Dapatkah seseorang memberitahu saya tentang cara untuk membuat user di Oracle 11g dan hanya memberikan pengguna kemampuan hanya untuk melaksanakan suatu prosedur yang tersimpan dan tabel dalam prosedur itu.
Saya tidak benar-benar yakin bagaimana untuk melakukan hal ini!
Menghubungkan SISTEM.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
Anda juga mungkin perlu untuk:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
ke mana tabel prosedur menggunakan.
Ikuti langkah-langkah berikut untuk membuat user di Oracle.
--Menghubungkan anda sebagai pengguna Sistem
CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
Oracle dokumentasi yang lebih komprehensif, online dan gratis. Anda harus belajar untuk menggunakannya. Anda dapat menemukan sintaks untuk MEMBUAT PENGGUNA di sini dan GRANT di sini,
Dalam rangka untuk menyambung ke database kita perlu untuk memberikan pengguna BUAT SESI hak istimewa.
Untuk memungkinkan hak pengguna baru pada stored procedure yang kita butuhkan untuk memberikan MENGEKSEKUSI hak istimewa. Pemberi harus menjadi salah satu dari ini:
Perhatikan bahwa kita biasanya tidak akan perlu untuk memberikan hak-hak pada benda-benda yang digunakan oleh prosedur yang disimpan dalam rangka untuk menggunakan prosedur. Izin default adalah bahwa kita menjalankan prosedur dengan hak-hak yang sama sebagai pemilik prosedur dan, karena itu, mewarisi hak-hak mereka ketika menjalankan prosedur. Hal ini ditutupi oleh AUTHID klausa. Default adalah definer (yaitu pemilik prosedur). Hanya jika AUTHID diatur untuk CURRENT_USER (the invoker, bahwa kita pengguna baru), kami tidak perlu untuk memberikan hak-hak pada benda-benda yang digunakan oleh prosedur. Cari tahu lebih lanjut.
Don't menggunakan pendekatan kritis lingkungan seperti TES dan PROD. Berikut langkah-langkah yang hanya disarankan untuk lingkungan setempat. Bagi saya localhost saya membuat pengguna melalui langkah-langkah berikut:
CATATAN PENTING : Membuat user dengan SISTEM kredensial pengguna.Jika tidak, anda mungkin menghadapi masalah ketika anda menjalankan beberapa aplikasi pada database yang sama.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
Kemudian Jalankan script di bawah ini
CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant
EDIT: Jika anda menghadapi masalah tentang oracle ora-28001 password kadaluarsa juga ini dapat berguna run
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
Seperti yang disebutkan sebelumnya beberapa kali di komentar, penggunaan CONNECT
, SUMBER daya
dan DBA
peran ini disarankan oleh Oracle.
Anda harus menghubungkan SYS untuk membuat peran anda dan pengguna(s) yang diberikan peran ini. Anda dapat menggunakan SQL Developer SQL*Plus seperti yang anda inginkan. Jangan lupa untuk menyebutkan SYSDBA peran dalam logon string. The connect_identifier
menggunakan sintaks yang berbeda.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
Let's mengatakan anda memiliki 12cR1 seperti yang disediakan sebagai VM dengan "Oracle Technology Network Developer Day". Menyambung senar mungkin (untuk menghubungkan ke disediakan PDB) :
sqlplus sys/[email protected]/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
Perhatikan bahwa di bawah Unix, kutipan harus melarikan diri jika tidak mereka akan dikonsumsi oleh shell. Dengan demikian "
menjadi \"
.
Kemudian anda membuat peran `MYROLE ' dan memberikan peran lain atau hak istimewa. Saya menambahkan hampir telanjang minimal untuk melakukan sesuatu yang menarik :
create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;
Berikutnya anda membuat pengguna MYUSER
. String berikut diidentifikasi oleh
yang merupakan password adalah case-sensitive. Sisanya tidak. Anda juga bisa menggunakan SQL dibatasi pengenal (dikelilingi oleh tanda kutip "
) bukannya biasa pengidentifikasi yang dikonversi tu huruf besar dan tunduk pada beberapa keterbatasan. Kuota bisa menjadi tak terbatas
bukan 20m
.
create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;
Akhirnya, anda menghubungkan anda sebagai pengguna baru.
Harap dicatat bahwa anda juga bisa mengubah profil default atau memberikan satu sama lain untuk menyesuaikan beberapa pengaturan seperti masa kadaluarsa password, jumlah yang diizinkan percobaan login yang gagal, dll.
Langkah pertama:
Koneksi ke database menggunakan Sistem/Password;
Langkah kedua:
membuat pengguna nama pengguna diidentifikasi dengan password; (sintaks)
Ex: membuat pengguna manidb idntified oleh mypass;
Langkah ketiga:
grant connect,resource untuk username; (Sintaks)
Ex: grant connect,resource untuk manidb;
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;
https://docs.oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant-permissions-in-oracle/