2012-02-25 37 views
73

Ai đó có thể tư vấn cho tôi về cách tạo người dùng trong Oracle 11g và chỉ cấp cho người dùng khả năng thực thi một thủ tục được lưu trữ cụ thể và các bảng trong thủ tục đó.Cách tạo người dùng trong Oracle 11g và cấp quyền

Tôi không thực sự chắc chắn cách thực hiện việc này!

Trả lời

80

Kết nối với hệ thống.

CREATE USER username IDENTIFIED BY apassword; 

GRANT CONNECT TO username; 

GRANT EXECUTE on schema.procedure TO username; 

Bạn cũng có thể cần phải:

GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username; 

để bất cứ bảng quy trình sử dụng.

+6

+1 Tùy thuộc vào phiên bản Oracle, tuy nhiên, vai trò 'CONNECT' có nhiều đặc quyền hơn so với tên cho thấy. Thay vào đó, tôi muốn cấp 'CREATE SESSION'. –

+0

Phiên bản tôi đang sử dụng là 11g – Andy5

+2

["CONNECT, RESOURCE và DBA Các vai trò này được cung cấp để tương thích với các phiên bản trước ... Oracle khuyến cáo rằng bạn nên thiết kế vai trò riêng của mình cho bảo mật cơ sở dữ liệu thay vì dựa vào các vai trò này. không được tạo tự động bởi các phiên bản tương lai của Cơ sở dữ liệu Oracle. "] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm) – danihp

21

Tài liệu Oracle toàn diện, trực tuyến và miễn phí. Bạn nên học cách sử dụng nó. Bạn có thể tìm cú pháp cho CREATE USER here và cho GRANT here,

Để kết nối với cơ sở dữ liệu, chúng tôi cần cấp cho người dùng the CREATE SESSION privilege.

Để cho phép người dùng mới có quyền đối với quy trình được lưu trữ, chúng tôi cần cấp đặc quyền EXECUTE. Người chuyển nhượng phải là một trong những:

  • chủ sở hữu thủ tục
  • user được cấp thực hiện về thủ tục rằng với sự VỚI tùy chọn ADMIN
  • một người dùng với GRANT ANY đặc quyền OBJECT
  • một DBA hoặc khác tài khoản người dùng siêu.

Lưu ý rằng thông thường chúng tôi sẽ không cần cấp quyền đối với các đối tượng được sử dụng bởi quy trình được lưu trữ để sử dụng quy trình. Sự cho phép mặc định là chúng ta thực hiện thủ tục với các quyền giống như chủ sở hữu thủ tục và, như nó đã, kế thừa các quyền của họ khi thực hiện thủ tục. Điều này được đề cập trong điều khoản AUTHID. Giá trị mặc định là definer (tức là chủ sở hữu thủ tục). Chỉ khi AUTHID được đặt thành CURRENT_USER (người gọi, đó là người dùng mới của chúng tôi), chúng ta có cần cấp quyền đối với các đối tượng được sử dụng bởi thủ tục hay không. Find out more.

2
CREATE USER USER_NAME IDENTIFIED BY PASSWORD; 
GRANT CONNECT, RESOURCE TO USER_NAME; 
+1

