Установка и первоначальная настройка PostgreSQL. Хранение пароля в файле.pgpass. Скачивание и установка сервера баз данных PostgreSQL
Первый тест, с помощью которого будет видно, что вы можете получить доступ к серверу баз данных - это попытка создать базу данных. Запущенный сервер PostgreSQL может управлять множеством баз данных. Обычно, для каждого проекта или каждого пользователя используется отдельная база данных. Возможно, что администратор вашей машины уже создал базу данных для вас. Он должен был бы сказать вам имя вашей базы данных. В этом случае вы можете пропустить данную секцию и перейти к следующей. Для создания новой базы данных, в этом примере называющейся mydb , вы можете использовать следующую команду: $ createdb mydb
Если команда завершилась без каких-либо сообщений, то данный шаг был пройден успешно и вы можете пропустить написанное далее до конца этой секции.
Если вы получите что-то похожее на: createdb: command not found
то это означает, что продукт PostgreSQL не был правильно установлен. Или было установлено не все или путь поиска в вашем командном интерпретаторе не был установлен соответствующим образом. Попытайтесь вызвать эту команду, используя полный путь:
$ /usr/local/pgsql/bin/createdb mydb
Полный путь на вашей машине может быть другим. Свяжитесь с вашим администратором или проверьте инструкции по установке, чтобы исправить ситуацию.
Другое сообщение, которое вы можете получить: createdb: could not connect to database postgres: could not connect to server: No such file or directory No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Это означает, что сервер не был запущен или что он не был запущен так, как этого ожидает команда createdb . Снова, проверьте инструкции по установке или проконсультируйтесь с администратором.
Ещё одно сообщение, которое вы можете получить: createdb: could not connect to database postgres: FATAL: user "joe" does not exist
где вместо joe упоминается ваше имя регистрации. Такое сообщение появляется если администратор не создал для вас пользователя в PostgreSQL . (Пользователь PostgreSQL — это не пользователь операционной системы). Если вы являетесь администратором, смотрите информацию о создании пользователя в Chapter 20 . Вам понадобится зарегистрироваться в операционной системе под именем того пользователя, из под которого работает PostgreSQL (обычно postgres), чтобы создать первого пользователя в СУБД. Для команды создания базы, вы также можете указать в PostgreSQL имя пользователя, которое отличается от вашего текущего имени пользователя в операционной системе; в этом случае вам необходимо задать имя пользователя PostgreSQL с помощью опции -U или установки переменной окружения PGUSER .
Если нужный пользователь существует, но у него нет прав, требуемых для создания базы данных, вы увидите следующее сообщение: createdb: database creation failed: ERROR: permission denied to create database
Не каждый пользователь имеет авторизацию для создания новых баз данных. Если PostgreSQL отвергает ваши попытки создания баз данных, то администратору вашей машины нужно дать вам права для создания баз данных. Проконсультируйтесь с ним в этом случае. Если вы устанавливали PostgreSQL сами, то вы должны для целей преследуемых этим учебным руководством подключиться как пользователь, от имени которого запускается сервер баз данных.
Вы можете также создавать базы данных с любыми другими именами. PostgreSQL позволяет вам создавать любое количество баз данных на одном сервере. Имена баз данных должны состоять из букв и цифр (вначале всегда должна быть буква) и быть не более 63 байт длиной. Довольно удобно создавать базу данных с таким же именем как у пользователя. Многие инструменты по умолчанию считают, что имя базы данных именно такое, так что вы сможете не нажимать лишние кнопки. Чтобы создать такую одноимённую с именем пользователя базу данных, просто наберите: $ createdb Если вы не хотите использовать вашу базу данных в будущем, вы можете удалить ее. Например, если вы являетесь владельцем (создателем) базы данных mydb , вы можете уничтожить её, используя следующую команду: $ dropdb mydb
(Для этой команды вы должны обязательно задать имя базы данных, она не будет считать, что имя базы данных - это имя текущего пользователя). Данная команда физически удалит все файлы, связанные с указанной базой данных так, что их нельзя будет восстановить, так что выполняйте эту операцию с большой осторожностью.
PostgreSQL — это кроссплатформенная объектно-реляционная СУБД с открытым исходным кодом. Из этой статьи вы узнаете, как установить PostgreSQL в Ubuntu Linux, подключиться к нему и выполнить пару простых SQL-запросов, а также о том, как настроить резервное копирование.
Чтобы установить PostgreSQL 9.2 в Ubuntu 12.10, выполните следующие команды:
sudo
apt-add-repository ppa:pitti/
postgresql
sudo
apt-get update
sudo
apt-get install
postgresql-9.2
Попробуем поработать с СУБД через оболочку:
sudo -u postgres psql
Создадим тестовую базу данных и тестового пользователя:
CREATE
DATABASE
test_database;
CREATE
USER
test_user WITH
password "qwerty"
;
GRANT
ALL
ON
DATABASE
test_database TO
test_user;
Для выхода из оболочки введите команду \q .
Теперь попробуем поработать с созданной базой данных от имени test_user:
psql -h localhost test_database test_user
Создадим новую таблицу:
CREATE
SEQUENCE
user_ids;
CREATE
TABLE
users (
id INTEGER
PRIMARY
KEY
DEFAULT
NEXTVAL
("user_ids"
)
,
login CHAR
(64
)
,
password CHAR
(64
)
)
;
Обратите внимание, что в отличие от некоторых других СУБД, в PostgreSQL нет столбцов со свойством auto_increment. Вместо этого в постгресе используются последовательности (sequences). На данный момент достаточно знать, что с помощью функции nextval мы можем получать уникальные числа для заданной последовательности:
SELECT NEXTVAL ("user_ids" ) ;
Прописав в качестве значения по умолчанию для поля id таблицы users значение NEXTVAL ("user_ids" ) , мы добились того же эффекта, что дает auto_increment. При добавлении новых записей в таблицу мы можем не указывать id, потому что уникальный id будет сгенерирован автоматически. Несколько таблиц могут использовать одну и ту же последовательность. Таким образом мы сможем гарантировать, что значения некоторых полей у этих таблиц не пересекаются. В этом смысле последовательности более гибки, чем auto_increment.
Точно такую же таблицу можно создать и при помощи всего лишь одной команды:
CREATE
TABLE
users2 (
id SERIAL
PRIMARY
KEY
,
login CHAR
(64
)
,
password CHAR
(64
)
)
;
В этом случае последовательность для поля id создается автоматически.
Теперь с помощью команды \d можно ознакомиться со списком всех доступных таблиц, а с помощью \d users — увидеть описание таблицы users. Если вы не получили интересующую вас информацию, попробуйте \d+ вместо \d . Список баз данных можно получить командой \l , а переключиться на конкретную БД — командой \c dbname . Для отображения справки по командам скажите \? .
Важно отметить, что в PostgreSQL по умолчанию имена таблиц и столбцов приводятся к нижнему регистру. Если это поведение нежелательно, можно воспользоваться двойными кавычками:
CREATE TABLE "anotherTable" ("someValue" VARCHAR (64 ) ) ;
Еще одна особенность PostgreSQL, с которой могут возникнуть сложности в начале работы с этой СУБД — так называемые «схемы». Схема представляет собой что-то вроде пространства имен для таблиц, как бы каталог с таблицами внутри базы данных.
Создание схемы:
CREATE SCHEMA bookings;
Переключение на схему:
SET search_path TO bookings;
Просмотреть список существующих схем можно командой \dn . По умолчанию используется схема с именем public. В принципе, можно успешно использовать PostgreSQL, и не зная про существование схем. Но при работе с унаследованным кодом, а также в некоторых граничных случаях, знание о схемах может очень пригодиться.
В остальном работа с PostgreSQL мало чем отличается от работы с любой другой реляционной СУБД:
INSERT
INTO
users (login,
password)
VALUES
("afiskon"
,
"123456"
)
;
SELECT
*
FROM
users;
Если сейчас вы попытаетесь подключиться к постгресу с другой машины, то потерпите неудачу:
psql -h 192.168.0.1 test_database test_user
Psql: could not connect to server: Connection refused
Is the server running on host "192.168.0.1" and accepting
TCP/IP connections on port 5432?
Чтобы исправить это, добавьте строку:
listen_addresses = "localhost,192.168.0.1"
… в файл /etc/postgresql/9.2/main/postgresql.conf, а также.
После того, как вы скачали базу ключевых слов английского языка , вам нужно установить сервер баз данных локально и научиться делать выборки. Для этого мы предлагаем пошаговую инструкцию.
ВАЖНО: Если у вас нет опыта работы с БД или этот опыт минимален, то мы настоятельно рекомендуем начать с минимальной базы для отработки процесса.
На скриншотах в инструкции показана работа с минимальной базой, соответственно и время указано для минимальной базы, но работа с расширенной и максимальной базой займет больше времени.
Скачивание и установка сервера баз данных PostgreSQL
http://www.postgresql.org/download/windows/
1. Скачаем бесплатную программу для базы данных PostgreSQL c официального сайта http://www.postgresql.org/
download/windows/
http://www.enterprisedb.com/products-services-training/pgdownload#windows :
Затем перейдем по ссылке на подробную страницу версий базы данных для разных ОС:
http://www.enterprisedb.com/
products-services-training/
pgdownload#windows :
ВАЖНО: Мы рекомендуем устанавливать сервер баз данных и делать выборки в 64-битной системе с минимум 6 Гб оперативной памяти при работе с минимальной и расширенной базами. В случае максимальной базы рекомендуемый объем оперативной памяти - от 32 Гб , также желателен быстрый диск. На компьютере с 32-битной системой процесс импорта данных, их индексации и собственно выборки будет проходить очень и очень долго, поэтому лучше отказаться от этой идеи.
Если вы не знаете разрядность своей ОС, то ее можно посмотреть в свойствах компьютера (правая кнопка мыши на пункте «Компьютер», выбрать в меню «Свойства»):
2. Устанавливаем скачанную БД PostgreSQL. Во время установки практически все по умолчанию …
… за исключением нескольких моментов.
3. Запускаем операцию оптимизации таблицы подобным образом:
vacuum "eng_data_table";
Оптимизация выполняется в среднем 15-30 минут.
Примечание: Запросы выполняем по одному, предварительно стирая уже выполненные предыдущие запросы. О том, выполнен запрос или нет, вы можете узнать из сообщения в Панели вывода внизу (оно появляется, когда запрос выполнен), а время выполнения вы можете узнать в строке состояния внизу окна.
Первое, как можно проверить, есть ли у вас доступ к серверу баз данных, — это попытаться создать базу данных. Работающий сервер PostgreSQL может управлять множеством баз данных, что позволяет создавать отдельные базы данных для разных проектов и пользователей.
Возможно, ваш администратор уже создал базу данных для вас и сообщил вам её имя. В этом случае вы можете пропустить этот этап и перейти к следующему разделу.
Для создания базы данных, в этом примере названной mydb , выполните следующую команду:
$ createdb mydb
Если вы не увидите никаких сообщений, значит операция была выполнена успешно и продолжение этого раздела можно пропустить.
Если вы видите сообщение типа:
Createdb: command not found
значит PostgreSQL не был установлен правильно. Либо он не установлен вообще, либо в путь поиска команд оболочки не включён его каталог. Попробуйте вызвать ту же команду, указав абсолютный путь:
$ /usr/local/pgsql/bin/createdb mydb
У вас этот путь может быть другим. Свяжитесь с вашим администратором или проверьте, как были выполнены инструкции по установке, чтобы исправить ситуацию.
Ещё один возможный ответ:
Createdb: не удалось подключиться к базе postgres: не удалось подключиться к серверу: No such file or directory Он действительно работает локально и принимает соединения через доменный сокет "/tmp/.s.PGSQL.5432"?
Это означает, что сервер не работает или createdb не может к нему подключиться. И в этом случае пересмотрите инструкции по установке или обратитесь к администратору.
Также вы можете получить сообщение:
Createdb: не удалось подключиться к базе postgres: ВАЖНО: роль "joe" не существует
где фигурирует ваше имя пользователя. Это говорит о том, что администратор не создал учётную запись PostgreSQL для вас. (Учётные записи PostgreSQL отличаются от учётных записей пользователей операционной системы.) Если вы сами являетесь администратором, прочитайте Главу 20 , где написано, как создавать учётные записи. Для создания нового пользователя вы должны стать пользователем операционной системы, под именем которого был установлен PostgreSQL (обычно это postgres). Также возможно, что вам назначено имя пользователя PostgreSQL , не совпадающее с вашим именем в ОС; в этом случае вам нужно явно указать ваше имя пользователя PostgreSQL , используя ключ -U или установив переменную окружения PGUSER .
Если у вас есть учётная запись пользователя, но нет прав на создание базы данных, вы увидите сообщение:
Createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данных
Создавать базы данных разрешено не всем пользователям. Если PostgreSQL отказывается создавать базы данных для вас, значит вам необходимо соответствующее разрешение. В этом случае обратитесь к вашему администратору. Если вы устанавливали PostgreSQL сами, то для целей этого введения вы должны войти в систему с именем пользователя, запускающего сервер БД.
Вы также можете создавать базы данных с другими именами. PostgreSQL позволяет создавать сколько угодно баз данных. Имена баз данных должны начинаться с буквы и быть не длиннее 63 символов. В качестве имени базы данных удобно использовать ваше текущее имя пользователя. Многие утилиты предполагают такое имя по умолчанию, так что вы сможете упростить ввод команд. Чтобы создать базу данных с таким именем, просто введите:
$ createdb
Если вы больше не хотите использовать вашу базу данных, вы можете удалить её. Например, если вы владелец (создатель) базы данных mydb , вы можете уничтожить её, выполнив следующую команду:
$ dropdb mydb
(Эта команда не считает именем БД по умолчанию имя текущего пользователя, вы должны явно указать его.) В результате будут физически удалены все файлы, связанные с базой данных, и так как отменить это действие нельзя, не выполняйте его, не подумав о последствиях.