<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629678</guid>
        <pubDate>Wed, 14 Oct 2015 20:30:28 +0000</pubDate>
        <title>разные пользователи и доступ</title>
        <link>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629678</link>
        <description><![CDATA[HighMan: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406357&view=findpost&p=3629677'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grgdvo &#064; <time class="tag-quote__quoted-time" datetime="2015-10-14T23:28:11+03:00">14.10.15, 20:28</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406357&view=findpost&p=3629644'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>HighMan &#064; <time class="tag-quote__quoted-time" datetime="2015-10-14T14:57:29+00:00">14.10.15, 14:57</time></span><div class='quote '>Простите бестолкового, а как для схем предоставить привилегии?</div></div><br>
В конце я неправ, забываешь как оно работает, когда не пользуешься.<br>
Для схемы (как объекта) тоже будет недостаточно прав :(<br>
<br>
Нужны команды конкретно на таблицу или ALL TABLES IN SCHEMA.<br>
И права нужно раздавать после создания таблицы, либо умудриться использовать ALTER DEFAULT PRIVILEGES.<br>
<br>
Для вашего примера скорее всего правильный порядок будет такой<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U postgres</div><div class="code_line">postgres=# CREATE USER user1 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# CREATE USER user2 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# CREATE DATABASE db1;</div><div class="code_line">postgres=# \q</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
db1 создается со схемой public по умолчанию, в которой пользователи уже могут создавать таблицы (и т.д.), поэтому user1 и user2 смогут создать свои объекты базы<br>
     <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U user1 db1</div><div class="code_line">db1=# CREATE SEQUENCE user_ids;</div><div class="code_line">db1=# CREATE TABLE users (id INTEGER PRIMARY KEY DEFAULT NEXTVAL(&#39;user_ids&#39;), login CHAR(64), password CHAR(64));</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&#39;u1&#39;, &#39;p1&#39;);</div><div class="code_line">db1=# \q</div></ol></div></div></div></div><br>
<br>
теперь к user_ids и users доступ имеет только user1, ибо он владелец этих объектов.<br>
Назначаем права user2<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U postgres db1</div><div class="code_line">db1=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user2;</div><div class="code_line">db1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user2;</div></ol></div></div></div></div><br>
<br>
Теперь user2 имеет все привилегии на таблицы и последовательнсти, которые УЖЕ БЫЛИ СОЗДАНЫ на данный момент в схеме.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U user2 db1</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&#39;u2&#39;, &#39;p2&#39;);</div></ol></div></div></div></div></div></div><br>
Спасибо большое&#33;<br>
Постараюсь завтра проверить&#33;]]></description>
        <author>HighMan</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629677</guid>
        <pubDate>Wed, 14 Oct 2015 20:28:11 +0000</pubDate>
        <title>разные пользователи и доступ</title>
        <link>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629677</link>
        <description><![CDATA[grgdvo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406357&view=findpost&p=3629644'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>HighMan &#064; <time class="tag-quote__quoted-time" datetime="2015-10-14T14:57:29+00:00">14.10.15, 14:57</time></span><div class='quote '>Простите бестолкового, а как для схем предоставить привилегии?</div></div><br>
В конце я неправ, забываешь как оно работает, когда не пользуешься.<br>
Для схемы (как объекта) тоже будет недостаточно прав :(<br>
<br>
Нужны команды конкретно на таблицу или ALL TABLES IN SCHEMA.<br>
И права нужно раздавать после создания таблицы, либо умудриться использовать ALTER DEFAULT PRIVILEGES.<br>
<br>
Для вашего примера скорее всего правильный порядок будет такой<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U postgres</div><div class="code_line">postgres=# CREATE USER user1 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# CREATE USER user2 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# CREATE DATABASE db1;</div><div class="code_line">postgres=# \q</div></ol></div></div></div></div><br>
<br>
db1 создается со схемой public по умолчанию, в которой пользователи уже могут создавать таблицы (и т.д.), поэтому user1 и user2 смогут создать свои объекты базы<br>
     <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U user1 db1</div><div class="code_line">db1=# CREATE SEQUENCE user_ids;</div><div class="code_line">db1=# CREATE TABLE users (id INTEGER PRIMARY KEY DEFAULT NEXTVAL(&#39;user_ids&#39;), login CHAR(64), password CHAR(64));</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&#39;u1&#39;, &#39;p1&#39;);</div><div class="code_line">db1=# \q</div></ol></div></div></div></div><br>
<br>
теперь к user_ids и users доступ имеет только user1, ибо он владелец этих объектов.<br>
Назначаем права user2<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U postgres db1</div><div class="code_line">db1=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO user2;</div><div class="code_line">db1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user2;</div></ol></div></div></div></div><br>
<br>
Теперь user2 имеет все привилегии на таблицы и последовательнсти, которые УЖЕ БЫЛИ СОЗДАНЫ на данный момент в схеме.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">~ # psql -U user2 db1</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&#39;u2&#39;, &#39;p2&#39;);</div></ol></div></div></div></div>]]></description>
        <author>grgdvo</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629644</guid>
        <pubDate>Wed, 14 Oct 2015 14:57:29 +0000</pubDate>
        <title>разные пользователи и доступ</title>
        <link>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629644</link>
        <description><![CDATA[HighMan: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406357&view=findpost&p=3629619'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grgdvo &#064; <time class="tag-quote__quoted-time" datetime="2015-10-14T12:36:36+00:00">14.10.15, 12:36</time></span><div class='quote '>Опция ALL PRIVILEGES для DATABASE подразумевает CREATE, CONNECT и кажется TEMP привилегии для базы данных.<br>
Так вот CREATE позволяет создавать ТОЛЬКО схемы в рамках базы данных.<br>
А для схемы вы не предоставили прав, соответственно получили ошибку доступа.</div></div><br>
<br>
Простите бестолкового, а как для схем предоставить привилегии?<br>
Если, возможно, напишите запрос на основе моего примера.<br>
Спасибо&#33;]]></description>
        <author>HighMan</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629619</guid>
        <pubDate>Wed, 14 Oct 2015 12:36:36 +0000</pubDate>
        <title>разные пользователи и доступ</title>
        <link>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629619</link>
        <description><![CDATA[grgdvo: Опция ALL PRIVILEGES для DATABASE подразумевает CREATE, CONNECT и кажется TEMP привилегии для базы данных.<br>Так вот CREATE позволяет создавать ТОЛЬКО схемы в рамках базы данных.<br>А для схемы вы не предоставили прав, соответственно получили ошибку доступа.]]></description>
        <author>grgdvo</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629540</guid>
        <pubDate>Tue, 13 Oct 2015 19:17:53 +0000</pubDate>
        <title>разные пользователи и доступ</title>
        <link>https://forum.sources.ru/index.php?showtopic=406357&amp;view=findpost&amp;p=3629540</link>
        <description><![CDATA[HighMan: Здравствуйте, Господа&#33;<br>
Сразу предупрежу: в PostgreSQL я пока еще совсем новичок.<br>
Опишу проблему на примере, думаю так станет понятнее.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#psql</div><div class="code_line">postgres=# CREATE USER user1 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# CREATE DATABASE db1;</div><div class="code_line">postgres=# GRANT ALL PRIVILEGES ON DATABASE db1 TO user1;</div><div class="code_line">postgres=# CREATE USER user2 WITH password &#39;password&#39;;</div><div class="code_line">postgres=# GRANT ALL PRIVILEGES ON DATABASE db1 TO user2;</div><div class="code_line">postgres=# \q</div><div class="code_line">&nbsp;</div><div class="code_line">#psql -U user1 db1</div><div class="code_line">db1=# CREATE SEQUENCE user_ids;</div><div class="code_line">db1=# CREATE TABLE users (id INTEGER PRIMARY KEY DEFAULT NEXTVAL(&#39;user_ids&#39;), login CHAR(64), password CHAR(64));</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&quot;u1&quot;, &quot;p1&quot;);</div><div class="code_line">db1=# \q</div><div class="code_line">&nbsp;</div><div class="code_line">#psql -U user2 db1</div><div class="code_line">db1=# INSERT INTO users (login, password) VALUES (&quot;u2&quot;, &quot;p2&quot;);</div><div class="code_line">ОШИБКА: &nbsp;нет доступа к отношению users</div></ol></div></div></div></div><br>
<br>
Вот тут я в растерянности. Оба пользователя ALL PRIVILEGES для db1, но второй, т.е. не создатель таблицы, добавлять записи не может.<br>
Как это побороть?]]></description>
        <author>HighMan</author>
        <category>Базы данных: SQL</category>
      </item>
	
      </channel>
      </rss>
	