The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"авторизация через mysql в Centos"
Отправлено aleksey, 28-Окт-09 12:40 
Здравствуйте.
Поставил новый сервер с Centos 5.4 x86_64, на нём squid-2.6.STABLE21-3.
Пытаюсь в сквиде настроить авторизацию юзеров через базу mysql как у меня давным давно успешно работает на старом сервере (asplinux 9.2 squid-2.5.STABLE9-1.92.7asp). Но почему-то не работает :(

Вот часть конфига squid.conf:
auth_param basic program /usr/libexec/squid/sq_auth.pl
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl inetusers proxy_auth REQUIRED
http_access allow inetusers

sq_auth.pl - простенький скрипт:

#!/usr/bin/perl -w

$|=1;
$mysqluser="login";
$mysqlpass="pass";
$mysqlhost="host.my";
$mysqlport="3306";
$mysqldbas="base";
$mysqltabl="table";

use DBI;

while(<>) {
if ($_ =~ m/^(\w+)(\@(\w+))*\s([^ ].+)$/) {
     $login=$1; $realm=$3; $Ppasswd=$4;
} else {
    $login=''; $realm=''; $Ppasswd='';
   }

$db=DBI->connect("DBI:mysql:database=$mysqldbas;host=$mysqlhost;port=$mysqlport",$mysqluser,$mysqlpass,{AutoCommit=>1,RaiseError=>0,PrintError=>1})|| die "Can't connect to database";
$statement="SELECT passwd FROM $mysqltabl WHERE login='$login";
if ($realm) { $statement=$statement."\@$realm'"; }
else        { $statement=$statement."'"; }
$stn=$db->prepare($statement);
$stn->execute;
$numrows=$stn->rows;
if(!$numrows) {
  print "ERR\n"
} else {
    @row=$stn->fetchrow;
    $Gpasswd=$row[0];
    if (crypt($Ppasswd, $Gpasswd) eq $Gpasswd) {
     print "OK\n";
    } else {
       print "ERR\n";
      }
   }
   $stn->finish;
   $db->disconnect;
};

При запуске сквида запускается, как положено, 5 процессов sq_auth.pl, попытка клиента авторизоваться не проходит, а в логе пишется:

DBI connect('base:host.my','login',...) failed: Can't connect to MySQL server on 'host.my' (13) at /usr/libexec/squid/sq_auth.pl line 38
Can't connect to database at /usr/libexec/squid/sq_auth.pl line 38, <> line 1.

Если tcpdump смотреть, то никаких пакетов в сторону host.my не уходит, т.е. он даже не пытается коннектиться к базе...
Поднял локально mysql, подправил в скрипте адрес хоста на localhost, но не помогло:

DBI connect('base:localhost','login',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) at /usr/libexec/squid/sq_auth.pl line 38
Can't connect to database at /usr/libexec/squid/sq_auth.pl line 38, <> line 1.

Если скрипт руками запустить, то он работает (и с локальным mysql, и с удаленным): логин, пароль принимает, OK или ERR выдаёт как надо. А под сквидом не хочет :(
Что может быть не так? В центосе как-то хитро сквид собран?
Пробовал сквид 3.0 вот отсюда: http://people.redhat.com/jskala/squid/squid-3.0.STABLE16-1.el5 всё тоже самое :(
Но в Fedora11 squid 3.0 замечательно работает!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру