php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9601 MySQL connects to wrong database
Submitted: 2001-03-07 09:34 UTC Modified: 2001-04-10 10:52 UTC
From: gkopp at ideastar dot com Assigned:
Status: Closed Package: MySQL related
PHP Version: 4.0.4pl1 OS: Linux 6.2
Private report: No CVE-ID: None
 [2001-03-07 09:34 UTC] gkopp at ideastar dot com
MySQL: 3.22.32-beta
Apache: 1.3.14

MySQL is connecting to the wrong database:

I have two databases:

ceres
ceres_test

The ceres database is the live database and the user "ceres" is granted permissions on it.

The ceres_test database is a database that is identical, but I use for testing purposes.

The mysql user "ceresdb" has permissions to access the "ceres" database ONLY.

However, if I execute:

mysql_pconnect("localhost","ceresdb", "password");
mysql_select_db("ceres_test");

It actually connects to the "ceres" database instead. I should have recieved and error that it was unable to connect.

We have verified this several ways.

Also, if I change the username/password to the root user or a user that has permissions on ALL databases, it works fine.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-03-07 10:45 UTC] cnewbill@php.net
Couple stupid questions.

1) When you compiled PHP, did you just use --with-mysql instead of --with-mysql=/path/to/mysql?

2) Does the mysql command line tool connect? i.e. mysql -u ceres -pxxxx ceres_test

-Chris
 [2001-03-07 10:59 UTC] cnewbill@php.net
Please use the bug system when replying.  Thanx.

Well it looks like you don't have the Grant Tables setup properly OR you didn't flush them after changing them.

Do a `mysqladmin reload` and try again, if it still doesn't connect then you need to fix your grant tables.

See http://www.mysql.com/documentation/index.html for information on how to do this.

I haven't seen it cause any problems, but just to be safe you should recompile PHP using --with-mysql=/path/to/mysql so PHP is aware of what version you are actually using.

If for some reason your grant tables are not the problem simply reopen this report.

-Chris

 [2001-03-07 10:59 UTC] cnewbill@php.net
USER NOTES FROM EMAIL:

I just used --with-mysql

AND

ERROR 1045: Access denied for user: 'ceresdb@localhost' (Using password:
YES)

When executing the mysql command from a bash shell.

Greg
 [2001-03-07 12:13 UTC] gkopp at ideastar dot com
The grant tables are fine. Perhaps we misunderstood ourselves.

If I use "mysql" to connect to the live database using a user name and password that is in the grant tables, it works fine.

If I use "mysql" to connect to the test database using a user name and password that DOES NOT HAVE PRIVILEGES to this database, authentication fails, as it should.

If I use PHP to connect to the live database using a user name and password that is in the grant tables, it works fine.

If I use PHP to connect to the test database using the SAME user name and password that works for the live database, it connects to the LIVE database instead of the test database.

We found this by accident when setting up a test web site that duplicates a live site. When I changed the database name in the connection object, it didn't fail, it just connected to the live database.
 [2001-03-07 12:58 UTC] cnewbill@php.net
Okay.

Can anybody else comment on this?  All the machines I use have newer versions of both MySQL and PHP.  They also work for this situation.

You may still want to try the --with-mysql=/path/to/mysql recompile if you can, and while you are recompiling grab the latest snapshot of PHP from http://snaps.php.net.

-Chris
 [2001-04-10 10:52 UTC] sniper@php.net
No feedback. If this happens also with soon to be released PHP 4.0.5, reopen this bug report.

--Jani

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Apr 18 07:01:27 2024 UTC