postgresql - golang -- 使用用户名和密码连接到 postgresql 时无法创建用户

标签 postgresql go

我正在试用 Go Web Programming 一书中的 Chitchat go 应用程序。原始版本有效。当我使用用户和密码访问postgresql时,它可以连接到db但无法创建新用户,如下所示:

func db() (database *sql.DB) {
    database, err := sql.Open("postgres", "dbname=chitchat user=tom password=tomahawk sslmode=disable")
    if err != nil {
        log.Fatal(err)
        fmt.Println("Db connection failed")
    }
    return
}

这是 Github 上的完整代码.

不过,我找到了一个临时解决方案,但它需要授予对 chitchat 数据库中所有序列的访问权限。即使在我申请了

GRANT ALL PRIVILEGES ON DATABASE chitchat to tom;

它仍然需要对每个表序列进行手动授权。以下是采取的步骤:

1) 授予对数据库的访问权限

GRANT all privileges on database chitchat to tom;

2) 列出chitchat数据库中的所有序列

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

3) 授予他们每个人的访问权限

GRANT all privileges on sequence users_id_seq to tom;
GRANT all privileges on sequence threads_id_seq to tom;
GRANT all privileges on sequence posts_id_seq to tom;
GRANT all privileges on sequence sessions_id_seq to tom;

有没有更好的方法?提前致谢。

最佳答案

只有 super 用户可以在您的 postgres 数据库中创建用户。所以让它成为..

用 super 用户更改用户 tom;

关于postgresql - golang -- 使用用户名和密码连接到 postgresql 时无法创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730703/

相关文章:

go - 为什么这个树行走功能会死锁?

go - 我可以从 panic 中恢复过来,处理错误,然后再次 panic 并保留原始堆栈跟踪吗?

.net - 命令失败后 Npgsql 不提交事务

opencv - 寻找拥有 GOCV 的人

go - 我如何检测死锁?

json - Swift,错误(参数标签 '(node:)' 与任何可用的重载不匹配),rest in Vapor,模型 Controller

java - GAE 实例是否限制为 10 个并发请求?

sql - 如何迭代点以将线串拆分为 PgSQL 中的部分?

macos - 无法通过 Homebrew 软件在我的 mac os x 机器上安装 postgresql

sql - 可以在 PostgreSQL 中检查数组的 IS NOT NULL 吗?