I wrote some function used by a php webpage, in order to interact with a mysql database. When I test them on my server I get this error:
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
I am able to use them on my pc (using XAMPP) and I can navigate through the tables of the database using the command line in the server. However, the webpage fails to connect. I've checked the password but with no results. It's correct (otherwise I could not log in to mysql from the command line).
The call of the function is the following:
$conn = new mysqli("localhost", "root", "password", "shop");
Do I have to set something in my server? Thanks
Edit: PHP version 5.3.3-7+squeeze1 mysql version: 5.1.49-3 both on debian
Here maybe?
I believe that the code should be:
$connect = new mysqli("host", "root", "", "dbname");
because root does not have a password. the
(using password: YES)
is saying "you're using a password with this user"Is there a user account entry in the DB for root@localhost? In MySQL you can set different user account permissions by host. There could be several different accounts with the same name combined with the host they are connecting from. The most common are root@127.0.0.1 and root@localhost. These can have different passwords and permissions. Make sure root@localhost exist and has the settings you expect.
I am willing to bet, based on your explanation, that this is the problem. Connecting from another PC uses a different account than root@localhost and the command line I think connects using root@127.0.0.1.
Try initializing your variables and use them in your connection object:
I had this problem too. But this was because of another reason. My password began with character
$
... e.g.$MyPassword
I've changed it to#MyPassword
and the problem is solved.