如何在 postgresql 中为数据库创建用户? [关闭]

Posted

技术标签:

【中文标题】如何在 postgresql 中为数据库创建用户? [关闭]【英文标题】:How to create user for a db in postgresql? [closed] 【发布时间】:2012-06-07 08:13:54 【问题描述】:

我已经在我的 CentOS 服务器上安装了 PostgreSQL 8.4,并从 shell 连接到 root 用户并访问 PostgreSQL shell。

我在 PostgreSQL 中创建了数据库和用户。

尝试从我的 php 脚本连接时,它显示身份验证失败。

如何创建新用户以及如何向他们授予特定数据库的权限?

【问题讨论】:

错误信息到底是什么?你可以从命令行通过psql 登录吗? 这到底是怎么因为跑题而被关闭的? @BenCreasy 可能是因为它更适合 serverfault.com 或超级用户? @knocte 所以我想你是说它低于 6,它有一个例外“除非它们直接涉及编程或编程工具”,我想 postgres 不算作编程工具?有趣的拍摄 【参考方案1】:

使用密码创建用户:

http://www.postgresql.org/docs/current/static/sql-createuser.html

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

然后授予特定数据库的用户权限:

http://www.postgresql.org/docs/current/static/sql-grant.html

例子:

grant all privileges on database db_name to someuser;

【讨论】:

我已经这样做了:用密码'ravi'创建用户ravi;将数据库 nominatim 的所有权限授予 ravi;但我无法连接以下 PHP 代码: @Darji Krunal:PHP 错误是什么,它是什么样子的? 授予所有权限* ...【参考方案2】:

来自 CLI:

$ su - postgres 
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q

PHP(在 localhost 上测试过,它按预期工作):

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);

【讨论】:

对于 Ubuntu,它应该是 sudo su - postgres 对于 Ubuntu 应该是:sudo -u postgres psql 我认为发出命令的最便携方式是:psql -U postgres -c "CREATE ROLE..." 请记住,您在 shell 中键入和运行的所有内容通常都会在 shell 历史记录中结束,包括您选择的密码。 注意命令中'" 之间的区别!

以上是关于如何在 postgresql 中为数据库创建用户? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PostgreSQL 9.5 中为“int”数据类型设置大小限制

如何在 PostgreSQL 9.5 中为“int”数据类型设置大小限制

如何在docker中为postgresql创建postgis扩展?

在 PostgreSQL 中为临时变量分配特定的数据类型

在 PostgreSQL 中为特定模式和表所有者创建表的过程是啥

在 Elastic Beanstalk Postgresql 中创建 Django 超级用户