当前位置: 首页 > 面试题库 >

Django:还原(迁移)后尝试访问数据库时,权限被拒绝

令狐俊风
2023-03-14
问题内容

我有一个django 1.4应用,本地开发服务器中有一个填充的postgres 9.1数据库。成功部署后,我想将数据从本地数据库移到在线数据库,所以我使用了:

pg_dump -f dump.sql -Ox database

然后使用以下命令在服务器上还原:

psql -1 -f dump.sql database

现在尝试在线登录到网站管理员会引发“关系django_session的权限被拒绝”异常。我尝试使用/不使用-Ox开关及其所有组合来转储数据,但是没有成功。我还将删除数据库,并使用settings.py中设置的正确所有者在服务器上从头开始创建数据库。

如果我没有还原就运行普通的syndb,则一切正常。

我在这里想念什么吗?


问题答案:

事实证明,还原后应将数据库中所有对象的显式所有权授予所有者。所有者不是超级用户。仅在数据库创建时设置所有者是不够的。迁移的最终解决方案是这样的:

在客户端上:

pg_dump -f dump.sql -Ox database

在服务器上:

su postgres    
dropdb database
createdb database -O user
psql database -f dump.sql

然后设置特权:

psql database -c "GRANT ALL ON ALL TABLES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL SEQUENCES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to user;"

注意,我们可以在psql控制台中运行sql命令,但是这种形式很容易嵌入到脚本等中。



 类似资料:
  • 我正试图按照Firebase的在线指南使用Firebase实时数据库,但由于我的许可被拒绝,我无法获得数据库的任何更新。我不确定我做错了什么。我甚至设定了阅读和写作的规则。 onClickListener内的代码如下: 这是在片段中,按钮在开始片段替换事务之前首先完成这些语句。 以下是Firebase中的规则: 由于我不熟悉JSON,我也尝试过在“.write”结尾加逗号 这是stacktrace

  • 有趣的是,当我尝试它下载的sudo版本时,但是终端中不能识别。 我的节点是10.16。我的净现值是6.9。0 这是文件问题还是我的Mac?

  • 我正在heroku上做一个新项目,使用mysql(他们有一个名为JawsDB的插件,它给我一个mysql主机、用户名和密码)。(更新:我也试过使用他们的其他mysql插件ClearDB,我也遇到了同样的问题) 我可以像这样连接到数据库(并且我可以“show databases”来查看其中的内容): 问题:当我创建数据库时,我得到: 我已尝试授予所有特权,如下所示: 但这给了我: 我也尝试过创建用户

  • 码头工人群 但当我试图启动网络时,它会出现错误 订购者节点 PANIC:打开LevelDB时出错:open/var/hyperledger/production/orderer/index/lock:权限被拒绝 请帮帮忙。

  • 我对php和mySQL是完全陌生的,并且正在尝试连接到远程数据库。这是我的代码:- $result=mysql_query(“Select*FROM Constants”); while($ROW=mysql_fetch_array($result)){echo$ROW['name']; echo“ ”;} mysql_close($con); 对这个问题有什么想法吗?马特·蒂亚