Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: PostgreSQL. Дать права пользователю.  (Прочитано 16342 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« : 18-04-2011 07:52 » 

У нас кто-нибудь разбирается в Postgres?

Создал базу, создал пользователя, дал ему права. Все по инструкции к приложению.

Код: (PostgreSQL)
CREATE USER ovirt WITH PASSWORD 'qwerty';
CREATE DATABASE ovirt;
GRANT ALL PRIVILEGES ON DATABASE ovirt to ovirt;

Запустил скрипт заполнения базы (он на ruby/rails/rake). Запускаю приложение, но оно не видит своих таблиц.

Подключаюсь к базе и на всякий случай повторяю GRANT.

ovirt=> \c ovirt postgres
Password for user postgres:
psql (8.4.7)
You are now connected to database "ovirt" as user "postgres".
ovirt=# GRANT ALL PRIVILEGES ON DATABASE ovirt to ovirt;
GRANT

Проверяю.

ovirt=# \c ovirt ovirt
Password for user ovirt:
psql (8.4.7)
You are now connected to database "ovirt" as user "ovirt".
ovirt=> select * from pools;
ERROR:  permission denied for relation pools

Ы...

Но под postgres я данные вижу.

ovirt=> \c ovirt postgres
Password for user postgres:
psql (8.4.7)
You are now connected to database "ovirt" as user "postgres".
ovirt=# select * from pools;
 id |   name   |     type      | parent_id | lft | rgt | lock_version |         created_at         |         updated_at         | load_average
----+----------+---------------+-----------+-----+-----+--------------+----------------------------+----------------------------+--------------
  1 | default  | HardwarePool  |         3 |   3 |   4 |            0 | 2011-04-15 12:44:09.587008 | 2011-04-15 12:44:09.587008 |
  2 | root     | DirectoryPool |           |   1 |   8 |            0 | 2011-04-15 12:44:09.922922 | 2011-04-15 12:44:09.922922 |
  3 | hardware | DirectoryPool |         2 |   2 |   5 |            0 | 2011-04-15 12:44:09.944328 | 2011-04-15 12:44:09.944328 |
  4 | users    | DirectoryPool |         2 |   6 |   7 |            0 | 2011-04-15 12:44:09.990695 | 2011-04-15 12:44:09.990695 |
(4 rows)

ovirt=# select table_catalog, table_schema, table_name, table_type from information_schema.tables
where table_name = 'pools' order by 2, 3;
 table_catalog | table_schema | table_name | table_type
---------------+--------------+------------+------------
 ovirt         | public       | pools      | BASE TABLE
(1 row)

Мануал очень толстый - я до него еще не добрался. Не могу понять логику.


Добавлено через 1 час, 14 минут и 1 секунду:
Сменил владельца базы. Помогло.
« Последнее редактирование: 18-04-2011 09:06 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-04-2011 10:46 » 

ИМХО: GRANT ALL PRIVILEGES не дает всех прав на таблицы БД - вроде нужно циклом по таблицам пройтись и дать права на все таблицы
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 18-04-2011 11:13 » 

Но таблицы же были созданы под юзером ovirt! И заходя через psql под ovirt я их не видел.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines