在 docker 中启动 keycloak 时出现“您需要本地访问权限才能创建初始管理员用户”错误

gar*_*gar 9 postgresql docker keycloak

在 docker 上启动 keycloak 服务器时,我收到此错误:“您需要本地访问权限才能创建初始管理员用户”。但是在本地运行它,它工作正常。

另一件事是,如果我想使用 Postgres db 而不是嵌入式 H2 db,那么我应该创建表来存储用户、客户端和范围等吗?如果是,我怎样才能获得所有表的数据库结构?

您需要本地访问权限才能创建初始管理员用户

Pie*_*rre 12

您可以通过提供环境变量KEYCLOAK_USERKEYCLOAK_PASSWORD以下内容让容器创建管理员用户:

docker run -e KEYCLOAK_USER=<USERNAME> -e KEYCLOAK_PASSWORD=<PASSWORD> jboss/keycloak
Run Code Online (Sandbox Code Playgroud)

或者将帐户添加到现有容器(之后需要重新启动服务或容器):

docker exec <CONTAINER> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>
Run Code Online (Sandbox Code Playgroud)

或者重启容器 docker restart <container>

或者重启服务(@Madeo 的回答)

docker exec -it <container> /opt/jboss/keycloak/bin/jboss-cli.sh --connect --command=:reload

以上命令来自Docker Hub 上的Keycloak Docker 镜像页面。

关于您的数据库问题,您不必手动提供表格。您可以参考Keycloak 文档的6章(第6.4 节、第6.5 节)了解如何配置 PostgreSQL 数据库的详细信息。


小智 8

  • 打开容器 bash 控制台
cd /keycloak/bin
bash ./add-user-keycloak.sh -u admin
Run Code Online (Sandbox Code Playgroud)
  • 输入所需密码

  • 重启容器

  • 前往以下网址进行登录

http://dockerIP:8080/auth/admin/
Run Code Online (Sandbox Code Playgroud)


Her*_*lez 6

上述提示均无效。最后我使用环境变量:

KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml 的完整代码:

version: '3'

volumes:
  postgres_data:
      driver: local

services:
  postgres:
      image: postgres
      volumes:
        - postgres_data:/var/lib/postgresql/data
      environment:
        POSTGRES_DB: keycloak
        POSTGRES_USER: keycloak
        POSTGRES_PASSWORD: password
  keycloak:
      image: quay.io/keycloak/keycloak:17.0.1
      environment:
        DB_VENDOR: POSTGRES
        DB_ADDR: postgres
        DB_DATABASE: keycloak
        DB_USER: keycloak
        DB_SCHEMA: public
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: admin
        KEYCLOAK_ADMIN: admin
        KEYCLOAK_ADMIN_PASSWORD: admin
      entrypoint: ["/opt/keycloak/bin/kc.sh", "start-dev"]
      ports:
        - 8080:8080
      depends_on:
        - postgres
Run Code Online (Sandbox Code Playgroud)

  • 请注意,自版本 17 以来,环境变量已被重命名。以前的变量是“KEYCLOAK_USER”和“KEYCLOAK_PASSWORD”。从版本 17 开始,它们是“KEYCLOAK_ADMIN”和“KEYCLOAK_ADMIN_PASSWORD”。 (7认同)

Pau*_*aul 5

对于Keycloak 17,您可以lynx在本地使用创建管理员用户:

lynx localhost:8080
Run Code Online (Sandbox Code Playgroud)

然后只需Tab导航字段并按下Enter按钮Create

   Keycloak

Welcome to Keycloak

[user.png] Administration Console

   Please create an initial admin user to get started.

   Username ____________________

   Password ____________________

   Password confirmation ____________________
   (BUTTON) Create

[user.png] Administration Console

   Centrally manage all aspects of the Keycloak server

[admin-console.png] Documentation

   User Guide, Admin REST API and Javadocs

[keycloak-project.png] Keycloak Project

[mail.png] Mailing List

[bug.png] Report an issue

   JBoss and JBoss Community
Run Code Online (Sandbox Code Playgroud)