Tạo cơ sở dữ liệu. Cài đặt và thiết lập ban đầu của PostgreSQL

Sau khi bạn đã tải xuống Cơ sở dữ liệu từ khóa tiếng Anh, bạn cần cài đặt máy chủ cơ sở dữ liệu cục bộ và tìm hiểu cách thực hiện các lựa chọn. Để làm điều này, chúng tôi cung cấp hướng dẫn từng bước.

QUAN TRỌNG: Nếu bạn không có kinh nghiệm làm việc với cơ sở dữ liệu hoặc trải nghiệm này là tối thiểu thì chúng tôi thực sự khuyên bạn nên bắt đầu với cơ sở tối thiểu để thực hiện quy trình.

Ảnh chụp màn hình trong hướng dẫn cho thấy cách làm việc với đế tối thiểu và theo đó, thời gian được chỉ định cho đế tối thiểu, nhưng làm việc với đế mở rộng và đế tối đa sẽ mất nhiều thời gian hơn.

Tải xuống và cài đặt máy chủ cơ sở dữ liệu PostgreSQL

http://www.postgresql.org/download/windows/

1. Tải xuống chương trình miễn phí cho cơ sở Dữ liệu PostgreSQL từ trang web chính thức http://www.postgresql.org/
tải xuống/windows/

http://www.enterprisedb.com/products-services-training/pgdownload#windows:

Sau đó theo liên kết đến trang chi tiết phiên bản cơ sở dữ liệu cho các hệ điều hành khác nhau: http://www.enterprisedb.com/
sản phẩm-dịch vụ-đào tạo/
pgdownload#windows :


QUAN TRỌNG: Chúng tôi khuyên bạn nên cài đặt máy chủ cơ sở dữ liệu và thực hiện các lựa chọn trong Hệ thống 64 bit có ít nhất 6 GB bộ nhớ truy cập tạm thời khi làm việc với cơ sở dữ liệu tối thiểu và mở rộng. Trong trường hợp cơ sở tối đa, dung lượng RAM được khuyến nghị là từ 32 GB, cũng là điều mong muốn đĩa nhanh. Trên máy tính có hệ thống 32 bit, quá trình nhập dữ liệu, lập chỉ mục và thực sự truy xuất dữ liệu sẽ mất một thời gian rất dài, vì vậy tốt hơn hết bạn nên từ bỏ ý định này.

Nếu bạn không biết độ sâu bit của hệ điều hành, bạn có thể tra cứu nó trong thuộc tính máy tính ( nút bên phải chuột vào mục “Máy tính”, chọn “Thuộc tính” từ menu):


2. Cài đặt cơ sở dữ liệu PostgreSQL đã tải xuống. Trong quá trình cài đặt, hầu hết mọi thứ đều theo mặc định...


...ngoại trừ một số thứ.

3. Chúng ta bắt đầu thao tác tối ưu hóa bảng theo cách tương tự:

chân không "eng_data_table";


Quá trình tối ưu hóa mất trung bình 15-30 phút.

Lưu ý: Chúng tôi thực hiện từng yêu cầu một, trước tiên hãy xóa các yêu cầu trước đó đã được thực hiện. Bạn có thể tìm hiểu xem yêu cầu đã được hoàn thành hay chưa từ thông báo trong Ngăn Đầu ra ở phía dưới (nó xuất hiện khi yêu cầu được hoàn thành) và bạn có thể tìm hiểu thời gian thực hiện trên thanh trạng thái ở cuối cửa sổ.

Cách đầu tiên để kiểm tra xem bạn có quyền truy cập vào máy chủ cơ sở dữ liệu hay không là thử tạo cơ sở dữ liệu. Máy chủ PostgreSQL đang chạy có thể quản lý nhiều cơ sở dữ liệu, cho phép bạn tạo cơ sở dữ liệu riêng biệt cho các dự án và người dùng khác nhau.

Quản trị viên của bạn có thể đã tạo cơ sở dữ liệu cho bạn và đặt tên cho cơ sở dữ liệu đó. Trong trường hợp này, bạn có thể bỏ qua bước này và chuyển sang phần tiếp theo.

Để tạo cơ sở dữ liệu có tên mydb trong ví dụ này, hãy chạy lệnh tiếp theo:

$createdb mydb

