Вредоносное ПО (malware) - это назойливые или опасные программы,...
В этой статье я покажу 15 наиболее полезных команд для управления postgreSQL .
1. Как изменить root пароль в PostgreSQL?
$ /usr/local/pgsql/bin/psql postgres postgres Password: (oldpassword) # ALTER USER postgres WITH PASSWORD ‘tmppassword’; $ /usr/local/pgsql/bin/psql postgres postgres Password: (tmppassword)Изменение пароля для обычного пользователя происходит таким же образом. Пользователь root может поменять пароль любому пользователю.
# ALTER USER username WITH PASSWORD ‘tmppassword’;
2. Как установить PostgreSQL в автозапуск?
$ su - root # tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # cp contrib/start-scripts/linux /etc/rc.d/init.d/postgresql # chmod a+x /etc/rc.d/init.d/postgresql3. Проверяем состояние сервера
$ /etc/init.d/postgresql status Password: pg_ctl: server is running (PID: 6171) /usr/local/pgsql/bin/postgres “-D” “/usr/local/pgsql/data” [Замечание: Это сообщение говорит о том, что сервер запущен и работате нормально] $ /etc/init.d/postgresql status Password: pg_ctl: no server running [Замечание: Это сообщение готоворит о том, что сервер не запущен]4. Как запустить, остановить, перезапустить PostgreSQL?
# service postgresql stop Stopping PostgreSQL: server stopped ok # service postgresql start Starting PostgreSQL: ok # service postgresql restart Restarting PostgreSQL: server stopped ok5. Как посмотреть какая версия PostgreSQL запущена?
$ /usr/local/pgsql/bin/psql test Welcome to psql 8.3.7, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit test=# select version(); version —————————————————————————————————- PostgreSQL 8.3.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42) (1 row) test=#5. Как создать пользователя в PostgreSQL?
Для этого существуют два метода..
Метод 1: Создаем пользователя в через PSQL шелл, командой CREATE USER.
# CREATE USER ramesh WITH password ‘tmppassword’; CREATE ROLE
Метод 2: Создаем пользователя в через шелл команду createuser.
$ /usr/local/pgsql/bin/createuser sathiya Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) n Shall the new role be allowed to create more new roles? (y/n) n CREATE ROLE
6. Как создать базу в PostgreSQL ?
Для этого существует 2 метода.
Метод 1: Создаем базу черезе PSQL шелл, с помощью команды CREATE DATABASE.
# CREATE DATABASE mydb WITH OWNER ramesh; CREATE DATABASE
Метод 2: Используем команду createdb.
$ /usr/local/pgsql/bin/createdb mydb -O ramesh CREATE DATABASE
7. Получаем список всех баз в Postgresql?
# \l List of databases Name | Owner | Encoding ———-+———-+———- backup | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF88. Как удалить базу в PostgreSQL?
# \l List of databases Name | Owner | Encoding ———-+———-+———- backup | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF8 # DROP DATABASE mydb; DROP DATABASE9. Пользуемя встроенным хелпом к командам
Команда \? отобразит строку помощи для команда PSQL. \h CREATE покажет хелп для всех команд который начинаются с CREATE.
# \? # \h CREATE # \h CREATE INDEX
10. Как получить список всех таблиц в базе данный в Postgresql?
# \dДля пустой базы вы получите сообщение “No relations found.”
11. Как узнать время выполнения запроса?
# \timing — после выполения данной команды каждый последующий запрос будет показывать время выполнения.
# \timing Timing is on. # SELECT * from pg_catalog.pg_attribute ; Time: 9.583 ms
12. Как бэкапить и восстанавливать базы и таблицы в PostgreSQL?
Этот вопрос довольно велик и я опубликую его позднее отдельной статьей.
13. Как посмотреть список доступных функций в PostgreSQL ?
Для того чтобы получить список доступных функций, скажите \df+
# \df # \df+
14. Как отредактировать запрос к PostgreSQL в редакторе?
# \e\e откроет редактор, в котором вы можете отредактировать запрос и сохранить его.
15. Где я могу найти файл истории postgreSQL?
Подобно файлу ~/.bash_history, postgreSQL хранит все sql команды в файле ~/.psql_history.
$ cat ~/.psql_history alter user postgres with password ‘tmppassword’; \h alter user select version(); create user ramesh with password ‘tmppassword’; \timing select * from pg_catalog.pg_attribute;
System AdministrationЭтот пост - краткая инструкция для начинающих, для тех кто впервые установил PostgreSQL. Здесь вся необходимая информация для того, чтобы начать работу с PostgreSQL.
Подключение к СУБД
Первое, что нужно сделать - получить доступ к PostgreSQL, доступ в качестве суперпользователя.Настройки аутентификации находятся в файле pg_hba.conf.
- local all postgres peer
Подключаемся:
- $ sudo -u postgres psql postgres postgres
- # TYPE DATABASE USER ADDRESS METHOD
- hostssl all all 0.0.0.0/0 md5
Установка переменной окружения PGPASSWORD
Сразу скажу, что лучше этот способ не использовать, потому что некоторые операционные системы позволяют просматривать обычным пользователям переменные окружение с помощью ps. Но если хочется, то надо написать в терминале:- export PGPASSWORD=mypasswd
Хранение пароля в файле.pgpass
Если мы говорим о Linux, то файл должен находится в $HOME (/home/username). Права на запись и чтение должны быть только у владельца (0600). В файл нужно записывать строки вида:- hostname:port:database:username:password
Получение справочной информации
\? - выдаст все доступные команды вместе с их кратким описанием,\h - выдаст список всех доступных запросов,
\h CREATE - выдаст справку по конкретному запросу.
Управление пользователями СУБД
Как получить список пользователей PostgreSQL? Или можно сделать запрос к таблице pg_user.- SELECT * FROM pg_user ;
Создание нового пользователя PostgreSQL
Из командной оболочки psql это можно сделать с помощью команды CREATE.- CREATE USER username WITH password "password" ;
- createuser -S -D -R -P username
Изменение пароля пользователя
- ALTER USER username WITH PASSWORD "password" ;
Изменение ролей пользователя
Чтобы пользователь имел право создавать базы данных, выполните запрос:- ALTER ROLE username WITH CREATEDB ;
Управление базами данных
Вывод списка баз данных в терминале psql: Тоже самое из терминала Linux:- psql -l
- CREATE DATABASE dbname OWNER dbadmin ;
- createdb -O username dbname;
Настройка прав доступа к базе данных
Если пользователь является владельцем (owner) базы данных, то у него есть все права. Но если вы хотите дать доступ другому пользователю, то сделать это можно с помощью команды GRANT. Запрос ниже позволит пользователю подключаться к базе данных. Но не забывайте о конфигурационном файле pg_hba.conf, в нем тоже должны быть соответствующие разрешения на подключение.- GRANT CONNECT ON DATABASE dbname TO dbadmin ;
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, а также.
- Tutorial
Мне хотелось создать прекрасный объемлющий мануал Getting Start без всякой воды, но включающий основные плюшки для начинающих по системе PostgreSQL в Linux.
PostgreSQL является объектно-реляционной системой управления базами данных (ОРСУБД) на основе POSTGRES, версия 4.2 , разработанной в Университете Калифорнии в Беркли департаменте компьютерных наук.
PostgreSQL является open source потомком оригинального кода Berkeley. Он поддерживает большую часть стандарта SQL и предлагает множество современных функций:
- Cложные запросы
- Управление конкурентным доступом с помощью многоверсионности
- типов данных
- функций
- операторов
- агрегатных функций
- индекс методов
- процедурных языков
Сборка и установка
Как и все любители мейнстрима PostgreSQL мы будем конечно же собирать, а не скачивать готовые пакеты (в репозитариях Debian, например, нет последней версии). Вот лежит множество версий, скачивать конечно же лучше всего последнюю. На момент написания поста это версия 9.2.2Wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz
tar xzf postgresql-9.2.2.tar.gz
Теперь у нас есть директория с исходниками сей прекрасной базы данных.
По умолчанию файлы базы будут установлены в директорию /usr/local/pgsql, но эту директорию можно изменить задав
Prefix=/path/to/pgsql
перед командой./configure
Перед сборкой можно указать компилятор С++
Export CC=gcc
PostgeSQL может использовать readline библиотеку, если у вас её нет и нет желания её ставить просто укажите опцию
Without-readline
Надеюсь у всех есть Autotools ? Тогда вперед к сборке:
Cd postgresql-9.2.2
./configure --without-readline
sudo make install clean
Все господа! Поздравляю!
Настройка
Нам необходимо указать хранилище данных наших баз данных (кластер) и запустить её.Есть один нюанс - владельцем директории данных и пользователь, который может запускать базу должен быть не root. Это сделано в целях безопасности системы. Поэтому создадим специального пользователя
sudo useradd postgres -p postgres -U -m
И далее все понятно
Sudo chown -R postgres:postgres /usr/local/pgsql
Важный процесс. Мы должны инициализировать кластер баз дынных. Сделать мы должны это от имени пользователя postgres
Initdb -D /usr/local/pgsql/data
Теперь нужно добавить запуск PostgreSQL в автостарт. Для этого существует уже готовый скрипт и лежит он в postgresql-9.2.2/contrib/start-scripts/linux
Этот файл можно открыть и обратить внимание на следующие переменные:
- prefix - это место куда мы ставили PostgreSQL и задавали в./configure
- PGDATA - это то, где хранится кластер баз данных и куда должен иметь доступ наш пользователь postgres
- PGUSER - это тот самый пользователь, от лица которого будет все работать
Sudo cp ./postgresql-9.2.2/contrib/start-scripts/linux /etc/init.d/postgres
sudo update-rc.d postgres defaults
Перезапускам систему, чтобы проверить что наш скрипт работает.
Вводим
/usr/local/pgsql/bin/psql -U postgres
И если появится окно работы с базой, то настройка прошла успешно! Поздравляю!
По умолчанию создается база данных с именем postgres
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all::1/128 trust
Первая строка отвечает за локальное соединение, вторая - за соединение про протоколу IPv4, а третья по протоколу IPv6.
Самый последний параметр - это как раз таки метод авторизации. Его и рассмотрим (только основные)
- trust - доступ к базе может получить кто угодно под любым именем, имеющий с ней соединение.
- reject - отклонить безоговорочно! Это подходит для фильтрации определенных IP адресов
- password - требует обязательного ввода пароля. Не подходит для локальных пользователей, только пользователи созданные командой CREATE USER
- ident - позволяет только пользователем зарегистрированным в файле /usr/local/pgsql/data/pg_ident.conf устанавливать соединение с базой.