Обсуждение: Starting PostgreSQL from a windows application
Hello,
I have installed Postures on a Windows server and it starts as a service and all is OK.
I have 2 questions:
1. I need to be able to wrap PostgreSQL as part of my application and, therefore, start it as part of my app. start-up. I know that pg_ctl start is the command, but as your documentation clearly states, PostgreSQL can only be started by a non-privileged user. Here lies my problem.
Most software needs a privileged user to start it. So how can I start PostgreSQL as a different user from the one which needs to be logged in to start the other software?
2. How do I give my users a totally new database. Is backup/restore the only mechanism?
Can I copy (parts of) the data directory, from one installation of PostgreSQL to another?
Thanks in advance for your support,
Hovik Avedian
Senior Consultant
Ebase Technology Ltd.
I have installed Postures on a Windows server and it starts as a service and all is OK.
I have 2 questions:
1. I need to be able to wrap PostgreSQL as part of my application and, therefore, start it as part of my app. start-up. I know that pg_ctl start is the command, but as your documentation clearly states, PostgreSQL can only be started by a non-privileged user. Here lies my problem.
Most software needs a privileged user to start it. So how can I start PostgreSQL as a different user from the one which needs to be logged in to start the other software?
2. How do I give my users a totally new database. Is backup/restore the only mechanism?
Can I copy (parts of) the data directory, from one installation of PostgreSQL to another?
Thanks in advance for your support,
Hovik Avedian
Senior Consultant
Ebase Technology Ltd.
Hi Hovik: > Hello, > > I have installed Postures on a Windows server and it starts as a > service and all is OK. > > I have 2 questions: > > 1. I need to be able to wrap PostgreSQL as part of my application and, > therefore, start it as part of my app. start-up. I know that pg_ctl > start is the command, but as your documentation clearly states, > PostgreSQL can only be started by a non-privileged user. Here lies my > problem. > Most software needs a privileged user to start it. So how can I start > PostgreSQL as a different user from the one which needs to be logged > in to start the other software? You would need the commands to start and stop a Windows service ("net start <ServiceName>" I believe). Does it really matter that PostgreSQL is running while the application isn't? > > 2. How do I give my users a totally new database. Is backup/restore > the only mechanism? > Can I copy (parts of) the data directory, from one installation of > PostgreSQL to another? NO!! Never touch the raw PostgreSQL data files. You could, as part of your application, build in an SQL script of your DB schema, created by "pg_dump --schema-only" that gets run through psql, or piped to an Npgsql .NET library, ODBC connection or other technology. > > Thanks in advance for your support, > > Hovik Avedian > Senior Consultant > Ebase Technology Ltd. > > > !DSPAM:14,44c7a9ac143291148420564! -- Andy Shellam <mailto:andy.shellam@mailnetwork.co.uk>, the Mail Network <http://www.mailnetwork.co.uk/> NetServe Support - we don't go the extra mile; we go the whole distance! p: (+44) 0 845 838 0879 / +44 0 7818 000834 w: www.mailnetwork.co.uk <http://www.mailnetwork.co.uk/> e: support@mailnetwork.co.uk <mailto:support@mailnetwork.co.uk>
> I have installed Postures on a Windows server and it starts as a > service and all is OK. > > I have 2 questions: > > 1. I need to be able to wrap PostgreSQL as part of my application > and, therefore, start it as part of my app. start-up. I know that > pg_ctl start is the command, but as your documentation clearly > states, PostgreSQL can only be started by a non-privileged user. > Here lies my problem. > Most software needs a privileged user to start it. So how can I > start PostgreSQL as a different user from the one which needs to be > logged in to start the other software? This will be fixed in 8.2 (it's fixed in the development snapshots). You can find backported versions of initdb and pg_ctl on http://people.planetpostgresql.org/mha/index.php?/archives/93-Backported -run-as-admin-tools.html. I would not recommend these for a big production deployment, because they are *not* official PostgreSQL binaries (the database backend still is, though, so it *should* be safe. But they have not been as well tested as postgresql-proper). But for a pilot install that will go to 8.2, definitely worth using. > 2. How do I give my users a totally new database. Is backup/restore > the only mechanism? > Can I copy (parts of) the data directory, from one installation of > PostgreSQL to another? Backup/restore, or you can create a manual sql script that you pass to psql that generates all your objects. //Magnus