2

I created user dashboard and granted it various privileges (such as SHOW DATABASES). I initially set the Host=[private ip of web-server], but kept getting access denied errors returned from php's mysql_connect, so I set Host=192.168.% so any machine on our network can access it.

I can successfully connect to the mysql Db on the Db server from my Mac using MySQLWorkbench (and successfully ran SHOW DATABASES;), but when I just try to connect via php on our webserver, I just get: Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)

the code i'm using in php is:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<?php
$dbhost = "192.168.x.x"; // but no x's
$dbuser = "dashboard";
$dbpass = "password"; // i copied&pasted the real password for other successful logins
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
$query = mysql_query('SHOW DATABASES;');
?>
</head>
<body>
<? echo $query ?>
</body>
</html>

Semi-related note: Can I somehow set $dbpass equal to an encrypted string so it's not stored a plain-text?

EDIT: the mysql user is currently dashboard@192.168.% (not localhost)

EDIT 2: I thought since the Web Server is in the DMZ, that it might be communicating with MySQL from it's public IP, but when I change the host of dashboard to that, I get Host '192.168.xx.xx' is not allowed to connect to this MySQL server. So it seems that is not the case…

Jakob Jingleheimer
  • 30,952
  • 27
  • 76
  • 126
  • You have only defined user access for `dashboard@localhost`, you need to also grant user access to `dashboard@phpcomputer`, and log in with those credentials. – Johan Sep 08 '11 at 21:13
  • hi @Johan, thanks for your response, but no, it is not set to localhost. i initially created the user a `dashboard@webserver` and now have changed it to `dashboard@192.168.%.%` (which should allow any machine on our private network to connect as that user, right?). – Jakob Jingleheimer Sep 08 '11 at 21:23
  • Check - 1. is mysql listening on port OR socket? 2. Show us the privileges for this user 3. 192.168.x.x is local network – ajreal Sep 09 '11 at 15:05
  • thanks for your response @ajreal. i figured out what was going on: http://stackoverflow.com/questions/7354521/mysql-access-denied-for-user-only-happens-when-connecting-via-php/7363549#7363549 – Jakob Jingleheimer Sep 09 '11 at 18:14
  • BTW you're missing an opening ``. – Lightness Races in Orbit Sep 09 '11 at 18:25

2 Answers2

2

The password contained a reserved character, so in PHP it needed to be enclosed with single quotes instead of double quotes.

Lightness Races in Orbit
  • 378,754
  • 76
  • 643
  • 1,055
Jakob Jingleheimer
  • 30,952
  • 27
  • 76
  • 126
0

did you run

GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' 

or just the same, but @'localhost' ?

user410932
  • 2,915
  • 4
  • 22
  • 23