Lab

Администратирование Postgres

Проверяем наличие пользователей, которые могут работать с базами данных: 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 выведит помощь для всех команд с данным названием.