我正在從MariaDB切換到Postgres,並遇到一些意外問題。無法通過PHP PDO訪問Postgresql數據庫
我在Ubuntu 16.04.4上安裝了Postgres 9.5.8。
從貝,我然後執行以下操作
su postgres
psql
password: //enter postgres password assigned at installation
CREATE USER test;
CREATE ROLE //psql response
CREATE DATABASE test;
CREATE DATABASE //psql response
ALTER USER test WITH ENCRYPTED PASSWORD 'password';
ALTER ROLE //psql response
GRANT ALL PRIVILEGES ON DATABASE test TO test;
GRANT //psql response
在運行PHP 7.0.22我瞭解它們對Adminer 4.3.1作爲root用戶我的Nginx服務器1.10.3(Postgres的),並創建數據庫表「test」
CREATE TABLE "public"."test" (
"a" smallint NOT NULL,
"b" integer NOT NULL,
"c" bigint NOT NULL,
"d" boolean NOT NULL,
"e" double precision NOT NULL,
"f" date NOT NULL,
"g" character varying(1024) NOT NULL,
"id" integer NOT NULL
) WITH (oids = false);
INSERT INTO "test" ("a","b","c","d","e","f","g","id")
VALUES (1,2,3,'1',4.5,'2017-08-22','testing',1);
它按照預期創建表「測試」。
做完這一切,然後我寫了一個簡單的PHP腳本
<?php
$dsn = "pgsql:host=localhost;port=5432;".
"dbname=test;user=test;password=password";
$dbh = new PDO($dsn);
try
{
$count = $dbh->query("SELECT COUNT(*) FROM test")->fetchColumn();
} catch (Exception $e){echo $e->getMessage();}
echo "Count = $count";
?>
當我運行此腳本我找回了錯誤
SQLSTATE[42501]: Insufficient privilege: 7 ERROR: permission denied for
relation test
這似乎表明,GRANT ALL PRIVILEGES ON DATABASE test TO test;
是不夠的授予用戶test
所有必要的權限以執行我在此嘗試執行的操作。
我在這裏錯過了什麼?