Nếu bạn không thấy bất kỳ thông báo nào, thao tác đã thành công và bạn có thể bỏ qua việc tiếp tục phần này.

Nếu bạn thấy một thông báo như:

Createdb: lệnh không tìm thấy

Điều này có nghĩa là PostgreSQL chưa được cài đặt đúng cách. Hoặc nó chưa được cài đặt hoặc thư mục của nó không có trong đường dẫn tìm kiếm lệnh shell. Hãy thử gọi lệnh tương tự bằng cách chỉ định đường dẫn tuyệt đối:

$ /usr/local/pgsql/bin/createdb mydb

Con đường này có thể khác với bạn. Hãy liên hệ với quản trị viên của bạn hoặc kiểm tra xem bạn đã làm theo hướng dẫn cài đặt để khắc phục tình trạng này.

Một câu trả lời có thể khác:

Createdb: không kết nối được với cơ sở dữ liệu postgres: không kết nối được với máy chủ: Không có tệp hoặc thư mục như vậy Nó có thực sự chạy cục bộ và chấp nhận kết nối thông qua ổ cắm tên miền "/tmp/.s.PGSQL.5432" không?

Điều này có nghĩa là máy chủ không hoạt động hoặc được tạo không thể kết nối với nó. Trong trường hợp này, hãy xem lại hướng dẫn cài đặt hoặc liên hệ với quản trị viên của bạn.

Bạn cũng có thể nhận được thông báo sau:

Createdb: không kết nối được với cơ sở dữ liệu postgres: QUAN TRỌNG: vai trò "joe" không tồn tại

nơi tên người dùng của bạn xuất hiện. Điều này cho thấy quản trị viên chưa tạo tài khoản PostgreSQL cho bạn. (Tài khoản PostgreSQL khác với tài khoản người dùng hệ điều hành.) Nếu bạn là quản trị viên, hãy đọc Chương 20 để biết hướng dẫn về cách tạo tài khoản. Để tạo người dùng mới, bạn phải trở thành người dùng hệ điều hành mà PostgreSQL đã được cài đặt (thường là postgres). Cũng có thể bạn đã được gán một cái tên Người dùng PostgreSQL, không khớp với tên của bạn trong HĐH; trong trường hợp này, bạn cần chỉ định rõ ràng tên người dùng PostgreSQL của mình bằng cách sử dụng khóa chuyển -U hoặc đặt biến môi trường PGUSER.

nếu bạn có Tài khoản user nhưng không có quyền tạo cơ sở dữ liệu, bạn sẽ thấy thông báo:

Createdb: Tạo cơ sở dữ liệu không thành công: LỖI: Không có quyền tạo cơ sở dữ liệu

Không phải tất cả người dùng đều được phép tạo cơ sở dữ liệu. Nếu PostgreSQL từ chối tạo cơ sở dữ liệu cho bạn thì bạn cần có quyền để làm điều đó. Trong trường hợp này, hãy liên hệ với quản trị viên của bạn. Nếu bạn đã tự cài đặt PostgreSQL thì với mục đích của phần giới thiệu này, bạn nên đăng nhập với tư cách là người dùng đang chạy máy chủ cơ sở dữ liệu.

Bạn cũng có thể tạo cơ sở dữ liệu với các tên khác. PostgreSQL cho phép bạn tạo bao nhiêu cơ sở dữ liệu tùy thích. Tên cơ sở dữ liệu phải bắt đầu bằng một chữ cái và không dài quá 63 ký tự. Thật thuận tiện khi sử dụng tên người dùng hiện tại của bạn làm tên cơ sở dữ liệu. Nhiều tiện ích sẽ lấy tên này theo mặc định, vì vậy bạn có thể gõ lệnh dễ dàng hơn. Để tạo cơ sở dữ liệu có tên này, chỉ cần nhập:

$createdb

Nếu bạn không muốn sử dụng cơ sở dữ liệu của mình nữa, bạn có thể xóa nó. Ví dụ: nếu bạn là chủ sở hữu (người tạo) cơ sở dữ liệu mydb, bạn có thể hủy nó bằng cách chạy lệnh sau:

$dropdb mydb

