While accessing the website, I was getting the error as -
Failed to connect to MySQL: Access denied for user 'database_user'@'xxx.xx.xxx.xx' to database 'database_name'
Failed to connect to MySQL: Access denied for user 'database_user'@'xxx.xx.xxx.xx' to database 'database_name'
Generally the above error comes on the website due to user not linked to the database and due to the lack of privilages assisgned to the user .
Solution -
1. Login to user on server : #cd ~username
2. Search the database displayed in the error on the server : #grep -rl "database_name"
You will get the configuration file for that database.
You will get the configuration file for that database.
3. Check the configuration file of the database {it will contain the login details for that database} -
#cat configuration_file.php
Output:
#cat configuration_file.php
Output:
<?php
$myhost = "host's_ip_address";
$myuser = "database_username";
$mypass = "xxxxxxxx";
$mydb = "database_name";
$key = "your_key"; //Don't tuch this !
$myuser = "database_username";
$mypass = "xxxxxxxx";
$mydb = "database_name";
$key = "your_key"; //Don't tuch this !
$con = mysqli_connect($myhost, $myuser, $mypass, $mydb);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
4.You can try to access the database which will confirm that the database is present or not -
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
4.You can try to access the database which will confirm that the database is present or not -
#mysql -u username(present in configuration file) -p then press Enter
password: (Enter the password present in the configuration file)
password: (Enter the password present in the configuration file)
You will enter the "mysql>" window as below -
mysql>
5.To check the database present for that user enter : mysql>show databases;
So as per the output there is no database present for that user due to privilages not assigned.
Output:
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
6. Now login to cPanel >> MySql Databases >> click on Add (Change the privileges to all ) >> Save
Output:
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
6. Now login to cPanel >> MySql Databases >> click on Add (Change the privileges to all ) >> Save
7. Now check the database on the server by show databases command as used earlier
mysql> show databases;
mysql> show databases;
Now the database is linked to the user as we have assigned all the privileges to the user -
Output:
+--------------------+
| Database |
+--------------------+
| information_schema |
| database_username |
+--------------------+
2 rows in set (0.00 sec)
8. Try accessing the website, it will start working fine without any errors.