On Thu, 21 Jul 2005 10:35:38 +0300
"Tomas" <[EMAIL PROTECTED]> wrote:

> Hallo everyone,
> 
> I've setup a web server with OpenBSD 3.7, default install Apache, PHP 5.0.3
> and MySQL 4.0.23. When I connect from other hosts to mysql, everything works
> fine, and then I try to connect to mysql local console, it works too. I know
> that apache is chrooted so my rc.local looks like this:
> <--snip-->
> if [ X"${mysql}" == X"YES" -a -x /usr/local/bin/mysqld_safe ];
> then
> echo -n ' mysqld';
> /usr/local/bin/mysqld_safe --user=_mysql --bind-address=10.30.1.222
> --log=/var/mysql/errorlog >/dev/null 2>&1 &
> for i in 1 2 3 4 5 6;
> do if [ -S /var/run/mysql/mysql.sock ];
> then
> break
> else
> sleep 1
> echo -n '.'
> fi done
> sleep 5
> ln -sf /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
> fi
> </--snip-->
> Like you see I'm using soft link, it's because my /var and /var/www are on
> different mount points, so hard links can't be made. To test if socket is
> working I've issued this command:
> mysqladmin --socket=/var/www/var/run/mysql/mysql.sock version -u 'user' -p
> And it works perfectly, but when I try to use a test web page with code:
> <--snip-->
> <?
> $link = mysql_connect('localhost', 'user', 'password');
> if (!$link) {
>       die('Could not connect: ' . mysql_error());
> }
> echo 'Connected successfully';
> mysql_close($link);
> ?>
> </--snip-->
> I get an error:
> <--snip-->
> [error] PHP Warning:  mysql_connect() [<a
> href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to
> local MySQL server through socket '/var/www/var/run/mysql/mysql.sock' (2)
> </--snip-->
> I've been playing around with this configuration for about too days and it
> seems I've tried everything, but I can't get it working, please help me,
> what I'm missing here...
> 
> 

a soft link can't be created within a chroot()-ed area to "point" to a file
that is outside the chroot()-ed area (you might want to read about soft
links and how they actually work).

what you need to do is have mysql create its socket within the chroot()-ed
area:

mysqld_safe --socket=/var/www/var/run/mysql/mysql.sock

Reply via email to