如何使用 php 查询创建具有权限的 postgres 用户

How to create a postgres user with privileges using php query

我想使用 php 在我的数据库中创建一个对 table 具有所有权限的用户,但我的代码无法正常工作。 我试过这段代码:

 $query="CREATE USER  WITH password ";
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array($utente, md5($psw)));

 $query="GRANT ALL PRIVILEGES ON match to ";
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array($utente));

然后我尝试更改它,将变量移到字符串之外,但它也不起作用。

 $query="CREATE USER " .$utente . " WITH password ". md5($psw);
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array());

 $query="GRANT ALL PRIVILEGES ON match to " . $utente;
 $result = pg_prepare($dbh, "", $query);
 $result = pg_execute($dbh, "", array());

$result 是错误的,在我的数据库中我没有得到我想要创建的新用户。

  • 用户名是一个标识符,可以用双引号括起来 "" 或保留原样。
  • 密码是文本值,必须用单引号括起来''

一般来说:传递给查询的所有值都应被视为准备好的语句变量。在这种情况下,我无法用 pg_prepare.

中参数数组中的值替换 </code> <p>所以这是一个通过 "hand" 转义的工作示例。</p> <pre><code>$utente = pg_escape_identifier('username'); $psw = pg_escape_string('pass'); $query="CREATE USER {$utente} WITH password '{$psw}'"; pg_prepare($dbh, "", $query); $result = pg_execute($dbh, "", []);