Postgresql php авторизация: Как сделать авторизацию на сайте с помощью php и postgreSQL? — Хабр Q&A
Содержание
Авторизация PostgreSQL через PAM | PHPClub
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
-
Автор темы
Vetaly -
Дата начала
Vetaly
Guest
#1
Авторизация PostgreSQL через PAM
день добрый подскажите как осуществить процесс авторизации PostgreSQL через PAM и через Radius
стоит FreeBSD 5. 3
PostgreSQL 8.0
php 5.0.4
Апача 2.0.54
hash
Guest
#2
а зачем так извращатся?
искай тут
или тут
Но для начала реши, что, где и откуда у тебя будет авторизоваться???
Vetaly
Guest
#3
спасибо за ссылочки был уже там.
все полезные ссылки там битые.
Мне необходимо сделать авторизацию через Radius так как слишком много серверов на обслуживании. и прописывать на каждом из них заного пароли и юзверей тошно
si
Administrator
#4
ккто должен у радиуса авторизоватся ? юзеры которые хотят работать с PG ? или рабиус должен брать юзеров из PG ?
Vetaly
Guest
#5
да юзвери которые работают с ПГ и админы чтоб могли зайти на машину
hash
Guest
#6
посмотри еще тут
-~{}~ 14. 06.05 15:47:
да юзвери которые работают с ПГ и админы чтоб могли зайти на машину
Нажмите для раскрытия…
полюбому тебе придется их заводить, и правит pg_dba.conf…
si
Administrator
#7
Vetaly
админы на машину как заходять ?
ты все в одну кучу чтото сваливаешь
Vetaly
Guest
#8
Есть главный сервер на котором лежит база данных на ПГ всех админов и их паролей. На этом сервере есть freeradius.
Мне нужно минимальными усилиями например на других серверах (которых очень много) обеспечить вход всех админов с главного сервера. Тоесть чтоб проверка осуществлялась через главный сервер.
si
Administrator
#9
это уже понятнее. значит freeradius должен ходить в PG за данными. он насколько я помню это умеет. теперь осталось понять что такое «обеспечить вход всех админов с главного серверЭ. ко какому проторолу они ходять ? и почему именно с главного сервера ?
Vetaly
Guest
#10
ну допустим я обслуживаю много серверов и вдруг я уежаю, тут возникают проблемы и любой из админов должен зайти на любой сервер со своим ЛОГИНОМ и ПАРОЛЕМ (не зная моего) например по ssh
hash
Guest
#11
тогда тебе нужно устонавливать систему распределения ключей типа
http://www. freebsd.org/doc/ru_RU.KOI8-R/books/handbook/kerberosiv.html
Vetaly
Guest
#12
ну это немного не то что мне нужно
мне кажется что radus больше подходит для диалапшиков а керберс немного не то хотяя…
Войдите или зарегистрируйтесь для ответа.
Поделиться:
Facebook
Twitter
WhatsApp
Ссылка
PHP: Постоянные соединения с базами данных
Change language:
EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther
Submit a Pull Request
Report a Bug
Постоянные соединения представляют собой связи с базами данных,
которые не закрываются при завершении скрипта. При получении запроса
на постоянное соединение PHP вначале проверяет, имеется ли
идентичное постоянное соединение (которое было открыто при предыдущих
обращениях) и, если таковое было найдено, использует его.
В случае, если идентичного соединения нет, PHP создаёт новое. Под
«идентичным» подразумевается соединение, открытое на том же хосте с
таким же именем пользователя и паролем (если они указаны).
Та часть разработчиков, которая не имеет чёткого представления о том,
как работает веб-сервер и как распределяется нагрузка, могут получить
ошибочное представление о том, чем на самом деле являются постоянные
соединения. В частности, постоянные соединения не
предоставляют возможность открывать ‘пользовательские сессии’ в том же
самом соединении, они не предоставляют возможность
организовывать более эффективные транзакции, также они не предоставляют
множества других полезных возможностей. Фактически, постоянные соединения
не предоставляют никакой функциональности, которая
была бы невозможна в непостоянных аналогичных соединениях.
Почему?
Это зависит от того, как происходит взаимодействие с веб-сервером. Существует
три основных способа использования PHP сервером для генерации веб-страниц.
Первый способ заключается в том, чтобы использовать PHP как CGI-обёртку.
При этом PHP-интерпретатор создаётся и уничтожается при каждом
обращении к странице (PHP-скрипту). Поскольку интерпретатор
уничтожается после каждого запроса к серверу, все используемые им ресурсы
(в том числе и соединение с базой данных) закрываются. Следовательно,
в этом случае вы не получите ничего от использования постоянных соединений —
их просто нет.
Второй, и наиболее популярный способ — использовать PHP как модуль
в сервере, который использует несколько процессов. В число таких серверов
сейчас входит только Apache. В таком случае, можно выделить один процесс
(родительский), который координирует работу всех остальных процессов
(дочерних), которые фактически и выполняют работу по обслуживанию веб-страниц.
При каждом обращении клиента к серверу запрос перенаправляется одному из
дочерних процессов, который в данный момент не занят обслуживанием другого
клиента. Это означает, что когда тот же самый клиент выполняет повторный
запрос к серверу, он может быть обработан другим дочерним процессом, отличным
от того, который был при первом обращении. После открытия постоянного
соединения каждая последующая страница, требующая соединения с базой данных,
может использовать уже установленное ранее соединение с SQL-сервером.
Третий способ — использовать PHP в качестве плагина в многопоточном
веб-сервере. В настоящее время в PHP реализована поддержка ISAPI,
WSAPI, и NSAPI (для Windows-платформ), которые позволяют
подключать PHP к таким многопоточным серверам, как Netscape FastTrack
(iPlanet), Microsoft’s Internet Information Server (IIS) и
O’Reilly WebSite Pro. В этом случае поведение PHP полностью аналогично
рассмотренной ранее модели с использованием нескольких процессов.
Если постоянные соединения не предоставляют никакой дополнительной функциональности,
чем же они тогда так хороши?
Ответ содержится в повышении эффективности. Постоянные соединения
полезны в том случае, если при открытии большого количества SQL-соединений
возникает ощутимая нагрузка на сервер. То, насколько велика эта нагрузка,
зависит от многих факторов. Например, от того, какая именно база данных
используется, находится ли она на том же компьютере что и ваш веб-сервер,
насколько загружена машина, на которой установлен SQL-сервер, и так далее.
В случае, если затраты на установку соединения велики, постоянные соединения
могут вам существенно помочь. Они позволяют дочернему процессу на
протяжении всего жизненного цикла использовать одно и то же соединение
вместо того, чтобы создавать его при обработке каждой страницы,
которая взаимодействует с SQL-сервером. Это означает, что каждый дочерний
процесс, открывший постоянное соединение, будет иметь своё собственное
соединение с сервером. Например, если у вас запущено 20 дочерних процессов,
которые выполнили скрипт, использовавший постоянное соединение с SQL-сервером,
вы получите 20 различных соединений с SQL-сервером, по одному на каждый дочерний
процесс.
Следует заметить, что этот подход имеет некоторые недостатки: если
вы используете базу данных с ограниченным количеством возможных
подключений, оно может быть превышено количеством запрашиваемых
дочерними процессами постоянных соединений. Например, если ваша база
данных позволяет 16 одновременных соединений, и во время нагрузки
на сервер 17 дочерних процессов попробуют открыть соединение, одна из
попыток потерпит неудачу. Если в вашем коде содержатся ошибки, не позволяющие
закрывать соединение (например, бесконечные циклы), база данных с
32 одновременными подключениями вскоре может оказаться заблокированной.
Информацию о том, как обрабатывать открытые и неиспользуемые соединения, вы можете
найти в документации к вашей базе данных.
Внимание
Есть ещё два дополнительных предостережения, которые следует
помнить при работе с постоянными соединениями. В случае, если скрипт
блокирует таблицу и по каким-либо причинам не может её освободить,
при использовании постоянного соединения все последующие скрипты,
которые используют это соединение будут блокированы бесконечно
долго и могут потребовать рестарта веб-сервера или сервера баз данных.
Второе предостережение заключается в том, что открытые транзакции,
если они не были закрыты до завершения работы скрипта, будут продолжены
в следующем скрипте, использующем это же постоянное соединение.
Исходя из этого, вы можете использовать функцию
register_shutdown_function() для указания простой функции,
которая снимает блокировку таблиц или отката ваших транзакций.
Ещё лучше избежать этих проблем полностью, не используя постоянные
соединения в скриптах, которые используют блокировку таблиц или транзакции
(при этом вы всё ещё можете использовать их где-то в другом месте).
Важное резюме. Постоянные соединения были созданы для точного отображения
обыкновенных соединений. Это означает, что у вас всегда
есть возможность заменить все постоянные соединения непостоянными, и это
никак не отразится на поведении скрипта. Такая замена может
повлиять (и, наверное, повлияет) на эффективность работы скрипта, но
никак не на его поведение.
Смотрите также ibase_pconnect(), ociplogon(),
odbc_pconnect(), oci_pconnect(),
pfsockopen() и pg_pconnect().
+add a note
User Contributed Notes 12 notes
up
down
21
php at alfadog dot net ¶
9 years ago
One additional not regarding odbc_pconnect and possibly other variations of pconnect:
If the connection encounters an error (bad SQL, incorrect request, etc), that error will return with be present in odbc_errormsg for every subsequent action on that connection, even if subsequent actions don't cause another error.
For example:
A script connects with odbc_pconnect.
The connection is created on it's first use.
The script calls a query "Select * FROM Table1".
Table1 doesn't exist and odbc_errormsg contains that error.
Later(days, perhaps), a different script is called using the same parameters to odbc_pconnect.
The connection already exists, to it is reused.
The script calls a query "Select * FROM Table0".
The query runs fine, but odbc_errormsg still returns the error about Table1 not existing.
I'm not seeing a way to clear that error using odbc_ functions, so keep your eyes open for this gotcha or use odbc_connect instead.
up
down
12
Tom ¶
13 years ago
There's a third case for PHP: run on a fastCGI interface. In this case, PHP processes are NOT destroyed after each request, and so persistent connections do persist. Set PHP_FCGI_CHILDREN << mysql's max_connections and you'll be fine.
up
down
10
ynzhang from lakeheadu canada ¶
14 years ago
It seems that using pg_pconnect() will not persist the temporary views/tables. So if you are trying to create temporary views/tables with the query results and then access them with the next script of the same session, you are out of luck. Those temporary view/tables are gone after each PHP script ended. One way to get around this problem is to create real view/table with session ID as part of the name and record the name&creation time in a common table. Have a garbage collection script to drop the view/table who's session is expired.
up
down
11
christopher dot jones at oracle dot com ¶
15 years ago
For the oci8 extension it is not true that " [. ..] when using transactions, a transaction block will also carry over to the next script which uses that connection if script execution ends before the transaction block does.". The oci8 extension does a rollback at the end scripts using persistent connections, thus ending the transaction. The rollback also releases locks. However any ALTER SESSION command (e.g. changing the date format) on a persistent connection will be retained over to the next script.
up
down
6
pacerier at gmail dot com ¶
7 years ago
Did anyone else notice that the last paragraph contradicts everything above it?
( cached page: https://archive.is/ZAOwy )
up
down
6
ambrish at php dot net ¶
12 years ago
In IBM_DB2 extension v1. 9.0 or later performs a transaction rollback on persistent connections at the end of a request, thus ending the transaction. This prevents the transaction block from carrying over to the next request which uses that connection if script execution ends before the transaction block does.
up
down
5
andy at paradigm-reborn dot com ¶
16 years ago
To those using MySQL and finding a lot of leftover sleeping processes, take a look at MySQL's wait_timeout directive. By default it is set to 8 hours, but almost any decent production server will have been lowered to the 60 second range. Even on my testing server, I was having problems with too many connections from leftover persistent connections.
up
down
-3
RQuadling at GMail dot com ¶
17 years ago
If you have multiple databases on the same server AND you are using persistent connections, you MUST prefix all the table names with the specific database name.
Changing the database using the xxx_select_db functions alters the database for the connection for all users who are sharing that connection (assuming PHP is running shared and not CGI/CLI).
If you have 2 databases (live and archive) and your script is talking to both, you cannot use 2 persistent connections and change the database for each one.
Internally, persistent connections are used even if you do not specify that you want to use persistent connections. This is why new_link was added to mysql_connect/mssql_connect (PHPV4.2.0+).
up
down
-3
fabio ¶
17 years ago
up
down
-3
jean_christian at myrealbox dot com ¶
20 years ago
If anyone ever wonders why the number of idle db process (open connections) seems to grow even though you are using persistent connections, here's why:
"You are probably using a multi-process web server such as Apache. Since
database connections cannot be shared among different processes a new
one is created if the request happen to come to a different web server
child process."
up
down
-8
whatspaz at g NO dot SPAM mail dot c o m ¶
16 years ago
in response to web at nick, have you tried FLUSH PRIVILEGES. this should reload those privileges.
up
down
-16
aaryal at foresightint dot com ¶
19 years ago
this one bit quite a bit of chunk out of my you-know-what. seems like if you're running multiple database servers on the same host (for eg. MySQL on a number of ports) you can't use pconnect since the port number isn't part of the key for database connections. especially if you have the same username and password to connect to all the database servers running on different ports. but then it might be php-MySQL specific. you might get a connection for an entirely different port than the one you asked for.
+add a note
postgresql — php postgres ночные кобылы
Задавать вопрос
спросил
Изменено
11 лет, 10 месяцев назад
Просмотрено
640 раз
Лектор потребовал, чтобы мы сделали домашнее задание по PHP и PostgreSQL , поэтому я скачал из Интернета пакет под названием «The BitNami WAPPStack», в котором были php, phpPgAdmin.
Проблема в том, что мне не удалось получить доступ к базе данных, и мне не удается войти в систему, хотя я проверил пароль и все в порядке. я использую следующее:
- имя пользователя: Администратор
- пароль: 123
Попытки прочитать проблему не увенчались успехом. я наткнулся на некоторые загадочные часто задаваемые вопросы от phpPgAdmin
Ошибки входа
В: Я всегда получаю сообщение «Ошибка входа», хотя я уверен, что я использую правильное имя пользователя и пароль.
О: Существует ряд причин, по которым вы не сможете подключиться, обычно они не связаны с самим phpPgAdmin. Сначала проверьте журнал Postgres на своем сервере, он должен содержать сообщение об ошибке FATAL с указанием точной причины, по которой не удается войти в систему. Вам, вероятно, потребуется либо изменить имя пользователя или пароль, либо добавить разрешения LOGIN для роли, либо изменить файл pg_hba.conf в каталоге данных Postgres; поэтому следуйте указаниям, изложенным в сообщении FATAL.
- вам, вероятно, потребуется изменить имя пользователя и пароль 🙁 я пробовал много раз)
- добавить разрешения LOGIN для роли (что, черт возьми, это за фигня?)
- настроить pg_hba.conf(зачем новичку править какие-либо конфигурации?)
После нескольких тщетных попыток почти сдаюсь.
Вопрос
Какой самый безболезненный способ заставить работать php, postgresql (настроить файл предпочтительнее, чем собирать из исходников) Спасибо.
РЕДАКТИРОВАТЬ: Я использую Windows XP SP2.
- php
- postgresql
2
Здесь нужно беспокоиться о двух учетных записях. Вы входите в phpPgAdmin, используя имя пользователя «administator» и один пароль. Доступ к самой базе данных осуществляется с использованием имени пользователя «postgres» и второго пароля. Пароли должны были быть запрошены во время установки, и они могут совпадать. Однако имена пользователей разные, что кажется наиболее вероятным источником вашей проблемы.
Новички должны отредактировать файл pg_hba.conf, чтобы упростить эту задачу, поскольку установка по умолчанию настроена на безопасность. Возможно, вы захотите установить самую простую установку, но такая установка также сделает вас более уязвимыми для взлома. BitNami выбрала то, что они считают разумным балансом между безопасностью и простотой использования с этой системой с двумя паролями.
1
Ну, это конечно зависит от ОС. вы используете, но я предпочитаю Linux (Debian). В Debian установить PHP, PostgreSQL и поддержку PostgreSQL для PHP очень просто:
sudo apt-get установить php5 php5-pgsql postgresql-сервер
Вот и все. Если вы используете другую ОС, думаю, я могу подробно описать шаги и для нее.
1
Попробуйте использовать имя пользователя postgres
.
Альтернативой пакету WAPP является пакет WAMP (возможно, XAMPP) с отдельным PostgreSQL.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie
.
«Вход запрещен по соображениям безопасности» Ошибка phppgadmin
от Arya MA | 20 мая 2021 г.
При попытке доступа к phpPgAdmin пользователи часто видят ошибку «Вход запрещен по соображениям безопасности».
В рамках наших Служб управления сервером мы помогаем нашим клиентам регулярно исправлять запросы, связанные с phpPgAdmin.
Давайте сегодня обсудим возможные причины и способы устранения этой ошибки.
Что вызывает ошибку phpPgAdmin «Вход запрещен по соображениям безопасности»?
Недавно мы получили запрос о том, что клиент получает сообщение об ошибке, как показано ниже, при доступе к PostgreSQL через phpPgAdmin.
Пользователи перенаправлялись на страницу входа с вышеуказанным сообщением. Обычно это происходит, когда мы включаем дополнительную безопасность входа в файл конфигурации phpPgAdmin. Давайте теперь обсудим, как наши инженеры службы поддержки исправляют эту ошибку.
Как исправить ошибку phpPgAdmin «Вход запрещен по соображениям безопасности»?
Как мы видели ранее, эта ошибка возникает в основном, когда мы включаем дополнительную безопасность входа. Таким образом, чтобы исправить эту ошибку, наши инженеры службы поддержки переводят этот параметр в false в файле конфигурации.
Во-первых, нам нужно открыть файл config.inc.php в /etc/phppgadmin с помощью любого текстового редактора. Затем измените $conf[‘extra_login_security’] = true
; к ложному.
Если включена дополнительная защита входа в систему, она запрещает вход через phpPgAdmin без пароля или определенных имен пользователей (pgsql, Postgres, root, администратор). Таким образом, по умолчанию значение равно true.
Теперь, когда мы изменили дополнительные параметры безопасности входа в систему, нам нужно перезапустить PostgreSQL с помощью приведенной ниже команды, чтобы изменения вступили в силу.
sudo systemctl restart postgresql
Наконец, нам также необходимо перезапустить службу apache с помощью следующей команды: Сервер Linux, доступ к серверу PostgreSQL из Tools & Настройки > Серверы баз данных не работает с той же ошибкой.
Чтобы исправить ошибку, нам нужно открыть файл /usr/local/psa/admin/htdocs/domains/databases/phpPgAdmin/conf/config.inc.php
. Затем нам нужно отключить параметр $conf['extra_login_security']
, установив для него значение false.
Наконец, нам нужно перезапустить службу PostgreSQL с помощью следующей команды:
service postgresql restart
[Нужна дополнительная помощь с ошибками PostgreSQL? – Мы доступны 24*7]
Заключение
Короче говоря, ошибка «Вход запрещен по соображениям безопасности» может возникнуть, если в файле конфигурации phpPgAdmin включена дополнительная безопасность входа. Сегодня мы увидели, как наши инженеры службы поддержки исправили эту ошибку.
ПРЕДОТВРАТИТЕ СБОЙ СЕРВЕРА!
Больше никогда не теряйте клиентов из-за низкой скорости сервера! Позвольте нам помочь вам.
Наши специалисты по серверам будут контролировать и обслуживать ваш сервер 24/7, чтобы он оставался молниеносно быстрым и безопасным.