背景信息
我正在编写一个用PostgreSQL作为后端数据库的ASP.NET Core 2.1.0编写的应用程序。我正在使用EF Core作为ORM。
该应用程序具有身份验证/授权需求,因此在我的应用程序启动时,我正在使用管理员用户帐户播种数据库。在本地,一切正常。
我现在希望将应用程序部署到服务器。我已经部署了代码,并且已经使用EF Core的迁移命令来获取用于在远程数据库上创建表的脚本。情况也很好。
现在的问题是种子数据。我不知道将种子数据移至生产数据库的最佳方法是什么。
到目前为止我做了什么?
通过pgAdmin,我创建了数据库中记录的普通备份。这是我所做的screencast of exactly how,我不确定这是否正确,但是生成的脚本“看起来不错”。
然后我通过SSH登录到生产服务器,并将用户切换到postgres用户,并运行以下命令:
psql -f phoneden-data.sql "Phoneden-Db-C3del"
这似乎可行,我运行了以下select语句,然后可以看到我的记录:
SELECT * FROM "AspNetUsers";
我的记录已经存在,但是当我尝试以管理员用户身份登录时,我不能,它说它无法验证我的登录详细信息。
所以我将数据从本地Db移至生产Db的方式有些问题。
我在做什么错了?
答案 0 :(得分:1)
原来是权限问题。 Postgres数据库的所有者拥有0个特权,在授予了所需的各种特权之后,所有特权都开始起作用。