Forgot to cc the list on the resolution.

-dre

On Sep 16, 2013, at 10:47 AM, Andre LaBranche <d...@apple.com> wrote:

> 
> On Sep 14, 2013, at 9:41 PM, Scott Cherf <ch...@ambient-light.com> wrote:
> 
>> Hi Andre -
>> 
>> Thanks for the step by step guide, it all makes sense and like you I don't 
>> have postgres installed systemwide either. In my install it's in the 
>> directory above the CalendarServer (version 4.2) in 
>> CalendarServer/tags/release. Using the commands from that location gives me 
>> an error:
>> 
>> psql: could not connect to server: No such file or directory
>>      Is the server running locally and accepting
>>      connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 
>> 
>> 
>> The CalendarServer is running and so is postgres but the socket mentioned in 
>> the error doesn't exist. Is there a way from me to tell psql how to connect 
>> to the DB?
> 
> Yep; that /tmp location is the default for postgres, but we stash it 
> someplace a bit more unique. Start the service, then get a list of running 
> postgres processes:
> 
> ps auxww | grep -i postgres
> 
> You should see one something like this:
> 
> ... 
> /Volumes/whatever/Users/andre/work/icalserver/trunk/postgresql-9.2.4/_root/bin/postgres
>  -c listen_addresses= -k /tmp/ccs_postgres_6c305e5a2a6852bf7f384e044de707ec 
> -c shared_buffers=49 -c max_connections=33 -c standard_conforming_strings=on
> 
> The value after the -k switch is the path to our postgres socket file, which 
> you can use as the value for the -h option of postgres command line tools. 
> For example:
> 
> andre@xomg[postgresql-9.2.4/_root]./bin/psql -U caldav -h 
> /tmp/ccs_postgres_6c305e5a2a6852bf7f384e044de707ec --list
>                                List of databases
>    Name    | Owner  | Encoding |   Collate   |    Ctype    | Access 
> privileges 
> -----------+--------+----------+-------------+-------------+-------------------
>  caldav    | caldav | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
>  postgres  | caldav | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
>  template0 | caldav | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/caldav        
> +
>            |        |          |             |             | caldav=CTc/caldav
>  template1 | caldav | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/caldav        
> +
>            |        |          |             |             | caldav=CTc/caldav
> (4 rows)
> 
> HTH,
> -dre
> 
> 
>> 
>> This is a MacOS 10.6.8 installation.
>> 
>> Regards,
>> Scott.
>> 
>> On Sep 13, 2013, at 11:30 AM, Andre LaBranche wrote:
>> 
>>> 
>>> On Sep 13, 2013, at 8:26 AM, Scott Cherf <ch...@ambient-light.com> wrote:
>>> 
>>>> Does anyone have a cheap trick for adding a "role" to the postgres DB 
>>>> CalendarServer uses? I installed the server under one user ID and wanted 
>>>> to move it to another but had to export the data, reinstall then import so 
>>>> I could run it with different permissions. There must be a simple way to 
>>>> just add a new role to the DB but it wasn't obvious?
>>> 
>>> Official docs are here: http://www.postgresql.org/docs/9.2
>>> 
>>> It’s hard for me to predict what your exact steps would need to be, but one 
>>> simple approach would be:
>>> 
>>> * create the new user (role) in postgres
>>> * grant the new user the same rights as the existing user
>>> 
>>> Example below. Note that in this example, I don’t have postgres installed 
>>> system-wide (it’s installed to ~/pg), which is why I’m saying ./bin/psql 
>>> instead of just psql. YMMV. I’m also not setting any passwords for the new 
>>> role; if your postgres service can be reached over the network, you may 
>>> want passwords.
>>> 
>>> # First, list the current roles.
>>> 
>>> {38} admin@linuxbuilder [~/pg] % ./bin/psql template1 -c '\du'
>>>                              List of roles
>>>  Role name |                   Attributes                   | Member of 
>>> -----------+------------------------------------------------+-----------
>>>  admin     | Superuser, Create role, Create DB, Replication | {}
>>>  caldav    | Superuser, Create role, Create DB              | {}
>>> 
>>> Let’s assume caldav is the ‘old’ account.
>>> 
>>> 
>>> # Create a new role, validate it
>>> 
>>> {39} admin@linuxbuilder [~/pg] % ./bin/createuser newman      
>>> {40} admin@linuxbuilder [~/pg] % ./bin/psql template1 -c '\du'
>>>                              List of roles
>>>  Role name |                   Attributes                   | Member of 
>>> -----------+------------------------------------------------+-----------
>>>  admin     | Superuser, Create role, Create DB, Replication | {}
>>>  caldav    | Superuser, Create role, Create DB              | {}
>>>  newman    |                                                | {}
>>> 
>>> 
>>> # Give newman the same access as caldav, validate it.
>>> 
>>> {41} admin@linuxbuilder [~/pg] % ./bin/psql template1 -c 'grant caldav to 
>>> newman'
>>> GRANT ROLE
>>> {42} admin@linuxbuilder [~/pg] % ./bin/psql template1 -c '\du'              
>>>      
>>>                              List of roles
>>>  Role name |                   Attributes                   | Member of 
>>> -----------+------------------------------------------------+-----------
>>>  admin     | Superuser, Create role, Create DB, Replication | {}
>>>  caldav    | Superuser, Create role, Create DB              | {}
>>>  newman    |                                                | {caldav}
>>> 
>>> Note that newman is now shown as a member of caldav. This means newman is 
>>> allowed to do all the things that the caldav role can do. You don’t need to 
>>> delete the caldav role.
>>> 
>>> Also, be advised that postgres roles and permissions are not at all related 
>>> to filesystem permissions or system user accounts; except that if you don’t 
>>> supply a postgres username when connecting, it will pick your current 
>>> system user account name as the default.
>>> 
>>> HTH,
>>> -dre
>> 
>> Regards,
>> Scott Cherf
>> 
>> Villa Montagne Equestrian B&B
>> 
>> 28495 Big Basin Way,
>> Boulder Creek, CA
>> 95006
>> 
>> www.villamontagne.us.com
>> 
> 

_______________________________________________
calendarserver-users mailing list
calendarserver-users@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/calendarserver-users

Reply via email to