Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTMasterCode.vn
Stored Procedure là một tập các câu lệnh T -SQL thực
hiện một nhiệm vụ cụ thể, được đặt tên và lưu trữ
trong CSDL dưới dạng đã biên dịch.
Stored procedure cung cấp một phương pháp hữu ích
cho việc thực thi lặp lại cùng một nhiệm vụ
Giúp tái sử dụng code
Khi thực thi lại một nhiệm vụ, sử dụng lời gọi Stored
Procedure thay vì viết và thực thi lại cùng một tập hợp các
câu lệnh.
Cách sử dụng các biến, cấu trúc điều khiển trong
Stored Procedure tương tự như mã kịch bản
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://baocaothuctap.net
Download luận văn thạc sĩ ngành công nghệ thông tin với đề tài: Xây dựng hệ thống quản lý, hỗ trợ yêu cầu phần mềm, cho các bạn làm luận văn tham khảo
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTú Cao
Tài liệu hướng dẫn bạn quản trị, tạo user, quản lý group và phân quyền chmod, chown... trên hệ điều hành Ubuntu (linux).
Hy vọng có thể giúp ích cho bạn nào đó khi tìm hiểu và học về Ubuntu (linux), vì là bài tập nên có chỗ nào sai xót mong người đọc thông cảm vì kiến thức nhóm còn hạn chế.
Bùi Trương Đức Công
Hoàng Gia Linh
Nguyễn Cao Tú
10B4 - Viện ĐH Mở Hà Nội 2013.
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPTMasterCode.vn
Là một đối tượng CSDL chứa các câu lệnh SQL, được biên
dịch sẵn và lưu trữ trong CSDL, thực hiện một hành
động như các tính toán phức tạp và trả về kết quả
là một giá trị.
Giá trị trả về có thể là
Giá trị vô hướng
Một bảng
Tương tự như Stored Procedure.
Là một đối tượng CSDL chứa các câu lệnh SQL, được biên
dịch sẵn và lưu trữ trong CSDL.
Khác với Stored Procedure.
Các hàm luôn phải trả về một giá trị, sử dụng câu lệnh
RETURN
Hàm không có tham số đầu ra
Không được chứa các câu lệnh INSERT, UPDATE, DELETE
một bảng hoặc view đang tồn tại trong CSDL
Có thể tạo bảng, bảng tạm, biến bảng và thực hiện các câu
lệnh INSERT, UPDATE, DELETE trên các bảng, bảng tạm,
biến bảng vừa tạo trong thân hàm
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn đồ án tốt nghiệp với đề tài: Xây dựng phần mềm quản lý thư viện và website tra cứu sách thư viện Trường Cao đẳng Công nghiệp Tuy Hòa, cho các bạn làm luận văn tham khảo
Các bất thường khi cập nhật dữ liệu
Giải thích sự cần thiết phải chuẩn hóa dữ liệu
Tìm hiểu một số khái niệm:
Khóa của quan hệ
Phụ thuộc hàm
Tìm hiểu quy trình chuẩn hóa CSDL
Tìm hiểu 3 dạng chuẩn: 1NF, 2NF, 3NF
Trình tự chuẩn hóa theo 3 dạng chuẩn
Tìm hiểu khái niệm khử chuẩn
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng chương trình quản lý dịch vụ vận chuyển của công ty ASEAX, cho các bạn làm luận văn tham khảo
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng chương trình quản lý nhân sự tiền lương tại doanh nghiệp tư nhân phúc lai, cho các bạn tham khảo
ĐỒ ÁN - Tìm hiểu về điện toán đám mây và triển khai dịch vụ trên điện toán đám mây.doc
Dịch vụ hỗ trợ viết đề tài điểm cao baocaothuctap.net
Zalo / Tel: 0909.232.620
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn đồ án tốt nghiệp với đề tài: Xây dựng phần mềm quản lý thư viện và website tra cứu sách thư viện Trường Cao đẳng Công nghiệp Tuy Hòa, cho các bạn làm luận văn tham khảo
Các bất thường khi cập nhật dữ liệu
Giải thích sự cần thiết phải chuẩn hóa dữ liệu
Tìm hiểu một số khái niệm:
Khóa của quan hệ
Phụ thuộc hàm
Tìm hiểu quy trình chuẩn hóa CSDL
Tìm hiểu 3 dạng chuẩn: 1NF, 2NF, 3NF
Trình tự chuẩn hóa theo 3 dạng chuẩn
Tìm hiểu khái niệm khử chuẩn
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng chương trình quản lý dịch vụ vận chuyển của công ty ASEAX, cho các bạn làm luận văn tham khảo
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng chương trình quản lý nhân sự tiền lương tại doanh nghiệp tư nhân phúc lai, cho các bạn tham khảo
ĐỒ ÁN - Tìm hiểu về điện toán đám mây và triển khai dịch vụ trên điện toán đám mây.doc
Dịch vụ hỗ trợ viết đề tài điểm cao baocaothuctap.net
Zalo / Tel: 0909.232.620
The document provides information about using Knex.js to migrate a Postgresql database. It discusses installing Knex and related packages, creating migrations to build the database schema and structure, running migrations to apply changes, and using seeds to populate the database with sample data. Folder structure, migration and seed files, and Knex configuration are also covered.
Nhập môn Node.js cho các anh em học lập trình di động. Đây là slide tóm tắt cho học viên di động tại TechMaster
http://techmaster.vn
Bài trình bày của anh Trần Nguyên Minh, giám đốc công nghệ của công ty TranCreative chia xẻ kinh nghiệm làm lập trình ứng dụng Mobile độc lập tại Hoa Kỳ
Giới thiệu nền tảng Phalcon PHP. Phalcon hiện có benchmark cao nhất trong số các framework PHP. Năng suất lập trình cao, đầy đủ thư viện, cộng đồng phát triển này. Kinh nghiệm chia sẻ trong bài từ các dự án mà Techmaster.vn đã thực hiện
Prototyping giao diện sử dụng Expression Blend Sketch FlowTechMaster Vietnam
The document discusses using Microsoft Expression Blend for user interface (UI) prototyping. It outlines problems that can occur when coding without prototyping, and introduces Expression Blend as a tool for rapid UI prototyping. The document covers using Expression Blend to create interactive prototypes using drag-and-drop controls, adding navigation, animations, sample data binding, and player functionality to validate designs with stakeholders before development begins.
Hướng dẫn tạo ra slide trình bày hiệu quả, chuyên nghiệp và cách thức lan truyền chia sẻ slide. Bài trình bày của giảng viên Techmaster tại hội nghị NGO Connection do Microsoft tài trợ tại Việt nam này 29/5/2013. Các điểm chính cần lưu ý:
- Thông điệp
- Ít chữ - nhiều hình
- Phối màu
- Font chữ
- Cảm hứng
- Lan truyềb
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTMasterCode.vn
Quản trị viên CSDL là người chịu trách nhiệm về hiệu
năng, tính toàn vẹn dữ liệu và bảo mật cho CSDL. Đồng
thời người quản trị có vai trò lập kế hoạch, phát triển,
khắc phục sự cố xảy ra với CSDL.
Các tác vụ quản trị thường thực hiện
The document discusses managing projects using an Agile framework called Scrum. It explains that Scrum is iterative and incremental, focusing on delivering working software frequently in short cycles called sprints. It outlines Scrum roles like Product Owner, Scrum Master, and self-organizing cross-functional teams. Key Scrum artifacts include the Product Backlog, Sprint Backlog, and Burn Down Chart. Meetings like the Daily Scrum and Sprint Review are used to track progress and get feedback.
3. Kinh nghiệm sương máu cho mấy tay lười
• Postgresql có 1 super user postgres quyền năng tối cao.Tuyệt đối
không dùng để kết nối từ ứng dụng. Hãy đặt password phức tạp,
khó hack cho postgres
• Dùng role postgres tạo ra các db_admin.
• Dùng dbamin tạo ra database
4. Role cho web app
Một web app cần có tối thiểu 2 role, db là tên database
• db_admin: database owner, table owner, connect. Dùng để
migrate
• db_user: quyền SELECT, UPDATE, INSERT, DELETE,
REFERENCE lên các bảng. Dùng để connect từ web app
• Hạn chế dùng db_admin để thay đổi dữ liệu, hãy dùng nó để tạo
bảng, tạo function, tạo view quá migration script
• Luôn dùng db_user để truy vấn, sửa dữ liệu
5. Role truy vấn dữ liệu nhạy cảm
• Đối với dữ liệu nhạy cảm, nên có role riêng để
tạo schema riêng.
• Trong schema riêng, role đó tạo bảng, truy vấn
dữ liệu nhạy cảm, revoke mọi quyền của
db_admin hay db_user vào bảng đó
• Áp dụng bảo mật cột Row Level Security
6. Kiểm tra owner của bảng và table
SELECT d.datname AS "Db"
, pg_catalog.pg_get_userbyid(d.datdba) AS "Owner"
FROM pg_catalog.pg_database d
WHERE d.datname = 'dvdrental'
Kiểm tra owner của bảng cụ thể
Kiểm tra owner của database cụ thể
SELECT * FROM pg_tables WHERE schemaname = 'public' AND
tablename = 'film';
7. Truy vấn quyền
Kiểm tra quyền của một user với một database cụ thể, một schema cụ thể
SELECT * FROM information_schema.role_table_grants
WHERE grantee ='dev' AND table_catalog = 'dvdrental'
AND table_schema ='public';
Liệt kê tất cả các role đang có quyền vào một schema của một database cụ thể
SELECT DISTINCT grantee FROM
information_schema.role_table_grants
WHERE table_catalog = 'dvdrental' AND table_schema ='public';
8. Tước bớt quyền
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM public, userx,
usery;
Tước quyền tác động vào database chưa đảm bảo loại bỏ quyền lên các đối
tượng trong database đó. Quyền lên database chỉ gồm CREATE, CONNECT, TEMP
REVOKE ALL ON DATABASE dvdrental FROM public;
Tước quyền tác động vào các bảng ở schema của public, userx, usery
Tước xong vẫn phải truy vấn lại cho chắc chắn !
9. > postgres role
CREATE ROLE cia_admin CREATEDB CREATEROLE LOGIN;
ALTER ROLE cia_admin ENCRYPTED PASSWORD 'abc';
CREATE DATABASE cia OWNER cia_admin;
REVOKE ALL ON DATABASE cia FROM public;
> cia_admin role
CREATE TABLE agent (id SERIAL PRIMARY KEY, name TEXT UNIQUE NOT
NULL);
CREATE ROLE cia_user LOGIN ENCRYPTED PASSWORD 'abc';
GRANT CONNECT ON DATABASE cia TO cia_user;
GRANT ALL ON TABLE agent TO cia_user;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO cia_user;
10. > cia_user role
INSERT INTO agent (name) VALUES ('thu');
SELECT * FROM agent;
DROP TABLE agent; //failed ! Only table owner or super user can
drop
14. Role Mô tả
SUPERUSER <> NOSUPERUSER Đặc quyền cao nhất, nguy hiểm nhất
CREATEDB <> NOCREATEDB Được tạo database mới
CREATEROLE <> NOCREATEROLE Được tạo ra role mới
INHERIT <> NOINHERIT Kế thừa role
LOGIN <> NOLOGIN Được login hay không
REPLICATION <> NOREPLICATION Có được replicate với CSDL khác hay không
BYPASSRLS <> NOBYPASSRLS Bỏ qua bảo mật dòng ROW SECURITY
CONNECTION LIMIT connlimit Giới hạn số kết nối đồng thời, -1 là không giới hạn
PASSWORD password
ENCRYPTED <> UNENCRYPTED Mã hóa password
VALID UNTIL 'timestamp' Thời hạn của role
15. SUPERUSER vượt trên mọi đặc quyền
và giới hạn, chỉ nên có 1
SUPERUSER có password bảo mật cao
nhất
20. role và group tương đương nhau
• Đều sử dụng lệnh CREATE ROLE
• Để phân biệt ROLE với GROUP
– Luôn đặt tên group với hậu tố _group ví dụ
admin_group, createdb_group
– Không gán đặc quyền login cho group!
– Role group cần INHERIT
21. postgres@host:db> CREATE ROLE admin_group WITH CREATEDB
CREATEROLE;
-- admin_group có INHERIT -> role thuộc nó kế thừa đặc quyền
postgres@host:db> GRANT admin_group to dev;
--connect as dev role
pgcli -h host -U dev -W -d db
dev@host:db> CREATE ROLE fun;
permission denied to create role
-- phải chuyển sang role admin_group mới được !
dev@host:db> SET ROLE admin_group;
dev@host:db> CREATE ROLE fun;
-- success !
22. CREATE ROLE oper CREATEDB ADMIN postgres CREATEROLE ;
-- Drop nhiều role cùng một lúc cách ra bằng dầu phẩy
DROP ROLE funrole, sadrole;
23. SET ROLE specificrole
Super user dùng SET ROLE để kiểm tra
việc phân quyền có đúng không mà không
cần login bằng role đó
24. postgres@host:db> GRANT admin_group TO dev;
-- successful
postgres@host:db> GRANT dev TO admin_group;
role "dev" is a member of role "admin_group"
-- Không thể gán vòng quanh được
26. Cú pháp lệnh GRANT
Gán quyền gì vào đối tượng nào
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE |
REFERENCES | TRIGGER } [, ...] | ALL [ PRIVILEGES ] } ON { [
TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name
[, ...] } TO a_role [, ...] [ WITH GRANT OPTION ]
{ } nhóm quyền hay đối tượng áp dụng. Dùng ALL để chọn tất
[, ...] có thể một hoặc nhiều
[…] có thể bỏ qua
WITH GRANT OPTION có thể gán lại cho role khác
27. GRANT
• SELECT, INSERT, UPDATE, DELETE,TRUNCATE, REFERENCES,TRIGGER
ONTABLE
• CREATE, CONNECT,TEMP ON DATABASE
• CONNECT login khác với connect ở điểm, phải login được rồi mới connect vào
db
• TEMP quyền được tạo bảng tạm thời
• EXECUTE quyền thực thi hàm
• USAGE
28. Cấm truy cập truy cập REVOKE CONNECT
-- Cấm user dev truy cập CSDL dvdrental
postgres@host:dvdrental> REVOKE CONNECT ON DATABASE dvdrental
FROM dev;
-- Cấm tất các user truy cập CSDL dvdrental
postgres@host:dvdrental> REVOKE CONNECT ON DATABASE dvdrental
FROM PUBLIC;
-- Kết nối vào dvdrental bằng role dev
pgcli -h host -U dev -W -d dvdrental
FATAL: permission denied for database "dvdrental"
DETAIL: User does not have CONNECT privilege.
29. Cấp quyền truy cập GRANT CONNECT
-- Cho phép dev truy cập CSDL dvdrental
postgres@host:dvdrental> GRANT CONNECT ON DATABASE dvdrental TO
dev;
-- Kết nối vào dvdrental bằng role dev
pgcli -h host -U dev -W -d dvdrental
-- Success !
30. -- xóa toàn bộ quyền lợi của role dev
DROP OWNED BY dev;
SET ROLE dev;
SELECT * FROM actor;
permission denied for relation actor
Vô hiệu mọi quyền của một role
31. Loại bỏ quyền trên tất cả các bảng
-- Cấm dev xóa dòng trên tất cả các bảng thuộc
schema payroll
postgres@host:dvdrental> REVOKE DELETE ON ALL
TABLES IN SCHEMA payroll FROM dev;
-- Gỡ mọi quyền lên tất cả các bảng trong
schema public ra khỏi public user
postgres@host:dvdrental> REVOKE ALL ON ALL
TABLES IN SCHEMA public FROM PUBLIC;
32. -- Gán SELECT, UPDATE, INSERT cho dev bảng
actor trong dvdrental
postgres@host:dvdrental> GRANT SELECT, UPDATE,
INSERT ON actor TO dev;
dev@host:dvdrental> SELECT * FROM actor;
-- Giờ có thể truy vấn được rồi nhưng không
DELETE được
Phân quyền vào bảng
33. -- Gán quyền cho nhiều bảng cùng một lúc
GRANT SELECT, UPDATE, INSERT ON actor, film TO dev;
GRANT SELECT,UPDATE ON ALL TABLES IN SCHEMA public TO
dev;
Phần quyền vào nhiều bảng
36. Row Level Security – bảo mật dòng
Bảng user có cột password cần phải được mã hóa và giới hạn user
truy cập.
Chỉ có user sys mới có thể truy cập, các user khác không được truy
vấn cột password
37. Cấm select password với role dev
REVOKE SELECT ON users FROM dev;
GRANT SELECT (id, email) ON users TO dev;
SET ROLE dev;
SELECT password FROM users;
permission denied for relation users
-- Lệnh này thì ok
dev@host:dvdrental> SELECT id, email FROM
user;
38. Tóm tắt Row Level Security
• ALTER ROLE
– NOBYPASSRLS cấm pgdump xuất các cột được bảo về bởi
RLS
– BYPASSRLS cho phép pgdump xuất hết các cột kể cả cột
bật RLS
• GRANT / REVOKE RLS đến từng cột trong bảng
• ALTERTABLE
– ENABLE ROW LEVEL SECURITY áp dụng policy
– DISABLE ROW LEVEL SECURITY bỏ qua policy
– FORCE ROW LEVEL SECURITY áp dụng RLS kể cả với table owner
– NO FORCE ROW LEVEL SECURITY không áp dụng RLS với table owner
40. -- Áp dụng POLICY RLS vào bảng
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
-- Áp dụng RLS kể cả với owner của bảng
ALTER TABLE users FORCE ROW LEVEL SECURITY;
ALTER TABLE ENABLE / DISABLE ROW LEVEL SECURITY