(Lệnh này không mặc định có tên cơ sở dữ liệu của người dùng hiện tại; bạn phải chỉ định nó một cách rõ ràng.) Lệnh này sẽ xóa tất cả các tệp được liên kết với cơ sở dữ liệu về mặt vật lý và vì hành động này không thể hoàn tác nên đừng thực hiện nó mà không nghĩ đến hậu quả.

Quản trị hệ thống

Bài này - hướng dẫn ngắn gọn dành cho người mới bắt đầu, dành cho những người cài đặt PostgreSQL lần đầu tiên. Mọi thứ đều ở đây thông tin cần thiếtđể bắt đầu với PostgreSQL.

Kết nối với DBMS

Điều đầu tiên cần làm là giành quyền truy cập vào PostgreSQL, truy cập với tư cách siêu người dùng.
Cài đặt xác thực được đặt trong tệp pg_hba.conf.
  1. tất cả các đồng nghiệp postgres địa phương
Dòng này cho biết người dùng postgres có thể kết nối với bất kỳ cơ sở dữ liệu PostgreSQL cục bộ nào thông qua một ổ cắm. Không cần nhập mật khẩu; hệ điều hành sẽ truyền tên người dùng và nó sẽ được sử dụng để xác thực.
Hãy kết nối:
  1. $ sudo -u postgres psql postgres postgres
Để có thể kết nối qua mạng, bạn cần thêm dòng vào pg_hdba.conf:
  1. # LOẠI PHƯƠNG PHÁP ĐỊA CHỈ NGƯỜI DÙNG CƠ SỞ DỮ LIỆU
  2. tất cả các máy chủ 0.0.0.0/0 md5
Phương pháp xác thực md5 có nghĩa là bạn sẽ phải nhập mật khẩu để kết nối. Điều này không thuận tiện lắm nếu bạn thường xuyên sử dụng bảng điều khiển psql. Nếu bạn muốn tự động hóa một số hành động, tin xấu là psql không chấp nhận mật khẩu làm đối số. Có hai cách để giải quyết những vấn đề này: đặt biến môi trường thích hợp và lưu trữ mật khẩu trong tệp .pgpass đặc biệt.

Đặt biến môi trường PGPASSWORD

Tôi sẽ nói ngay rằng tốt hơn hết là không nên sử dụng phương pháp này, vì một số hệ điều hành cho phép bạn xem người dùng thông thường biến môi trường bằng cách sử dụng ps. Nhưng nếu muốn, bạn cần phải viết vào terminal:
  1. xuất PGPASSWORD=mypasswd
Biến sẽ có sẵn trong phiên hiện tại. Nếu bạn cần đặt một biến cho tất cả các phiên, thì bạn cần thêm dòng từ ví dụ vào tệp .bashrc hoặc .bash_profile

Lưu trữ mật khẩu trong tệp .pgpass

Nếu chúng ta đang nói về Linux, thì tệp phải được đặt ở $HOME (/home/username). Chỉ chủ sở hữu (0600) mới có quyền ghi và đọc. Bạn cần viết những dòng như thế này vào tập tin:
  1. tên máy chủ: cổng: cơ sở dữ liệu: tên người dùng: mật khẩu
Bạn có thể viết “*” vào bốn trường đầu tiên, điều này có nghĩa là không lọc (lựa chọn đầy đủ).

Nhận thông tin trợ giúp

\? - sẽ hiển thị tất cả các lệnh có sẵn cùng với mô tả ngắn gọn của chúng,
\h - sẽ hiển thị danh sách tất cả các truy vấn có sẵn,
\h TẠO - sẽ cung cấp trợ giúp cho một yêu cầu cụ thể.

Quản lý người dùng DBMS

Làm cách nào để có được danh sách người dùng PostgreSQL? Hoặc bạn có thể truy vấn bảng pg_user.
  1. CHỌN * TỪ pg_user ;

Tạo người dùng PostgreSQL mới

Từ vỏ bọc psql điều này có thể được thực hiện bằng lệnh CREATE.
  1. TẠO tên người dùng VỚI mật khẩu "mật khẩu";
Hoặc bạn có thể sử dụng thiết bị đầu cuối.
  1. người tạo -S -D -R -P tên người dùng
Bạn sẽ được nhắc nhập mật khẩu.

Thay đổi mật khẩu người dùng

  1. THAY ĐỔI tên người dùng NGƯỜI DÙNG VỚI "mật khẩu" MẬT KHẨU;

