ID: 16768 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Closed Bug Type: MySQL related Operating System: Red Hat Linux 7.2 PHP Version: 4.2.0 New Comment:
My load is doing the same thing on Mandrake 8.2. Any ideas of what I can check to make sure this isn't a user error? Previous Comments: ------------------------------------------------------------------------ [2002-04-25 17:23:44] [EMAIL PROTECTED] 4.2.0 was packed with configure script made by autoconf 2.52 which doesn't seem to work correcly. configure built with autoconf 2.13 works fine. Resolutions: * wait for 4.2.1 (due in a week or so) * if you have autoconf 2.13 on you system, delete configure and run ./buildconf * download configure script from http://www.edin.dk/php/configure.gz ------------------------------------------------------------------------ [2002-04-24 13:45:55] [EMAIL PROTECTED] As others have stated on the dev list, the problem seems to be that PHP 4.2.0 is trying to connect using TCP instead of using the UNIX socket. I can confirm that this is what's happening on my end too. With PHP 4.1.2, tcpdump shows no TCP traffic and everything works correctly. With PHP 4.2.0, tcpdump shows connections to the MySQL port (3306) and it doesn't work. In both PHP versions, MYSQL_SOCKET is set the same way according to phpinfo(): /var/lib/mysql/mysql.sock, which is correct for my system. And both PHP versions show the same configure output: checking for MySQL support... yes checking for MySQL UNIX socket... /var/lib/mysql/mysql.sock ------------------------------------------------------------------------ [2002-04-23 17:25:48] [EMAIL PROTECTED] Hmm, I tested again and now I'm getting this slightly different message: Warning: Host 'my.fully.qualified.name' is not allowed to connect to this MySQL server Also, I found these calls result in the same error message: mysql_connect("127.0.0.1", "username", "password"); mysql_connect(":/var/lib/mysql/mysql.sock", "username", "password"); This can't be the correct behavior. When I connect to localhost, MySQL should "see" the PHP connection as being from localhost, NOT my machine's fully-qualified DNS name. This is what happens when I use the command-line "mysql" program, or any prior version of PHP (3.x - 4.1.2). This is a critical problem because it breaks all of my existing PHP scripts that use MySQL. I'm reluctant to start playing around with my MySQL permissions tables, because if/when this bug is addressed, I'd have to put everything back. So for now, I'm back to 4.1.2. ------------------------------------------------------------------------ [2002-04-23 15:50:29] [EMAIL PROTECTED] After upgrading from PHP 4.1.2 to PHP 4.2.0, MySQL connections fail with this error: Warning: Access denied for user: '[EMAIL PROTECTED]' Apparently, it is trying to connect to 'my.fully.qualified.name' instead of 'localhost' as before. This seems wrong because my mysql_connect() call uses 'localhost' as the host name: mysql_connect("localhost", "username", "password"); I can work around this by changing all my MySQL grants from 'username'@'localhost' to 'username'@'my.fully.qualified.name', but that seems unnecessary; this should be fixed in PHP. BTW, I've used the same above mysql_connect() call since the PHP 3.x days and it's always worked fine, until now. My PHP configure line: ./configure --with-apache=../apache_1.3.24 --enable-track-vars \ --with-mysql --with-zlib --with-gd All PHP configuration settings are defaults. (i.e. php.ini = php.ini-dist) Apache version is 1.3.24. MySQL version is 3.23.49a. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16768&edit=1