Установка и легкая настройка postgresql через консоль и программу yum для начинающих.
Проверяем, установлен ли postgresql, для этого в консоли набираем:
#su root вводим пароль пользователя root
# yum info postgresgl
В результате увидим, вывод :
Если вывод выглядит, как у меня на картинке, то postgresql установлен. Если нет «Repo : installed» , то придется установить. Стоит обратить внимание, на то что, если вы устанавливали posgresql вместе с осью сразу, то в некоторых дистрибутивах за вас уже все сделали и инициализировать базу не нужно, пропускаем эти манипуляции ! Остается только настроить под себя, создать пароль на локального пользователя postgres и создать пароль на администратора базы данных postgres, через утилиту «psql», описание процедуры находится ниже. Вернемся к установке, в консоли от root , вводим :
#yum install postgresql
#yum install qt3-PostgreSQL
установив все зависимости , yum спросит про установить или нет , отвечаете «Y» , пакеты установятся. В самом низу будет виден результат. Вообще , если есть необходимость использовать весь пакет postgresql, то рекомендую установить его так :
#yum install postgresql*
#yum install qt3-PostgreSQL
В результате будет установлены все пакеты, начинающиеся на имя «postgresql» и пакет «qt3-PostgreSQL». Все делается от пользователя root. Убеждаемся всегда о положительном завершении процедуры установки. Теперь у вас проинсталлирован postgresql, но не стоит спешить его запускать, даже если он и запуститься по команде
#service postgresql start
То скорей всего, выдаст ошибку, так как мы еще не создали «template1» базы. От греха подальше перегружаем систему, смотрим, что у нас стартует, выдает ошибки или нет. Убедившись , что установка не внесла проблемных изменений, конфликтов и возвращаемся крутить postgresql дальше. Необходимо инициализировать сервер и базы данных для работы с ними от пользователя postgres.
#su root вводим пароль пользователя root
Переходим в каталог var/lib/pgsql/data , для этого вводим:
#cd /var/lib/pgsql/data/
#ls (вывод имеющихся файлов )
Если в этой папке присутствуют, какие нить файлы, базы данных, то лучше все зачистить, для большей наглядности рекомендую это сделать с помощью файлового менеджера «MC»:
#mc /var/lib/pgsql/data/ Переходим в каталог, выделяем все файлы с помощью клавиши "Insert" и нажимаем "F8".
Если «MC» еще не установлен, то рекомендую его проинсталлировать , так как для начинающего пользователя это палка-выручалка номер один !!! Тем более что установить его не сложно:
#yum install mc (он вам еще пригодится, особенно если не стоит ни каких Х-ов)
Входим в консоль пользователем «postgres», который был автоматически создан при установке и вводим команду создания необходимых файлов баз данных и инициализации сервера.
#su postgres
bash-4.1$initdb -D /var/lib/pgsql/data
Получится вывод как на скрине:
Базы данных инициализируются для пользователя «postgres»!!! Не думаю, что вы часто будете сидеть под пользователем «root», это не совсем корректно! После рекомендую запустить «Postgresql» через команду от root:
#service postgresql start
Вывод должен быть положительным ! Так сразу будет ясно, стартанет ли наш сервер при загрузке системы. Добавим в автозагрузку , для наглядности , через команду:
#setup
Установим пароль для локального пользователя «postgres»:
#passwd postgres
Пароль рекомендую установить ! И чем сложней, тем лучше, это поможет вам избежать некоторых проблем с безопасностью! )))
Смена пароля администратора баз данных postgres, пароль администратора должен быть установлен, иначе сторонние приложения не будут взаимодействовать с базами данных, да и безопасности прибавит, что не лишне при работе с серверами баз данных:
#su postgres
bash-4.1$psql
postgres=#\password postgres
Не забываем подправить конфиг под себя ! Дело в том, что по умолчанию нет аутентификации локальных пользователей, а так же нет возможности использовать posgresql server для сетевого использования. Локальные пользователи подключаются свободно, что необходимо подправить. Открываем для редактирования конфигурационный файл /var/lib/pgsql/data/pg_hba.conf и приводим его в такой вид , как на картинке:
Теперь локальные пользователи проходят аутентификацию по паролю в md5 . Если необходимо , чтобы к серверу подключались из сети или определенного узла, то добавляем свои правила подобные локальным пользователям. Стоит лишний раз подумать про безопасность соединении к базе, так как если не шифровать трафик, то он спокойно может быть перехвачен. Ну и фаервол (на Федоре это iptables , мощный и могучий, главное держать талмут под рукой и понимать как он работает) стоит под настроить , под доступ к серверу баз данных только с тех хостов , которым он разрешен.
Для более глубокого изучения рекомендую хорошо погуглить данный вопрос, а лучше почитать полную документацию на http://postgresql.ru.net/. С помощью данной статьи вы получаете работоспособный postgresql, а статья используется мной как напоминалака в случаи, когда что то позабылось ). Для соответствующих программ нужно установить соответствующие модули, обычно описаны в readme к программе. Успешной вам настройки и использования pstgresql.
Создание нового пользователя и управление его правами.
Добавить нового пользователя можно командой :
postgres=#CREATE USER имя_пользователя PASSWORD 'пароль'; (в ответ: «CREATE ROLE», что говорит о положительном результате).
Если есть надобность сделать обычного пользователя «суперпользователем» , то вводим
postgres=#ALTER USER 'имя_пользователя' SUPERUSER; (в случае успеха получаем ответ ALTER ROLE).
Отменяем права супер пользователя:
postgres=#ALTER USER 'имя_пользователя' NOSUPERUSER; (в случае успеха получаем ответ ALTER ROLE).
"ALTER USER" очень полезная команда, она позволяет выставить права пользователям, те , которые они заслужили. Далее чуть приведу информации по данному аператору с "postgresql.ru.net", которая понадобится почти каждому, да и вообщем очень рекомендую ознакомиться с содержанием данного сайта, особенно если решили серьезно заняться этим делом ) .
ALTER USER ALTER USER Имя_пользователя [ [ WITH ] option [ ... ] ]
SUPERUSER | NOSUPERUSER - Как говорилось выше , дать или отнять прова суперпользователя. CREATEDB | NOCREATEDB - Дать разрешение создавать или запретить создавать базы данных пользователю. CREATEROLE | NOCREATEROLE - Дать пользователю возможность создавать роли доступа. CREATEUSER | NOCREATEUSER - Дать возможность пользователю создавать других пользователей или отнять данную привилегию.
ALTER USER Имя_пользователя RENAME TO Новое _имя_пользователя - Переименовать одного пользователя в другого.
Проверяем наличие пользователей, которые могут работать с базами данных:
postgres=#\du (в выводе будет список пользователей с их разрешениями).
Вход под желанным пользователем, по умолчанию вход производится от пользователя «postgresql»:
bash-4.1$psql –U имя_пользователя
Создание базы данных и управление ими.
Создание базы данных можно сделать двумя способами:
1. Меняем пользователя на Postgres:
#su postgres
bash-4.1$createdb Имя_создаваемой_базы
bash-4.1$exit
2. Надо сменить пользователя на Postgres и запустить утилиту psql.
#su postrges
bash-4.1$psql
postgres=#CREATE DATABASE имя_базы ;
Вывод существующих баз данных производится по команде:
postgres=#\l
Для того чтобы созданный пользователь мог работать с определенной базой данных , нужно изменить права доступа к данной базе данных и дабы все происходило нормально отдать эту базу данных во владения этому пользователю! Проделываем следующие шаги:
postgres=#\q (выход из утилиты psql , если вы еще не выходили)
Следующая команда выполняется от пользователя «postgres», так что если что входим :
#su postgres
bash-4.1$psql имя_базы (вход в утилиту с редактированием нужной базы данных)
здесь будет имя базы=# GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;
Ответ : GRANT
postgres=#\q
bash-4.1$psql
postgres=#ALTER DATABASE имя_базы_данных owner to Имя_пользователя кому отдать базу данных ;
postgres=#\l - Смотрим вывод и кому чего принадлежит.
После данных действий пользователь получает права на базу данных и получает ее в свое пользование. Обычно этого с головой достаточно. Не забываем ставить знак « ; », там, где он стоит у меня при вводе команд, если вдруг подзабыли или пропустили – не страшно, поставьте на следующей строке и нажмите ввод. Выйти из утилиты psql можно командой:
postgres=#\q
Удаление ненужной базы данных:
#su postgres
bash-4.1$ dropdb Имя_удоляемой_базы_данных
или
bash-4.1$ psql
postgres=# DROP DATABASE Имя_удаляемой базы данных; в ответ "DROP DATABASE"
Бывает ситуация, когда по какой то причине захотелось глянуть, а не появилось ли в базе данных каких нить данных ), и нам на помощь прийдет:
#su postgres
bash-4.1$psql Имя_Базы_данных
Сдесь_будет_имя_базы_данных =# \d - и мы получаем вывод таблиц из данной базы данных.
Резервное копирование и восстановление отдельных баз данных.
Резервная копия отдельной базы данных производится с помощью "pg_dump".
Утилита очень проста в использовании, но перед использованием нужно создать каталог для резервных копий и дабы не путаться создать отдельную папку для резервного копирования индивидуальной базы.
#mkdir /home/rezervdb
#mkdir /home/rezervdb/Имя_базы_данных
#chown -R postgres: /home/rezervdb
Так как мы не работаем под пользователем root с базами данных , то входим под пользователем postgres:
#su postgres
pg_dump Имя_базы_данных > /home/rezervdb/Имя_базы_данных/Имя_базы.pgdump
Вводим пароль пользователя postgres, после чего проверяем создания копии базы:
bash-4.1$cd /home/rezervdb/Имя_базы_данных/
bash-4.1$ls - В выводе видим нашу свеж созданную копию базы данных.
Восстановить, переименовать, переместить проще простого : bash-4.1$ cat /home/Имя_базы_данных/Имя_базы.pgdump | psql Имя_базы
Если нам нужно создать и сразу заархивировать копию базы данных, что бывает очень полезно при больших по объему базах данных, то используем стандартные средства:
bash-4.1$pg_dump Имя_базы_данных | gzip > /home/rezervdb/Имя_базы_данных/Имя_базы.dump.gz
Восстанавление, переименование, перемещение:
bash-4.1$gunzip -c /home/rezervdb/Имя_базы_данных/Имя_базы.dump.gz | psql Имя_базы_данных_в_которую_востанавливаем
Резервное копирование и восстановление всего в один клик ).
# mkdir /home/rezervdb/postgres
#chown -R postgres: /home/rezervdb
#su postgres
bash-4.1$pg_dumpall > /home/rezervdb/postgres/db.out
Для востановления:
#su postgres bash-4.1$psql -f /home/rezervdb/postgres/db.out postgres
И на последок , если вы запутались, ни кто не отменял помощь из консоли ))) :
postgres-#\?
Выведит помощь по командам и их синтаксису, а ввод допустим:
postgres-#\h CREATE
выведит помощь для всех команд с данным названием.