Thay đổi vai trò người dùng

Để cấp cho người dùng quyền tạo cơ sở dữ liệu, hãy chạy truy vấn sau:
  1. THAY ĐỔI tên người dùng VAI TRÒ VỚI CREATEDB ;

Quản lý cơ sở dữ liệu

Hiển thị danh sách cơ sở dữ liệu trong thiết bị đầu cuối psql: Tương tự từ thiết bị đầu cuối Linux:
  1. psql -l
Tạo cơ sở dữ liệu từ psql (PostgreSQL Terminal)
  1. TẠO CƠ SỞ DỮ LIỆU dbname CHỦ SỞ HỮU dbadmin;
Sự sáng tạo căn cứ mới dữ liệu sử dụng thiết bị đầu cuối:
  1. createb -O tên người dùng dbname;

Thiết lập quyền truy cập vào cơ sở dữ liệu

Nếu người dùng là chủ sở hữu cơ sở dữ liệu thì anh ta có mọi quyền. Nhưng nếu bạn muốn cấp quyền truy cập cho người dùng khác, bạn có thể thực hiện việc này bằng lệnh GRANT. Truy vấn bên dưới sẽ cho phép người dùng kết nối với cơ sở dữ liệu. Nhưng đừng quên về tập tin cấu hình pg_hba.conf, nó cũng phải có quyền kết nối phù hợp.
  1. CẤP KẾT NỐI TRÊN CƠ SỞ DỮ LIỆU dbname VỚI dbadmin;

PostgreSQL là một DBMS quan hệ đối tượng đa nền tảng với mã nguồn mở mã nguồn. Bài viết này sẽ hướng dẫn bạn cách cài đặt PostgreSQL trong Ubuntu Linux, kết nối với nó và chạy một số truy vấn SQL đơn giản cũng như cách thiết lập bản sao lưu.

Để cài đặt PostgreSQL 9.2 trên Ubuntu 12.10, hãy chạy các lệnh sau:

sudo apt-add-repository ppa:pitti/postgresql
cập nhật sudo apt-get
sudo apt-get cài đặt postgresql-9.2

Hãy thử làm việc với DBMS thông qua shell:

sudo -u postgres psql

Hãy tạo cơ sở dữ liệu thử nghiệm và người dùng thử nghiệm:

TẠO CƠ SỞ DỮ LIỆU test_database;
TẠO NGƯỜI DÙNG test_user BẰNG mật khẩu "qwerty";
CẤP TẤT CẢ TRÊN CƠ SỞ DỮ LIỆU test_database CHO test_user;

Để thoát khỏi shell, nhập lệnh \q .

Bây giờ hãy thử làm việc với cơ sở dữ liệu đã tạo thay mặt cho test_user:

psql -h localhost test_database test_user

Hãy tạo một bảng mới:

TẠO SEQUENCE user_ids;
TẠO người dùng BẢNG (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids") ,
đăng nhập CHAR(64) ,
mật khẩu CHAR(64));

Xin lưu ý rằng, không giống như một số DBMS khác, PostgreSQL không có các cột có thuộc tính auto_increment. Thay vào đó, Postgres sử dụng trình tự. TRÊN khoảnh khắc này Chỉ cần biết rằng bằng cách sử dụng hàm nextval, chúng ta có thể nhận được các số duy nhất cho một chuỗi nhất định:

CHỌN TIẾP THEO ("user_ids" );

Bằng cách đặt giá trị mặc định cho trường id của bảng người dùng thành TIẾP THEO("user_ids"), chúng ta đã đạt được hiệu quả tương tự như auto_increment mang lại. Khi thêm bản ghi mới vào bảng, chúng ta không phải chỉ định id vì một id duy nhất sẽ được tạo tự động. Nhiều bảng có thể sử dụng cùng một trình tự. Bằng cách này, chúng tôi có thể đảm bảo rằng giá trị của một số trường trong các bảng này không trùng nhau. Theo nghĩa này, trình tự linh hoạt hơn auto_increment.

Có thể tạo cùng một bảng chỉ bằng một lệnh:

TẠO BẢNG user2 (
id KHÓA CHÍNH SERIAL,
đăng nhập CHAR(64) ,
mật khẩu CHAR(64));

Trong trường hợp này, chuỗi trường id được tạo tự động.

