Postgre локальная установка (local setup)

Postgre локальная установка (local setup)

05.09.2017 12:19:48 Просмотров 31 Источник

Привет! Столкнулся с проблемой, которую не могу понять, и как следствие, решить. Устанавливал на ubuntu Rails и всё к нему прилагающееся. И требовалось мне установить postgreSQL, и сделать это локально. И на этом моменте всё плохо. Следуя инструкциям, добавил:

$ export DATABASE_URL=postgres:///$(whoami)

whoami - в моём случае lord. После этого мне нужно:

$ bundle exec rake db:create db:migrate

Ожидаемый результат:

== 20140707111715 CreateWidgets: migrating ====================================
-- create_table(:widgets)
   -> 0.0076s
== 20140707111715 CreateWidgets: migrated (0.0077s) ===========================

Фактический:

PG::InsufficientPrivilege: ERROR:  permission denied to create database
: CREATE DATABASE "ruby-getting-started_development" ENCODING = 'unicode'
/home/lord/.rvm/gems/ruby-2.3.4/gems/activerecord-4.2.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec'
....
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"ruby-getting-started_development"}
PG::InsufficientPrivilege: ERROR:  permission denied to create database
: CREATE DATABASE "ruby-getting-started_test" ENCODING = 'unicode'
/home/lord/.rvm/gems/ruby-2.3.4/gems/activerecord-...
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"ruby-getting-started_test"}
rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  database "ruby-getting-started_development" does not exist
....
/home/lord/.rvm/gems/ruby-2.3.4/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

В интернете залез в дебри, но так и не смог решить эту проблему.

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/714542/postgre-%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-local-setup#comment1071844_714542
Стоит дополнить, что пользовался инструкциями: Heroku , и застрял на пункте обявления зависимостей.

Ответы - Postgre локальная установка (local setup) / Postgre локальная установка (local setup)

Является ответом!
Мелкий

05.09.2017 12:49:58

permission denied to create database

Собственно, у пользователя от имени которого вы подключаетесь к СУБД нет прав на создание новых баз данных, что является нормальным для непривилегированных пользователей.

Вам необходимо авторизоваться в PostgreSQL от имени суперпользователя БД (обычно это пользователь postgres, и внимание, это не про суперпользователя ОС root), типично вот так:

sudo -u postgres psql

И далее на выбор:

  • создать БД и предоставить все права на её использование определённому пользователю

    create database dbname owner lord;
    

    что правильно, у пользователя приложения не должно быть лишних прав. Создание баз данных - явно лишние права для приложения.

  • предоставить права на создание базы данных пользователю

    alter user lord CREATEDB ;
    
  • разобраться с системой прав PostgreSQL и как её можно использовать в RoR для полноценного разграничения прав доступа - одному пользователю из приложения допускать только select/insert/update/delete операции (и отдельно пользователь для read-only который может делать только select), create table и другие DDL операции разрешать только пользователю, который применяет миграции. Т.е. минимум прав для работы, что хорошо с точки зрения безопасности и в коммерческих проектах.

Вы сейчас очевидно только изучаете платформу, так что разбираться с деталями разграничения прав доступа будет пока избыточно. Оптимально создать базу данных вручную и предоставить её целиком пользователю

create database dbname owner lord;

Что, к слову, тоже очень часто используется в действующих проектах.

Шаг db:create при этом вероятно надо будет убрать из команды, но не могу сказать точно, с рельсами не сталкивался.

Закрыть X