I am getting Following error in my CodeIgniter application which is live on server.
Here is the output of the error:
A PHP Error was encountered
Severity: Warning
Message: mysqli::real_connect(): (HY000/1044): Access denied for user
'xxx'@'localhost' to database 'xxx'
Filename: mysqli/mysqli_driver.php
Line Number: 161
Backtrace:
File: /home/arya123/public_html/application/controllers/Home.php Line:
7 Function: __construct
File: /home/arya123/public_html/index.php Line: 292 Function:
require_once
you have to set mysql port number which is by default 3306 check this in database.php
use either
'dbport' => '3306',
or
'hostname' => 'mysql.hostingprovider.com:3306',
The same error I was getting when I upload my codeigniter project from localhost to Live server.
What solution I find is to make some changes into the application => config => database.php
Following is the database setting for the
localhost
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'creator',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Following database setting for
live server (Just demo, setting differ as per hosting provider)
1) First you have to create database.
2) find MySql Databases(or anything related database) on dashboard,
3) create new database and put database name, username, password.
4) export database from localhost
5) open phpmyadmin on live server and import it.
6) change the setting of application=>config=>database.php by using FTP client or dashboard.
$db['default'] = array(
'dsn' => '',
'hostname' => 'mysql.hostingprovider.com',
'username' => 'abc.username',
'password' => 'abc.password',
'database' => 'abc.databasename',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Try to use the plain password with no special characters, below is the example:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'password',
'password' => 'Mynewpass@756',
'database' => 'database_name',
);
u can add new user and pass and give it all privileges, like below:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
then, u should update your config.php file, with new user and pass.
Connect localhost with port solves the problem for me.
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost:3308', //Added port here
'username' => 'root',
'password' => '1234',
'database' => 'my_database',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'xxx',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
I had the same trouble.
Since I use xampp and I was running my codeigniter app locally, the problem at the end I solved it by remplacing:
'hostname' => 'localhost '
by
'hostname' => '127.0.0.1:33065'
the :33065 is the port assigned by default by xampp for phpmyadmin.
If you are running your proyect in the xampp default options, changing this, should be enough (hopefully).
But if you don´t, I guess, you can search which port you are using for the database conection, and add it to your hostname with ":" (if you are not sure which port you are using, you always can see in your D.B. administration tool -phpmyadmin or the one you are using- on the options, which port is taking).