I want to bring postgresql back to its original empty state.
On Ubuntu:
$ sudo service postgresql stop
$ sudo apt-get purge postgresql*
Followed by
$ sudo apt-get install postgresql
Does what I want, but is there any less brutal way of doing the same thing?
What I actually want to do is to check that I can re-create my database from scratch.
Use initdb, creates a new PostgreSQL database cluster. That includes postgresql.conf and pg_hba.conf as well.
First, I have to guess what you mean by "reset"!
If you mean the data, you can just drop all databases using the known SQL statement
drop database
.If you mean the configuration, I think it is a good way to remove and re-install it with a fresh config files unless you have an old backup.
Like Khaled said, you could just issue
drop database
,drop user
, etc. Statements to clean up all changes made to the initial Database.For the Database Configuration you might be interested in just putting the files under version control (git,svn &co).
For Subversion you could do something like this:
Install Subversion
Setup the Repository
Stop the Service
Initially fill the repository:
Reverting the Configuration Afterwards
Everytime you need to reset to the initital Database configuration you can just
To expand on Frank's answer, I have done the following to reset PostgreSQL on Ubuntu 14.04 LTS:
Note that
initdb
is not in the system path, and if you try to run it, Ubuntu will suggest you need to install an extension package. However, if you have the server itself installed, the command is still available - just hidden.I expect this can be modified for other versions of PostgreSQL - just tinker a bit with the version number in the paths.
I could probably have shortened this process a bit by logging on as
postgres
for both moving the old database and creating the new one. Note thatinitdb
will refuse to run as root, so running aspostgres
makes sense.(A reset of this kind is useful for folks coming to this database platform from other systems, such as MySQL. Once you've added roles, users, grants, default privs etc, it is hard to remember what command had what effect. Wiping and trying again removes all doubt).