Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
postgresql:postgresql [2016/06/29 20:25] mirocowpostgresql:postgresql [2018/03/08 20:21] (текущий) – [Настройка доступа] mirocow
Строка 1: Строка 1:
-{{tag>databases postgres}}+{{tag>databases postgres postgresql macos homebrew}}
  
-====== PostgreSql - Установка и настройка ======+====== PostrgeSQL - Установка и настройка ======
  
 ===== Установка ===== ===== Установка =====
Строка 40: Строка 40:
 </code> </code>
 ==== Настройка доступа ==== ==== Настройка доступа ====
 +
 +Не безопасно, даем внешний доступ для IP **192.168.1.1** ([[:networks#маски|можно использовать маски сети]])
 +Для подключения извне, также необходимо включить прослушивания внешнего IP \\ 
 +в настройках **/etc/postgresql/X.Y/main/postgresql.conf**
 +
  
 **nano /etc/postgresql/X.Y/main/pg_hba.conf** **nano /etc/postgresql/X.Y/main/pg_hba.conf**
-  local   all         all                               trust     # replace ident or peer with trust +<code> 
-  host   all         all          192.168.1.1/28        md5+# Database administrative login by Unix domain socket 
 +#local   all             postgres                                peer
  
 +# TYPE  DATABASE        USER            ADDRESS                 METHOD
  
-<code sh> +# "local" is for Unix domain socket connections only 
-psql -U B -T -h localhost -U postgres+#local   all             all                                     peer 
 +# IPv4 local connections: 
 +#host    all             all             127.0.0.1/32            md5 
 +# IPv6 local connections: 
 +#host    all             all             ::1/128                 md5 
 +# Allow replication connections from localhost, by a user with the 
 +# replication privilege. 
 +local   replication     all                                     peer 
 +host    replication     all             127.0.0.1/32            md5 
 +host    replication     all             ::1/128                 md5 
 + 
 +local   all             all                                     trust 
 +host    all             all             ::1/128                 trust 
 +host    all             all             127.0.0.1/32            trust 
 +host    all             all             192.168.1.1/32             trust
 </code> </code>
 +
 +<note important>Последующие записи не переобозначают предыдущие.\\ Предыдущие однотипные записи должны быть закомментированы \\
 +Это однотипные записи \\
 +<code>
 +#local   all             all                                     peer
 +local   all             all                                     trust
 +</code>
 +</note>
 +
 +  * ADDRESS - [[:networks#маски|Соответсвует маске]]
 +  * METHOD - Метод-аутентификации
 +=== методы аутентификации ===
 +
 +**trust** \\
 +Разрешает безусловное подключение. Этот метод позволяет тому, кто может подключиться к серверу с базой данных Postgres Pro, войти под любым желаемым пользователем Postgres Pro без введения пароля и без какой-либо другой аутентификации.\\
 +**ident** \\
 +Получает имя пользователя операционной системы клиента, связываясь с сервером Ident, и проверяет, соответствует ли оно имени пользователя базы данных. Аутентификация ident может использоваться только для подключений по TCP/IP. Для локальных подключений применяется аутентификация peer \\
 +**peer** \\
 +Получает имя пользователя операционной системы клиента из операционной системы и проверяет, соответствует ли оно имени пользователя запрашиваемой базы данных. Доступно только для локальных подключений. \\
 +**md5** \\
 +**scram-sha-256** \\
 +Проверяет пароль пользователя, производя аутентификацию SCRAM-SHA-256 или MD5.  \\
 +
 +[[https://postgrespro.ru/docs/postgrespro/10/auth-pg-hba-conf.html|Подробнее...]]
 +=== Проверка доступа ===
 +
 +
 +<code bash>
 +$ psql -U postgres -h localhost
 +$ psql -U postgres
 +</code>
 +
 +===== Вопрос/Ответ =====
 +
 +==== Пользователи ====
 +
 +  * **Как создать пользователя в PostgreSQL?**
 +  * CREATE USER ramesh WITH password ‘tmppassword’;
 +
 +  * **Как посмотреть список пользователей?**
 +  * SELECT * FROM pg_shadow;
 +
 +  * **Как сменить пароль у пользователя?**
 +  * ALTER USER postgres WITH PASSWORD 'password';
 +
 +=== Смена пароля ===
 +
 +Включаем однопользовательский режим nano /usr/local/opt/postgresql/pg_hba.conf
 +<code>
 +local   all             all                                     trust
 +</code>
 +
 +  * подключаемся к бд, указывая локального пользователя (в моем случае mirocow)
 +  * меняем пароль у пользователя mirocow
 +
 +включаем многопользовательский режим
 +добавляем строчку в nano /usr/local/opt/postgresql/pg_hba.conf
 +<code>
 +local   all         postgres                          password
 +</code>
 +
 +==== Права ====
 +
 +=== Смена прав ===
 +
 +  * ALTER TABLE sequence_name OWNER TO владелец
 +
 +==== Привелегии ====
 +
 +  * **Как посмотреть привелегии пользователя?**
 +  * <code>
 +SELECT n.nspname as "Схема", 
 +c.relname as "Таблица", 
 +c.relacl as "Привилегии доступа" 
 +FROM pg_catalog.pg_class c 
 +LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
 +WHERE c.relkind IN ('r', 'v', 'S'
 +AND pg_catalog.pg_table_is_visible(c.oid) /*AND n.nspname !~ '^pg_'*/ 
 +ORDER BY 1, 2;
 +</code>
 +
 +  * **Как дать привелегии**
 +  * GRANT ALL ON DATABASE demodb TO demo;
 +
 +==== Базы ====
 +
 +  * **Как создать базу в PostgreSQL?**
 +  * CREATE DATABASE mydb WITH OWNER ramesh;
 +
 +  * **Как удалить базу в PostgreSQL?**
 +  * DROP DATABASE mydb;
 +
 +  * **Как получить весь список баз в Postgresql?**
 +  * SELECT datname FROM pg_database;
 +  * SELECT * FROM pg_database;
 +
 +==== Таблицы ====
 +
 +
 +  * **Как вывести список всех таблиц?**
 +  * SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';