Hướng dẫn dùng postgres sslmode trong PHP

The error message is clear, it comes from this code in PostgreSQL's libpq:

#ifndef USE_SSL
        switch (conn->sslmode[0])
        {
            case 'a':           /* "allow" */
            case 'p':           /* "prefer" */

                /*
                 * warn user that an SSL connection will never be negotiated
                 * since SSL was not compiled in?
                 */
                break;

            case 'r':           /* "require" */
            case 'v':           /* "verify-ca" or "verify-full" */
                conn->status = CONNECTION_BAD;
                printfPQExpBuffer(&conn->errorMessage,
                                  libpq_gettext("sslmode value \"%s\" invalid when SSL support is not compiled in\n"),
                                  conn->sslmode);
                return false;
        }
#endif

That code is only compiled when PostgreSQL was not configured --with-openssl.

You can verify that with pg_config (if you didn't install PostgreSQL from source, you may have to install a "dev" or "devel" package for that):

pg_config --configure

The output will not contain --with-openssl.

It may well be that PHP is built with SSL support, but PostgreSQL isn't.

Since you say that PostgreSQL is compiled with SSL support, one explanation for the behavior is that there are several PostgreSQL installations on your machine, and PHP uses one that is build without SSL support. Try and find all files called libpq.* on your system!

Việc kết nối tới PostgreSQL Database để lấy dữ liệu là rất dễ dàng. Với PHP có 2 cách để kết nối như sau:

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO
  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO
  • Bài viết nổi bật cùng chuyên mục
  • Giới thiệu

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO
  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO
  • Bài viết nổi bật cùng chuyên mục
  • Giới thiệu

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO

1. Sử dụng hàm pg_connect() của PHP

Kích hoạt Extension pgsql của PHP

Để sử dụng hàm được hàm pg_connect() của PHP chúng ta cần kích hoạt 1 extension của PHP là: pgsql

Sửa file php.ini và mở comment của dòng sau:

– Trên Windows:

extension=php_pgsql.dll

– Trên Linux:

extension=pgsql.so

Sau đó restart lại php-fpm hoặc apache để cập nhật config.

Kiểm tra php đã có kích hoạt module pgsql chưa? Chúng ta sử dụng command sau:

php -m | grep pgsql

Nếu kết quả như sau tức là module pgsql của PHP đã hoạt động.

Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()

Tham khảo đoạn code sau:

 port= dbname= user= password=");
if (!$dbConn) {
    echo "An error occurred.\n";
    exit;
}

// Query data
$result = pg_query($dbConn, 'SELECT * FROM hr_employee');
if (!$result) {
    echo "An error occurred.\n";
    exit;
}

// Show value
while ($row = pg_fetch_assoc($result)) {
    var_dump($row);
}

Với:

  • : Là hostname hoặc địa chỉ IP của PostgreSQL Databasee
  • : PostgreSQL Port, mặc định là 5432
  • : Database name
  • : Database Username
  • : Mật khẩu của Database Username

2. Sử dụng class PDO của PHP

Hãy chắc chắn rằng PDO module của PHP đã được kích hoạt. Nếu không hãy sửa fle php.ini và bỏ comment dòng sau:

– Trên Windows:

extension=php_pdo_pgsql.dll

– Trên Linux là mặc định được kích hoạt

Kết nối tới PostgreSQL Database sử dụng hàm PDO

Tham khảo đoạn code sau:

 \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];

// Query string
$dsn = "pgsql:host=;dbname=";

try {
    // Create pdo connection
    $myPdo = new \PDO($dsn, , , $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

// Query
$result = $myPdo->query("SELECT * FROM hr_employee");

// Loop query
foreach ($result as $key => $row) {
    print "{$row['name']}: {$row['gender']}
"; }

Nguồn: vinasupport.com

Việc kết nối tới PostgreSQL Database để lấy dữ liệu là rất dễ dàng. Với PHP có 2 cách để kết nối như sau:

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO
  • Bài viết nổi bật cùng chuyên mục
  • Giới thiệu

Nội dung chính

  • 1. Sử dụng hàm pg_connect() của PHP
  • Kích hoạt Extension pgsql của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()
  • 2. Sử dụng class PDO của PHP
  • Kết nối tới PostgreSQL Database sử dụng hàm PDO

1. Sử dụng hàm pg_connect() của PHP

Kích hoạt Extension pgsql của PHP

Để sử dụng hàm được hàm pg_connect() của PHP chúng ta cần kích hoạt 1 extension của PHP là: pgsql

Sửa file php.ini và mở comment của dòng sau:

– Trên Windows:

extension=php_pgsql.dll

– Trên Linux:

extension=pgsql.so

Sau đó restart lại php-fpm hoặc apache để cập nhật config.

Kiểm tra php đã có kích hoạt module pgsql chưa? Chúng ta sử dụng command sau:

php -m | grep pgsql

Nếu kết quả như sau tức là module pgsql của PHP đã hoạt động.

Kết nối tới PostgreSQL Database sử dụng hàm pg_connect()

Tham khảo đoạn code sau:

 port= dbname= user= password=");
if (!$dbConn) {
    echo "An error occurred.\n";
    exit;
}

// Query data
$result = pg_query($dbConn, 'SELECT * FROM hr_employee');
if (!$result) {
    echo "An error occurred.\n";
    exit;
}

// Show value
while ($row = pg_fetch_assoc($result)) {
    var_dump($row);
}

Với:

  • : Là hostname hoặc địa chỉ IP của PostgreSQL Databasee
  • : PostgreSQL Port, mặc định là 5432
  • : Database name
  • : Database Username
  • : Mật khẩu của Database Username

2. Sử dụng class PDO của PHP

Hãy chắc chắn rằng PDO module của PHP đã được kích hoạt. Nếu không hãy sửa fle php.ini và bỏ comment dòng sau:

– Trên Windows:

extension=php_pdo_pgsql.dll

– Trên Linux là mặc định được kích hoạt

Kết nối tới PostgreSQL Database sử dụng hàm PDO

Tham khảo đoạn code sau:

 \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];

// Query string
$dsn = "pgsql:host=;dbname=";

try {
    // Create pdo connection
    $myPdo = new \PDO($dsn, , , $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

// Query
$result = $myPdo->query("SELECT * FROM hr_employee");

// Loop query
foreach ($result as $key => $row) {
    print "{$row['name']}: {$row['gender']}
"; }

Nguồn: vinasupport.com

Không bao giờ là thất bại. Tất cả chỉ là thử thách. - Chung Ju Yung

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

Bài viết này chúng ta sẽ tìm hiểu cách kết nối với máy chủ cơ sở dữ liệu PostgreSQL (PostgreSQL database server) thông qua terminal program là psql và thông qua pgAdmin application.

Khi bạn cài đặt PostgreSQL xong, trình cài đặt PostgreSQL cũng đã cài đặt một số công cụ hữu ích để làm việc với máy chủ cơ sở dữ liệu PostgreSQL. Trong bài viết này, chúng ta sẽ tìm hiểu cách kết nối với máy chủ cơ sở dữ liệu PostgreSQL thông qua các công cụ sau:

  • psql – một giao diện người dùng (front-end) dựa trên terminal đến máy chủ cơ sở dữ liệu PostgreSQL.
  • pgAdmin – một giao diện người dùng dựa trên nền web đến máy chủ cơ sở dữ liệu PostgreSQL.

1. Sử dụng psql

1. Sử dụng psql

psql là một terminal program được cung cấp bởi PostgreSQL. Nó cho phép bạn tương tác với máy chủ cơ sở dữ liệu PostgreSQL như thực thi các câu lệnh SQL và quản lý các đối tượng cơ sở dữ liệu.

Chúng ta có 2 cách kết nối với máy chủ cơ sở dữ liệu PostgreSQL thông qua psql.

① Sử dụng công cụ SQL Shell (psql) đi kèm sau khi cài đặt PostgreSQL xong
Đầu tiên, khởi chạy psql và kết nối với máy chủ cơ sở dữ liệu PostgreSQL bằng người dùng postgres:

Sau đó, nhấn enter mà không cần nhập gì ở các thông tin như Server, Database, Port, Username, Client Encoding, vì chương trình sẽ sử dụng giá trị mặc định được chỉ định trong dấu ngoặc vuông [] và di chuyển con trỏ đến dòng mới.

Đến bước nhập mật khẩu cho người dùng postgres, bạn cần nhập mật khẩu mà đã thiết lập trong quá trình cài đặt PostgreQuery.

Đến đây, chúng ta đã có thể tương tác với máy chủ cơ sở dữ liệu PostgreSQL bằng cách đưa ra câu lệnh SQL. Câu lệnh sau trả về phiên bản hiện tại của PostgreSQL:

SELECT version();

② Sử dụng command prompt (cmd) của Windows

Khi kết nối với PostgreSQL bằng psql, nếu không chỉ định cơ sở dữ liệu để kết nối, nó sẽ kết nối với cơ sở dữ liệu có cùng tên với vai trò (role name) được sử dụng cho kết nối.

Ví dụ, nếu bạn kết nối bằng cách role name postgres thì sẽ kết nối với cơ sở dữ liệu có cùng tên là postgres.

psql -U postgres

Để thực hiện, bạn vào command prompt (cmd) của Windows > nhập lệnh psql -U postgres > nhập password của tài khoản postgres (mật khẩu này được thiết lập lúc cài đặt PostgreSQL).

Xem thêm: Cách kết nối cơ sở dữ liệu được chỉ định bằng psql.

2. Sử dụng pgAdmin

2. Sử dụng pgAdmin

Cách thứ hai để kết nối với cơ sở dữ liệu là sử dụng ứng dụng pgAdmin – cho phép bạn tương tác với máy chủ cơ sở dữ liệu PostgreSQL thông qua giao diện người dùng trực quan.

Dưới đây minh họa cách kết nối với cơ sở dữ liệu bằng ứng dụng GUI pgAdmin.

Đầu tiên, khởi chạy ứng dụng pgAdmin.

pgAdmin sẽ khởi chạy trên trình duyệt web như trong hình sau:

Tiếp theo, click vào nút Servers để mở rộng. Theo mặc định, PostgreSQL 12 có một cơ sở dữ liệu có tên là postgres như dưới đây:

Để mở công cụ truy vấn thì bạn click vào postgres > click menu Tools > chọn Query Tool

Trình soạn thảo truy vấn (Query Editor) sẽ xuất hiện > nhập truy vấn SELECT version(); > nhấn F5 để thực thi hoặc nhấp vào nút Thực thi, bạn sẽ thấy kết quả của truy vấn hiển thị trong tab Data Output:

3. Sử dụng các ứng dụng khác

3. Sử dụng các ứng dụng khác

Bất kỳ ứng dụng nào hỗ trợ ODBC hoặc JDBC đều có thể kết nối với máy chủ cơ sở dữ liệu PostgreSQL. Ngoài ra, nếu bạn phát triển một ứng dụng sử dụng trình điều khiển cụ thể (specific driver) như PHP, Python, Java,…, ứng dụng đó cũng có thể kết nối với máy chủ cơ sở dữ liệu PostgreQuery.

Xem thêm: Cách kết nối cơ sở dữ liệu PostgreSQL từ C#.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

0 0 votes

Đánh giá bài viết

Bài viết nổi bật cùng chuyên mục

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]