首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查postgres用户是否存在?

如何检查postgres用户是否存在?
EN

Stack Overflow用户
提问于 2011-12-18 02:00:00
回答 3查看 93.9K关注 0票数 97

createuser允许在PostgreSQL中创建用户(角色)。有没有一种简单的方法来检查该用户(Name)是否已经存在?否则,createuser返回一个错误:

createuser: creation of new role failed: ERROR:  role "USR_NAME" already exists

更新:解决方案最好是可以从shell中执行,这样更容易在脚本中实现自动化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-18 02:04:13

SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'

在命令行方面(感谢Erwin):

psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"

如果找到,则返回1,否则不生成任何其他值。

这就是:

psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'" | grep -q 1 || createuser ...
票数 171
EN

Stack Overflow用户

发布于 2016-08-19 17:43:15

遵循与check if a db exists相同的想法

psql -t -c '\du' | cut -d \| -f 1 | grep -qw <user_to_check>

您可以在脚本中使用它,如下所示:

if psql -t -c '\du' | cut -d \| -f 1 | grep -qw <user_to_check>; then
    # user exists
    # $? is 0
else
    # ruh-roh
    # $? is 1
fi
票数 9
EN

Stack Overflow用户

发布于 2019-01-11 20:34:43

psql -qtA -c "\du USR_NAME" | cut -d "|" -f 1

[[ -n $(psql -qtA -c "\du ${1}" | cut -d "|" -f 1) ]] && echo "exists" || echo "does not exist"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8546759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档