I have written this to the PHP-DB list and couldn't get any answers. I have
gone through all the documentation I could find. I have been everywhere and
cannot find an answer to this problem! Perhaps someone on this list can
lend me some insight?!
I think, at heart, the problem is with MySQL permissions or some way 4.0
handles connections across a network, however I just cannot figure it out.
I'm using PHP 4.3.2+MySQL 4.0.14 on server 1
Server 1, however, is connecting to Server 2 which has MySQL 4.0.12
I have permissions on the 4.0.12 server setup like:
user:
localhost user1 all main privs are 'N' except for "File_priv"
192.168.1.% user1 all main privs are 'N' except for "File_priv"
(internal SAN).
db:
% user11 my_database all main privs set to "Y" (select,
insert,update, delete, create, drop, references, index, alter)
If I use the command-line interface from server 1 to server 2 it works
perfectly fine.
I'm using PHP connection to do code like:
$conn = mysql_connect("192.168.1.2","user1","pass");
mysql_select_db("my_database",$conn);
mysql_select_db returns true.
My queries are like:
mysql_query($sql,$conn);
So I'm using the proper connection.
The webpage mysql_error outputs "select command denied to user:
'[EMAIL PROTECTED]' for table 'table_name'"
For every table. And I wonder what the heck is this for because the select
priv is on for that table in the 'db' table.
So, what I did was change the 'user' table with select_priv to "Y" which
basically make this user a super-user for every table. After doing this I
get these errors:
Table 'another_database.table_name' doesn't exist.
I didn't select another_database as my table! I selected my_database as my
table! Why the heck is it selecting the wrong table?!
So, I added a ton of bebugging code. I confirmed that just before calling
mysql_select_db() I had the right table in the variable. I confirmed I'm
only making one database connection, not two. I confirmed that this user
has no permissions for another_database with that user/pass. I confirmed
the same Reference ID for $conn. Is being used in every case.
I know the reason I'm getting the initial "select command denied" error is
because it's still selecting another_database for the table and I don't have
permissions for that unless I add it for super-user like I did.
A work around (which will not work once I get this site in production) is to
do a search/replace on the SQL strings and add "my_database." to every
database table. Once the SQL command becomes "select xxx from
my_database.table_name" it works fine but this is not what I can do in the
end. What the heck could be the problem?! Why doesn't PHP select the right
table?!
This problem happens with persistant or non-persistant connections.
Oh, and another site using the same code and the same PHP install (same
server1) but connecting to a 3.23.xx database works perfectly fine. Just to
throw a wrench in the works.
I've been through all of the mysql docs can't find a thing. Do you guys
know where I'm going wrong?
--
Thomas Deliduka
IT Manager
-------------------------
Xenocast
Street Smart Media Solutions
http://www.xenocast.com/
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]