Bây giờ, bằng cách sử dụng lệnh \d, bạn có thể xem danh sách tất cả các bảng có sẵn và bằng cách sử dụng người dùng \d, bạn có thể xem mô tả về bảng người dùng. Nếu bạn không nhận được thông tin mình đang tìm kiếm, hãy thử \d+ thay vì \d . Bạn có thể lấy danh sách cơ sở dữ liệu bằng lệnh \l và chuyển sang cơ sở dữ liệu cụ thể bằng lệnh \c dbname. Để hiển thị lệnh trợ giúp, hãy nói \? .

Điều quan trọng cần lưu ý là PostgreSQL chuyển đổi tên bảng và cột thành chữ thường theo mặc định. Nếu bạn không muốn hành vi này, bạn có thể sử dụng dấu ngoặc kép:

TẠO BẢNG "anotherTable" ("someValue" VARCHAR (64 ) );

Một tính năng khác của PostgreSQL có thể gây khó khăn khi bắt đầu làm việc với DBMS này là cái gọi là “lược đồ”. Lược đồ giống như một không gian tên cho các bảng, giống như một thư mục chứa các bảng bên trong cơ sở dữ liệu.

Tạo một lược đồ:

TẠO đặt chỗ SCHEMA;

Chuyển sang sơ đồ:

THIẾT LẬP search_path ĐỂ đặt chỗ;

Danh sách xem các chương trình hiện có bạn có thể sử dụng lệnh \dn. Lược đồ mặc định được đặt tên là public. Về nguyên tắc, bạn có thể sử dụng thành công PostgreSQL mà không cần biết đến sự tồn tại của các lược đồ. Nhưng khi làm việc với mã kế thừa và trong một số trường hợp phức tạp, việc biết về lược đồ có thể rất hữu ích.

Mặt khác, làm việc với PostgreSQL không khác nhiều so với làm việc với bất kỳ DBMS quan hệ nào khác:

CHÈN VÀO người dùng (đăng nhập, mật khẩu)
GIÁ TRỊ ("afiskon", "123456" );
CHỌN * TỪ người dùng;

Nếu bây giờ bạn cố gắng kết nối với Postgres từ một máy khác, bạn sẽ thất bại:

psql -h 192.168.0.1 test_database test_user

Psql: không thể kết nối với máy chủ: Kết nối bị từ chối
Máy chủ có đang chạy trên máy chủ "192.168.0.1" và chấp nhận
Kết nối TCP/IP trên cổng 5432?

Để khắc phục điều này, hãy thêm dòng:

listen_addresses = "localhost,192.168.0.1"

...vào tệp /etc/postgresql/9.2/main/postgresql.conf.

Thử nghiệm đầu tiên để chứng minh rằng bạn có thể truy cập vào máy chủ cơ sở dữ liệu là cố gắng tạo cơ sở dữ liệu. Máy chủ đang chạy PostgreSQL có thể quản lý nhiều cơ sở dữ liệu. Thông thường, đối với mỗi dự án hoặc mỗi người dùng nó được sử dụng cơ sở riêng biệt dữ liệu.

Có thể quản trị viên máy của bạn đã tạo cơ sở dữ liệu cho bạn. Đáng lẽ nó phải cho bạn biết tên cơ sở dữ liệu của bạn. Trong trường hợp này, bạn có thể bỏ qua phần này và chuyển sang phần tiếp theo. Để tạo một cơ sở dữ liệu mới, được gọi là mydb trong ví dụ này, bạn có thể sử dụng lệnh sau: $ createb mydb Nếu lệnh hoàn thành mà không có bất kỳ thông báo nào thì bước này

đã được thông qua thành công và bạn có thể bỏ qua nội dung được viết bên dưới cho đến hết phần này.

Nếu bạn nhận được một cái gì đó tương tự như: createb: không tìm thấy lệnh

$ /usr/local/pgsql/bin/createdb mydb

điều này có nghĩa là sản phẩm PostgreSQL không được cài đặt đúng cách. Không phải mọi thứ đã được cài đặt hoặc đường dẫn tìm kiếm trong trình bao của bạn không được đặt phù hợp. Hãy thử gọi lệnh này bằng đường dẫn đầy đủ:

Đường dẫn đầy đủ trên máy của bạn có thể khác. Hãy liên hệ với quản trị viên của bạn hoặc kiểm tra hướng dẫn cài đặt để khắc phục tình trạng này.

Một thông báo khác mà bạn có thể nhận được: createb: không thể kết nối với cơ sở dữ liệu postgres: không thể kết nối với máy chủ: Không có tệp hoặc thư mục như vậy Không có tệp hoặc thư mục như vậy Máy chủ có chạy cục bộ và chấp nhận kết nối trên ổ cắm tên miền Unix "/tmp/. s. PGSQL.5432"?

Điều này có nghĩa là máy chủ chưa được khởi động hoặc máy chủ không được khởi động như mong đợi bởi lệnh createb. Một lần nữa, hãy kiểm tra hướng dẫn cài đặt hoặc tham khảo ý kiến ​​quản trị viên của bạn.

Một thông báo khác bạn có thể nhận được: createb: không thể kết nối với cơ sở dữ liệu postgres: FATAL: người dùng "joe" không tồn tại nơi tên đăng nhập của bạn được đề cập thay vì joe. Thông báo này xuất hiện nếu quản trị viên chưa tạo người dùng cho bạn trong PostgreSQL. (Người dùng PostgreSQL không phải là người dùng hệ điều hành.) Nếu bạn là quản trị viên, hãy xem Chương 20 để biết thông tin về cách tạo người dùng. Bạn sẽ cần phải đăng ký với hệ điều hành

dưới tên của người dùng mà PostgreSQL đang chạy (thường là postgres) để tạo người dùng đầu tiên trong DBMS. Đối với lệnh tạo cơ sở dữ liệu, bạn cũng có thể chỉ định tên người dùng trong PostgreSQL khác với tên người dùng hệ điều hành hiện tại của bạn; trong trường hợp này, bạn cần đặt tên người dùng PostgreSQL bằng tùy chọn -U hoặc đặt biến môi trường PGUSER. Nếu như tồn tại nhưng không có các quyền cần thiết để tạo cơ sở dữ liệu, bạn sẽ thấy thông báo sau: createb: tạo cơ sở dữ liệu không thành công: LỖI: quyền bị từ chối tạo cơ sở dữ liệu

Không phải mọi người dùng đều có quyền tạo cơ sở dữ liệu mới. Nếu PostgreSQL từ chối nỗ lực tạo cơ sở dữ liệu của bạn thì quản trị viên máy của bạn sẽ cần cấp cho bạn quyền tạo cơ sở dữ liệu. Hãy hỏi ý kiến ​​anh ấy trong trường hợp này. Nếu bạn đã tự mình cài đặt PostgreSQL thì bạn nên làm vậy, vì mục đích mà phần này theo đuổi. hướng dẫn đào tạo connect với tư cách là người dùng thay mặt máy chủ cơ sở dữ liệu được khởi chạy.

Bạn cũng có thể tạo cơ sở dữ liệu với bất kỳ tên nào khác. PostgreSQL cho phép bạn tạo bất kỳ số lượng cơ sở dữ liệu nào trên một máy chủ. Tên cơ sở dữ liệu phải bao gồm các chữ cái và số (phải luôn có một chữ cái ở đầu) và có độ dài không quá 63 byte. Việc tạo cơ sở dữ liệu có cùng tên với người dùng khá thuận tiện. Nhiều công cụ sẽ mặc định đây là tên cơ sở dữ liệu, do đó bạn không cần phải bấm quá nhiều nút. Để tạo một cơ sở dữ liệu có cùng tên với người dùng, chỉ cần gõ: $ createb Nếu bạn không muốn sử dụng cơ sở dữ liệu của mình trong tương lai, bạn có thể xóa nó. Ví dụ: nếu bạn là chủ sở hữu (người tạo) cơ sở dữ liệu mydb, bạn có thể loại bỏ nó bằng lệnh sau: $ dropdb mydb

(Đối với lệnh này, bạn phải đảm bảo chỉ định tên cơ sở dữ liệu; nó sẽ không cho rằng tên cơ sở dữ liệu là tên người dùng hiện tại). Lệnh này sẽ xóa vật lý tất cả các tệp được liên kết với cơ sở dữ liệu đã chỉ định để không thể khôi phục chúng, vì vậy hãy thực hiện thao tác này một cách cẩn thận.