'CONNECT, RESOURCE, DBA' [*" Các vai trò này được cung cấp để tương thích với các phiên bản trước Cơ sở dữ liệu Oracle ... Oracle khuyến cáo rằng bạn nên thiết kế vai trò riêng của mình cho bảo mật cơ sở dữ liệu thay vì dựa vào các vai trò này. Các vai trò này có thể không được tạo tự động bởi các phiên bản tương lai của Cơ sở dữ liệu Oracle. "*] (http://docs.oracle. com/cd/B28359_01/server.111/b28286/statements_9013.htm # r209c1-t47) –

22

Làm theo các bước dưới đây để tạo người dùng trong Oracle.
--Connect như hệ thống sử dụng

CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>; 

dùng --Tạo truy vấn

CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>; 

vai trò --Provide

GRANT CONNECT,RESOURCE,DBA TO <USER NAME>; 

đặc quyền --Provide

GRANT CREATE SESSION GRANT ANY PRIVILEGE TO <USER NAME>; 
GRANT UNLIMITED TABLESPACE TO <USER NAME>; 

- Cung cấp quyền truy cập vào các bảng.

GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>; 
+0

trong Oracle 11g, là "cấp dba" hay "sysdba lớn"? – jondinham

+2

ORA-00990: đặc quyền bị thiếu hoặc không hợp lệ đối với 'GRANT CREATE SESSION GRANT ANY PRIVILEGE TO ;' –

+3

dấu phẩy phải ở đó sau phiên –

-4
  • bước 1.

    create user raju identified by deshmukh;

  • bước 2.

    grant connect , resource to raju;

  • bước 3.

    grant unlimitted tablespace to raju;

  • step4.

    grant select , update , insert , alter to raju;

+1

' CONNECT, RESOURCE, DBA' [* "Các vai trò này được cung cấp để tương thích với các phiên bản trước của Cơ sở dữ liệu Oracle ... Oracle khuyến cáo bạn thiết kế vai trò của riêng bạn cho cơ sở dữ liệu bảo mật hơn là dựa vào các vai trò này. Các vai trò này có thể không được tạo tự động bởi các phiên bản tương lai của Cơ sở dữ liệu Oracle. "*] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm# r209c1-t47) –

9

Không sử dụng những cách tiếp cận trong môi trường quan trọng như TEST và PROD. Các bước dưới đây chỉ được đề xuất cho môi trường cục bộ. Đối với localhost của tôi, tôi tạo người dùng qua các bước sau:

LƯU Ý QUAN TRỌNG: Tạo người dùng với chứng chỉ người dùng SYSTEM. Nếu không bạn có thể gặp sự cố khi chạy nhiều ứng dụng trên cùng một cơ sở dữ liệu.

CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database. 

Rồi Chạy dưới kịch bản

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: Nếu bạn phải đối mặt với một vấn đề về Oracle ORA-28001 mật khẩu đã hết hạn cũng điều này có thể chạy hữu ích

select * from dba_profiles;-- check PASSWORD_LIFE_TIME 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED 
+2

'CONNECT, RESOURCE, DBA' [*" Các vai trò này được cung cấp cho khả năng tương thích với các phiên bản trước của Cơ sở dữ liệu Oracle ... Oracle khuyến cáo rằng bạn nên thiết kế vai trò riêng của mình cho bảo mật cơ sở dữ liệu thay vì dựa vào các vai trò này. Các vai trò này có thể không được tạo tự động bởi các phiên bản tương lai của Cơ sở dữ liệu Oracle. "*] (Http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm#r209c1-t47) –

4

Như đã đề cập nhiều lần trong các nhận xét, việc sử dụng các vai trò CONNECT, RESOURCEDBA không được Oracle khuyến khích.

Bạn phải kết nối với SYS để tạo vai trò và (các) người dùng được cung cấp vai trò này. Bạn có thể sử dụng SQL Developer hoặc SQL * Plus như bạn muốn. Đừng quên đề cập đến vai trò SYSDBA trong chuỗi đăng nhập. connect_identifier sử dụng các cú pháp khác nhau.

sqlplus sys/<<password>>@<<connect_identifier>> as sysdba 

Giả sử bạn có 12cR1 giống như máy ảo được cung cấp dưới dạng "Oracle Technology Network Developer Day". Các chuỗi kết nối có thể (để kết nối với PDB cung cấp):

sqlplus sys/[email protected]/orcl as sysdba 
sqlplus [email protected]"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear 

Lưu ý rằng dưới Unix, có dấu ngoặc kép phải được thoát nếu không họ sẽ được tiêu thụ bởi vỏ. Do đó " trở thành \".

Sau đó, bạn tạo vai trò MYROLE và cấp cho nó vai trò hoặc đặc quyền khác. Tôi đã thêm gần mức tối thiểu để làm điều gì đó thú vị:

create role myrole not identified; 
grant create session to myrole; 
grant alter session to myrole; 
grant create table to myrole; 

Tiếp theo tạo người dùng MYUSER. Chuỗi sau identified by là mật khẩu phân biệt chữ hoa chữ thường. Phần còn lại thì không. Bạn cũng có thể sử dụng các định danh phân cách SQL (được bao quanh bởi các dấu ngoặc kép ") thay vì các mã định danh thông thường được chuyển đổi từ chữ hoa và tùy thuộc vào một vài hạn chế.Hạn ngạch có thể là unlimited thay vì 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; 

Cuối cùng, bạn kết nối với tư cách người dùng mới. Vui lòng lưu ý rằng bạn cũng có thể thay đổi cấu hình mặc định hoặc cung cấp một số khác để tùy chỉnh một số cài đặt khi hết hạn mật khẩu, số lần đăng nhập không thành công được phép, v.v.

Các vấn đề liên quan