Warning: mysqli_connect(): (HY000/1045): Access de

2019-01-01 04:45发布

问题:

Warning: mysqli_connect(): (HY000/1045): Access denied for user \'username\'@\'localhost\' (using password: YES) in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\config.php on line 6

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\login.php on line 10

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\login.php on line 11

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\login.php on line 15

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\login.php on line 16

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\\Users\\xampp\\htdocs\\PHP_Login_Script\\login.php on line 19

I\'m getting this error above on localhost even if my config file is like this:

<?php

    define(\"DB_HOST\", \"localhost\");
    define(\"DB_USER\", \"root\");
    define(\"DB_PASSWORD\", \"\");
    define(\"DB_DATABASE\", \"databasename\");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>

This used to work, but now it doesn\'t anymore. Is there any problem with this code or is it not working now? This is the tutorial I am working on right now.

回答1:

That combination of username, host, and password is not allowed to connect to the server. Verify the permission tables (reloading grants if required) on the server and that you\'re connecting to the correct server.



回答2:

If youre running wamp update

define(\"DB_HOST\", \"localhost\");

To your machines ip address (mine is 192.168.0.25);

define(\"DB_HOST\", \"192.168.0.25\");

You can find it on window by typing ipconfig in your console or ifconfig on mac/linux



回答3:

mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

use DB_HOST instead of DB_SERVER



回答4:

Look at your code You defined DB_HOST and querying DB_SERVER. DB_USER and DB_USERNAME Use this code

define(\"DB_SERVER\", \"localhost\");
define(\"DB_USER\", \"root\");
define(\"DB_PASSWORD\", \"\");
define(\"DB_DATABASE\", \"databasename\");

$connect = mysqli_connect(DB_SERVER , DB_USER, DB_PASSWORD, DB_DATABASE);


回答5:

Make sure that your password doesn\'t have special characters and just keep a plain password (for ex: 12345), it will work. This is the strangest thing that I have ever seen. I spent about 2 hours to figure this out.

Note: 12345 mentioned below is your plain password

GRANT ALL PRIVILEGES ON dbname.* TO \'yourusername\'@\'%\' IDENTIFIED BY \'12345\';


回答6:

you defIne as DB_USER but use as DB_USERNAME. Also php says username@localhost cant access. Not root@localhost.

Change your define or connect paramater.



回答7:

This is your code:

<?php

    define(\"DB_HOST\", \"localhost\");
    define(\"DB_USER\", \"root\");
    define(\"DB_PASSWORD\", \"\");
    define(\"DB_DATABASE\", \"databasename\");

    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>

The only error that causes this message is that:

  1. you\'re defining a DB_USER but you\'re calling after as DB_USERNAME.

Please be more careful next time.

It is better for an entry-level programmer that wants to start coding in PHP not to use what he or she does not know very well.

ONLY as advice, please try to use (for the first time) code more ubiquitous.

ex: do not use the define() statement, try to use variables declaration as $db_user = \'root\';

Have a nice experience :)



回答8:

The same issue faced me with XAMPP 7 and opencart Arabic 3. Replacing localhost by the actual machine name reslove the issue.



回答9:

There is a typo error in define arguments, change DB_HOST into DB_SERVER and DB_USER into DB_USERNAME:

<?php

    define(\"DB_SERVER\", \"localhost\");
    define(\"DB_USERNAME\", \"root\");
    define(\"DB_PASSWORD\", \"\");
    define(\"DB_DATABASE\", \"databasename\");
    $db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

?>


回答10:

Same problem occurd with me, with AWS RDS MySQL. Just now, answered similar question here. Looked various sources, but as of this thread, almost all lack of answer. While this thread helped me, tweak in mind to update hostnames at server. Access your SSH and follow the steps:

cd /etc/
sudo nano hosts

Now, Appending here your hostnames: For example:

127.0.0.1 localhost
127.0.0.1 subdomain.domain.com [if cname redirected to endpoints]
127.0.0.1 xxxxxxxx.xxxx.xxxxx.rds.amazonaws.com [Endpoints]

and now, configuring config/database.php as follows:

$active_group = \'default\';
$query_builder = TRUE;

$db[\'default\'] = array(
    \'dsn\'   => \'\',
    \'hostname\' => \'35.150.12.345\',
    \'username\' => \'user-name-here\',
    \'password\' => \'password-here\',
    \'database\' => \'database-name-here\',
    \'dbdriver\' => \'mysqli\',
    \'dbprefix\' => \'\',
    \'pconnect\' => FALSE,
    \'db_debug\' => TRUE,
    \'cache_on\' => FALSE,
    \'cachedir\' => \'\',
    \'char_set\' => \'utf8\',
    \'dbcollat\' => \'utf8_general_ci\',
    \'swap_pre\' => \'\',
    \'encrypt\' => FALSE,
    \'compress\' => FALSE,
    \'stricton\' => FALSE,
    \'failover\' => array(),
    \'save_queries\' => TRUE
);

where 35.150.12.345 is your IPv4 Public IP, located at ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP(\'35.150.12.345\') there.

Note: Please note that only IPV4 will work at \'hostname\' option. hostname, cname, domains will output database connection error.



回答11:

The question has been answered above, Just to make you feel comfortable using all four string at the same time in a connection

<?php
  define(\"DB_HOST\", \"localhost\");
  define(\"DB_USER\", \"root\");
  define(\"DB_PASSWORD\", \"\");
  define(\"DB_DATABASE\", \"databasename\");

  $db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
  // you could test connection eventually using a if and else conditional statement, 
  // feel free to take out the code below once you see Connected!
  if ($db) {
    echo \"Connected!\";
  } else {
    echo \"Connection Failed\";
  }
?>


回答12:

I had this error trying to connect with a different user than root I\'d set up to limit access.

In mysql I\'d set up user MofX with host % and it wouldn\'t connect.

When I changed the user\'s host to 127.0.0.1, as in \'MofX\'@\'127.0.0.1\', it worked.



回答13:

In my case the problem was:

define (\'DB_PASSWORD\', \"MyPassw0rd!\'\");

(the odd single \' before the double \")



回答14:

Do you have two connections at the same time? If so, close every time you don\'t need it.



回答15:

$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

Put \" DB_HOST \" instead of \" DB_SERVER \" also 
put \" DB_USER \" Instead of \" DB_USERNAME \" 

than it working fine !



回答16:

try

define(\"DB_PASSWORD\", null);

and those are warnings try

$db = @mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

But i will recommend you to set a root password



回答17:

Try changing:

define(\"DB_SERVER\", \"localhost\");

to this:

define(\"DB_SERVER\", \"127.0.0.1\");