You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell环境下为Portainer创建新的管理员用户?

如何在Shell环境下为Portainer创建新的管理员用户?

嘿,这个问题我刚好有实操经验!既然你握着宿主机的root权限,完全可以通过直接操作Portainer的数据库来新增管理员,这样既不会碰原管理员的密码,也不会影响其他可能在使用系统的人。下面给你一步步拆解操作:

  • 第一步:找到Portainer的数据库文件
    Portainer默认用SQLite存储数据,核心文件是portainer.db。先通过docker ps找到Portainer容器的ID或名称,接着用docker inspect <容器ID/容器名>查看它的挂载信息,找到数据库在宿主机上的路径。比如默认情况下,这个路径通常是/var/lib/docker/volumes/portainer_data/_data/portainer.db。

  • 第二步:务必先备份数据库
    这一步绝对不能省!操作数据库前先备份,避免失误搞坏现有数据:

    cp /path/to/portainer.db /path/to/portainer.db.backup
    

    把上面的/path/to/替换成你实际找到的数据库路径。

  • 第三步:生成密码的bcrypt哈希值
    Portainer用bcrypt加密用户密码,你得先把新管理员的密码转换成对应的哈希值。如果宿主机装了Python3和bcrypt库,直接在shell里跑这条命令(把your-new-password换成你想设置的密码):

    python3 -c "import bcrypt; print(bcrypt.hashpw(b'your-new-password', bcrypt.gensalt()).decode())"
    

    执行后会输出一串哈希字符串,把它复制下来备用。如果没装bcrypt,先装一下:Debian/Ubuntu用apt install python3-bcrypt,CentOS/RHEL用yum install python3-bcrypt。

  • 第四步:操作SQLite数据库插入新用户
    先确保宿主机装了sqlite3工具,没装的话:Debian/Ubuntu用apt install sqlite3,CentOS/RHEL用yum install sqlite3。然后进入数据库:

    sqlite3 /path/to/portainer.db
    

    进入sqlite交互环境后,执行下面的SQL语句(替换掉new-admin为你的新用户名,your-hash-string为刚才生成的哈希值,邮箱可以留空或者填实际邮箱):

    INSERT INTO users (Username, PasswordHash, Role, Email, CreatedAt, UpdatedAt)
    VALUES ('new-admin', 'your-hash-string', 1, 'admin@example.com', strftime('%s','now'), strftime('%s','now'));
    

    执行完输入.exit退出sqlite交互环境。

  • 第五步:重启Portainer容器让新用户生效
    最后重启Portainer容器,新管理员账号就能用了:

    docker restart <容器ID/容器名>
    

完成以上步骤后,你就可以用新创建的管理员账号登录Portainer啦,完全不会影响原有的用户和配置。

备注:内容来源于stack exchange,提问作者Thorsten Schöning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:34:29