PostgreSQL 10
我试图在发布时在docker容器中创建一个角色
我尝试过这样创建角色:
gosu postgres pg_ctl start -D /var/lib/postgresql/data
if [ "${PGUSER}" != 'postgres' ]; then
gosu postgres psql --command="CREATE USER ${PGUSER} SUPERUSER WITH PASSWORD '${PGPASSWORD}';" --echo-hidden --echo-queries
fi
gosu postgres pg_ctl stop -w -D /var/lib/postgresql/data
这仍然让我致命:角色" grafadmin"不存在
尝试使用以下命令创建数据库时
gosu postgres createdb -O grafadmin grafana
我也尝试过:
cat > ${HOMEDIR}/user.sql <<SQL
DO
$body$
BEGIN
IF NOT EXISTS (
SELECT
FROM pg_catalog.pg_user
WHERE username = '${PGUSER}') THEN
CREATE ROLE ${PGUSER} WITH SUPERUSER PASSWORD '${PGPASSWORD}';
END IF;
END
$body$;
SQL
cat ${HOMEDIR}/user.sql
gosu postgres psql --file="${HOMEDIR}/user.sql" --echo-hidden --echo-queries
我可能忽略了一些简单的事情......
答案 0 :(得分:0)
创建可以登录的用户时,请先选择CREATE USER
而不是CREATE ROLE
。它会添加一个额外的参数LOGIN
。没有它你就无法登录。
cat > ${HOMEDIR}/user.sql <<SQL
DO
$body$
BEGIN
IF NOT EXISTS (
SELECT
FROM pg_catalog.pg_user
WHERE username = '${PGUSER}') THEN
CREATE USER ${PGUSER} WITH SUPERUSER PASSWORD '${PGPASSWORD}';
END IF;
END
$body$;
SQL
cat ${HOMEDIR}/user.sql
gosu postgres psql --file="${HOMEDIR}/user.sql" --echo-hidden --echo-queries
了解更多信息,请参阅:https://www.postgresql.org/docs/10/static/sql-createuser.html