Установка и настройка PostgreSQL на linux centos 7
Подробное руководство по установке, настройке и оптимизации PostgreSQL для linux centos 7
Введение
PostgreSQL - мощная объектно-реляционная СУБД с открытым исходным кодом. Это руководство поможет установить и настроить PostgreSQL 12 на CentOS 7 с базовыми параметрами безопасности и оптимизации.
Требования
Минимальные требования:
- CentOS 7 (x86_64)
- 1 ГБ оперативной памяти
- 10 ГБ свободного места на диске
- Права root или sudo
Рекомендуется предварительно обновить систему:
sudo yum update -y
Установка
Подготовка
- Добавляем официальный репозиторий PostgreSQL:
1sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- Очищаем кеш пакетов:
1sudo yum clean all
Процесс установки
- Устанавливаем PostgreSQL 12 и клиентские утилиты:
1sudo yum install -y postgresql12-server postgresql12-contrib
- Инициализируем БД:
1sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
- Запускаем службу:
1sudo systemctl enable postgresql-12 2sudo systemctl start postgresql-12
- Проверяем статус:
systemctl status postgresql-12
Настройка
- Настраиваем доступ из сети:
1sudo nano /var/lib/pgsql/12/data/postgresql.conf
Изменить строку:
1listen_addresses = '*'
- Настраиваем аутентификацию:
1sudo nano /var/lib/pgsql/12/data/pg_hba.conf
Добавить в конец:
host all all 0.0.0.0/0 md5
- Перезагружаем службу:
sudo systemctl restart postgresql-12
- Создаем пользователя и БД:
1sudo -u postgres psql 2CREATE DATABASE exampledb; 3CREATE USER exampleuser WITH ENCRYPTED PASSWORD 'StrongPassword'; 4GRANT ALL PRIVILEGES ON DATABASE exampledb TO exampleuser; 5\q
- Открываем порт в firewall:
1sudo firewall-cmd --permanent --add-port=5432/tcp 2sudo firewall-cmd --reload
Типичные ошибки и их решения
Ошибка: Нет доступа к серверу Решение: Проверить настройки pg_hba.conf и listen_addresses
Ошибка: FATAL: password authentication failed Решение: Пересоздать пароль:
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'NewPassword'"
Ошибка: Недостаточно памяти Решение: Настроить shared_buffers в postgresql.conf
Заключение
Вы успешно установили и настроили PostgreSQL на CentOS 7. Для повышения безопасности:
- Регулярно обновляйте СУБД
- Настройте бэкапы
- Используйте SSL-шифрование
- Ограничивайте доступ по IP
Команды
Установка репозитория PostgreSQL
1sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Запуск службы PostgreSQL
sudo systemctl start postgresql-12
Создание пользователя БД
1sudo -u postgres createuser --interactive
Решение проблем
Сервис не запускается после изменения конфига
Проверить синтаксис конфигурационных файлов через:
sudo -u postgres pg_ctl -D /var/lib/pgsql/12/data/ start
1journalctl -xe --unit postgresql-12
Ошибка разрешений для директории данных
Изменить владельца каталога:
1sudo chown -R postgres:postgres /var/lib/pgsql/12/data
1sudo chown -R postgres:postgres /var/lib/pgsql/12/data