On 11/09/2018 17:10, Peter Eisentraut wrote: > On 07/09/2018 17:59, Maksim Milyutin wrote: >> those directories was that user). The error message "could not set >> permissions on directory ..." disoriented that user. The need to change >> the owner of those directories came after careful reading of >> documentation. I think it would be helpful to show the proposed hint to >> more operatively resolve the problem. > > I think it might be worth clarifying the documentation instead. I'm > looking at the CREATE TABLESPACE reference page and it's not super clear > on first reading.
How about the attached patch? -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From eb0796921b6ebfe2375037d903a081a7b8f45c0b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <pete...@gmx.net> Date: Mon, 24 Sep 2018 14:47:09 +0200 Subject: [PATCH] doc: Clarify CREATE TABLESPACE documentation Be more specific about when and how to create the directory and what permissions it should have. --- doc/src/sgml/ref/create_tablespace.sgml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/src/sgml/ref/create_tablespace.sgml b/doc/src/sgml/ref/create_tablespace.sgml index 18fa5f0ebf..c621ec2c6b 100644 --- a/doc/src/sgml/ref/create_tablespace.sgml +++ b/doc/src/sgml/ref/create_tablespace.sgml @@ -92,7 +92,8 @@ <title>Parameters</title> <listitem> <para> The directory that will be used for the tablespace. The directory - should be empty and must be owned by the + must exist (<command>CREATE TABLESPACE</command> will not create it), + should be empty, and must be owned by the <productname>PostgreSQL</productname> system user. The directory must be specified by an absolute path name. </para> @@ -137,15 +138,23 @@ <title>Notes</title> <title>Examples</title> <para> - Create a tablespace <literal>dbspace</literal> at <literal>/data/dbs</literal>: + To create a tablespace <literal>dbspace</literal> at file system location + <literal>/data/dbs</literal>, first create the directory using operating + system facilities and set the correct ownership: +<programlisting> +mkdir /data/dbs +chown postgres:postgres /data/dbs +</programlisting> + Then issue the tablespace creation command inside + <productname>PostgreSQL</productname>: <programlisting> CREATE TABLESPACE dbspace LOCATION '/data/dbs'; </programlisting> </para> <para> - Create a tablespace <literal>indexspace</literal> at <literal>/data/indexes</literal> - owned by user <literal>genevieve</literal>: + To create a tablespace owned by a different database user, use a command + like this: <programlisting> CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes'; </programlisting></para> -- 2.19.0