Re: initdb failure with PostgreSQL 7.3.2 / Cygwin 1.3.22-1 / - Mailing list pgsql-cygwin
From | Frank Seesink |
---|---|
Subject | Re: initdb failure with PostgreSQL 7.3.2 / Cygwin 1.3.22-1 / |
Date | |
Msg-id | b98vk5$k5n$1@main.gmane.org Whole thread Raw |
In response to | Re: initdb failure with PostgreSQL 7.3.2 / Cygwin 1.3.22-1 / (Jason Tishler <jason@tishler.net>) |
Responses |
Re: initdb failure with PostgreSQL 7.3.2 / Cygwin 1.3.22-1 /
|
List | pgsql-cygwin |
Jason Tishler wrote: ... > I have confirmed the above hypothesis with the attached test program, > cit2.c. If cit2.exe is invoked as follows: ... > I will work with the cygipc maintainer to enhance cygipc to properly > handle Fast User Switching. > > Your help in debugging this problem is greatly appreciated. Jason, Thanks for all the help in this. As I promised, I did a completely clean install of Cygwin to verify this, and yep, the issue is definitely with the 'Switch User' "feature" in XP. As long as users completey sign off as one user before signing on as another, they should be ok. Might be worth a comment in the README, at least 'til it's dealt with. Now, coupla pointers for those doing clean installs of Cygwin v1.3.22-1 with PostgreSQL v7.3.2. The README instructions are fine as is. However, note that for whatever reason, the current Cygwin install (Cygwin v1.3.22-1 and setup.exe v2.340.2.5) appears to set /tmp and /usr/bin permissions incorrectly. So basically, users who are doing such an install may want to be sure to ______________________________________________________________________ 1. Install Cygwin as usual. 2. Run BASH and type the commands $ chmod 777 /tmp $ chmod 755 /usr/bin /usr/bin/* to be sure the directories/files have the right permissions. 3. Install CygIPC as per its instructions. Not sure, but might be worth copying a few of those instructions over to the PostgreSQL README, as the actual command for unzipping and untarring the file is not on the page referenced by the usual URL: http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html but rather at http://www.neuro.gatech.edu/users/cwilson/cygutils/how_to_install.html 4. Follow the instructions in /usr/doc/Cygwin/postgresql-7.3.2.README ______________________________________________________________________ WARNING: One issue I still found is that when a user reaches step #10 in the README, they may get the following: ____________________________________________________________ $ psql -U postgres template1 psql: could not connect to server: Bad file descriptor Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? ____________________________________________________________ Looking in /tmp, I found the following: ______________________________________________________________________ $ ls -al total 5512 drwxrwxrwx+ 3 Frank Users 0 May 6 13:41 . drwxrwx---+ 10 Frank Users 0 May 5 19:04 .. -rwx------ 1 postgres None 51 May 6 13:41 .s.PGSQL.5432 -rw------- 1 postgres None 32 May 6 13:41 .s.PGSQL.5432.lock -rw-rw-rw- 1 SYSTEM Administ 3916520 May 6 13:41 MultiFileMsg -rw-rw-rw- 1 SYSTEM Administ 22032 May 6 13:41 MultiFileSem -rw-rw-rw- 1 SYSTEM Administ 202768 May 6 13:41 MultiFileShm -rw------- 1 postgres None 1499136 May 6 13:41 cygipc_0 ______________________________________________________________________ Notice the permissions on the files .s.PGSQL.5432 .s.PGSQL.5432.lock are such that ONLY the owner can access them. As these files are used for internal socket communications between psql and postmaster, and step #10 shows the user being logged in with the administrative account (NOT the 'postgres' account that owns those files), psql will fail, as it is unable to read/write to these files at all. A simple $ chmod 755 /tmp/.s.PGSQL* will correct this...but ONLY for the current bootup. If the user installed PostgreSQL and CygIPC as NT services, upon reboot, postmaster will regenerate these /tmp/ files with the permissions reset to ONLY allow the owner 'postgres' access. THIS is a problem. [Jason, do you know how PostgreSQL determines these permissions, or is this yet another weird chmod issue? I don't recall this failing with older versions. Does the fact that user SYSTEM in /etc/passwd not have a path to a shell have any effect on setting permissions, as this is the user context under which 'postmaster' runs? I haven't been able to figure out how to get postmaster to fire up and have the permissions on these temp files set to something that gives users other than 'postgres' enough access so that psql via internal sockets works properly.] Oh, and if users figure this isn't a problem as they'll only access PostgreSQL via the TCP/IP port (5432 by default), and so they simply follow the above instructions and then try the command: $ psql -h localhost -U postgres template1 this will also likely fail, as users must first modify the file /usr/share/postgresql/data/postgresql.conf to permit TCP/IP connections (disabled by default). To do so, note that /usr/share/postgresql/data has its permissions set so only user 'postgres' can access the files (a reasonable security setup). So simply log off as the admin user and log back in as 'postgres', work your way down to /usr/share/postgresql/data, and use 'pico', 'vi', or the editor of your choice to modify postgresql.conf so that it contains tcpip_socket = true (it's one of the first settings in the file). Another option: Do this as step #8.1 (after initializing the database) while still logged in as 'postgres'. Once the /tmp/.s.PGSQL* permission issue is resolved, and Cygwin itself sets permissions on /tmp and /usr/bin properly, hopefully the added steps won't be necessary. But for those so inclined, note whatever issues occur, if you understand how the pieces interact, then you'll have better luck tracking the problem down. And in the case of PostgreSQL, the pieces I know to watch are * the executables (located in /usr/bin) * the data and configuration files (located in /usr/share/postgresql/data normally) * the CygIPC semaphore files (in /tmp) * and the PostgreSQL lock files (also in /tmp) Hope this information is helpful to at least one other person.
pgsql-cygwin by date: