重置postgresql

重置postgresql

我想让postgresql恢复到原来的空状态。

在 Ubuntu 上:

$ sudo service postgresql stop
$ sudo apt-get purge postgresql*

其次是

$ sudo apt-get install postgresql

这正是我想要的,但有没有不那么残酷的方法来做同样的事情?

我实际上想要做的是检查我是否可以从头开始重新创建数据库。

答案1

使用初始化数据库,创建一个新的 PostgreSQL 数据库集群。其中还包括 postgresql.conf 和 pg_hba.conf。

答案2

首先,我必须猜一下你所说的“重置”是什么意思!

如果您指的是数据,那么您可以使用已知的 SQL 语句删除所有数据库drop database

如果您指的是配置,我认为除非您有旧的备份,否则删除它并使用新的配置文件重新安装它是一个好方法。

答案3

就像 Khaled 所说的那样,您只需发出drop databasedrop user等语句即可清除对初始数据库所做的所有更改。

对于数据库配置,您可能只对将文件置于版本控制之下(git、svn &co)感兴趣。

对于 Subversion,你可以做这样的事情:

安装 Subversion

$ sudo apt-get install subversion

设置存储库

$ mkdir ~/pgsqlsvn
$ svnadmin create 

停止服务

$ sudo service postgresql stop

最初填充存储库:

$ cd /etc/postgresql
$ sudo svn co file:///home/you/pgsqlsvn ./
$ sudo svn add * 
$ sudo svn commit 

之后恢复配置

每次你需要重置到初始数据库配置时,你只需

$ sudo svn update /etc/postgresql -r 1

答案4

为了扩展 Frank 的回答,我已完成以下操作以在 Ubuntu 14.04 LTS 上重置 PostgreSQL:

sudo service postgresql stop
sudo bash # Root permissions to move the data folder
mv /var/lib/postgresql/9.3/main ~ # Move the database for safety
logout
sudo -u postgres bash
mkdir /var/lib/postgresql/9.3/main
/usr/lib/postgresql/9.3/bin/initdb -D /var/lib/postgresql/9.3/main
sudo service postgresql start

请注意,它initdb不在系统路径中,如果您尝试运行它,Ubuntu 会建议您安装扩展包。但是,如果您安装了服务器本身,该命令仍然可用 - 只是隐藏了。

我希望这可以针对其他版本的 PostgreSQL 进行修改 - 只需对路径中的版本号进行一些修改即可。

我可能可以通过以身份登录来缩短此过程,以便postgres移动旧数据库并创建新数据库。请注意,initdb将拒绝以 root 身份运行,因此以身份运行postgres是有意义的。

(这种重置对于从其他系统(例如 MySQL)转到此数据库平台的人们很有用。一旦添加了角色、用户、授权、默认权限等,就很难记住哪个命令有什么效果。擦除并重试可以消除所有疑虑)。

相关内容