Truy cập nhanh giao diện dòng lệnh của PostgreSQL

Để truy cập vào một hệ sơ sở dữ liệu (CSDL), ta luôn cần 3 thông số: địa chỉ server, username và password. Sẽ không là vấn đề khi một chương trình được cấu hình tự động để truy cập vào hệ CSDL, nhưng nhiều khi ta phải kết nối vào giao diện dòng lệnh, để tự tay làm một số việc với dữ liệu, và phải đối mặt với sự phiền hà của việc tìm lại và khai báo username, password. Username có thể dễ hơn vì ta thường đặt một username dễ nhớ, nhưng password thì luôn phải rắc rối và thường ta không thể nhớ được, phải cất đâu đó. Đã phải mất công tìm kiếm, mà tự tay gõ cũng phiền nữa. Thế nhưng với PostgreSQL, ta có một mẹo để làm việc này nhẹ nhàng hơn.

PostgreSQL cho phép "gắn kết" một tài khoản user trong nó với tài khoản user của hệ điều hành. Ví dụ trên hệ điều hành (Linux, Unix) ta có user quan và trong PostgreSQL ta tạo một user (role) cũng tên quan, thì khi ta đang đăng nhập vào hệ điều hành dưới user quan, ta có thể truy cập ngay lập tức vào PostgreSQL dưới role quan mà không cần đăng nhập, tức là không phải khai báo hostname, username và password.

Thay vì ta phải gõ

psql -hlocalhost -Uquan mydatabase
(password)

thì nay ta chỉ cần

psql mydatabase

Trong trường hợp ta phải làm một số việc thuộc quyền quản trị như tạo database, tạo user, ta cần phải đăng nhập với tư cách một user có quyền cao hơn, thông thường là user postgres, ta cũng không cần tới password của user này. Ta chỉ cần gõ

sudo -u postgres psql

và nhập password của ta (user quan trên hệ điều hành). Khi PostgreSQL được cài vào máy, nó sẽ được tạo một user có tên postgres trên hệ điều hành, ứng với user cấp cao cùng tên trong hệ CSDL. Đối với Ubuntu, user này mặc định không có password, tương tự như root. Cho nên, khi dùng mẹo phía trên, ta tiết kiệm được 2 việc:

  • Tạo password cho postgres
  • Cất giữ, lục tìm và gõ password cho postgres

Nói đến việc không có password, tôi cũng thích sử dụng CSDL với một tài khoản không có password, vừa đỡ phải tìm cách giấu giếm, lưu trữ, vừa khỏi lo bị lộ (vì có tồn tại đâu mà lộ). PostgeSQL lại cung cấp những dòng lệnh để ta tạo tài khoản và database rất nhanh, rất thân thiện với người dùng Linux. Ví dụ khi mới cài PostgreSQL, việc đầu tiên tôi làm chỉ là mở Terminal và gõ:

$ sudo -u postgres createuser -s quan
$ sudo -u postgres createdb my_project -O quan

Lệnh thứ nhất là để tạo một user trong Postgres trùng tên với user hệ điều hành, để có thể kết nối nhanh qua Unix socket (-s là để cấp quyền superuser). Lệnh thứ hai là để tạo một database có tên my_project và đặt "owner" là chính tôi (user quan sẽ có toàn quyền trên database đó). Những lệnh này rất ngắn gọn, có thể "tab-complete", dễ thực hiện hơn việc chạy những câu lệnh SQL dài dòng.

Đây là hai trong những lí do tôi thích PostgreSQL hơn MySQL. Đa số những lập trình viên tôi biết thường học và làm quen với một hệ CSDL nào đó trước khi chuyển qua PostgreSQL, nên không biết đến tính năng này của Postgres. Khi họ chuyển qua PostgreSQL, họ đã quen thủ tục đăng nhập, cho là bước đơn giản nên không lưu tâm xem PostgreSQL có cung cấp cách làm nào khác hơn. Mẹo này cũng chỉ áp dụng được trên các hệ điều hành Linux và "giống-Unix", không áp dụng được trên Windows.

Thêm một ghi chú nhỏ: Nếu bạn thường xuyên phải thao tác dòng lệnh với PostgreSQL, hãy xem qua công cụ pgcli tại http://pgcli.com. Công cụ này được viết bằng Python. Dưới đây là một tấm ảnh tóm tắt tiện ích mà pgcli mang lại:

pgcli

Website này sử dụng Disqus cho comment. Nếu bạn không thấy các comment dưới đây, có lẽ Disqus đang bị chặn. Bạn cần đổi DNS.
comments powered by Disqus