PDOException (1044) SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'
Asked Answered
C

13

11

I am using Laravel 5 and getting the following exception:

PDOException (1044) SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'

My database configuration file is:

<?php

return [
/*
|--------------------------------------------------------------------------
| PDO Fetch Style
|--------------------------------------------------------------------------
|
| By default, database results will be returned as instances of the PHP
| stdClass object; however, you may desire to retrieve records in an
| array format for simplicity. Here you can tweak the fetch style.
|
*/

'fetch' => PDO::FETCH_CLASS,

/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/

'default' => 'mysql',

/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/

'connections' => [

    'sqlite' => [
        'driver'   => 'sqlite',
        'database' => storage_path().'/database.sqlite',
        'prefix'   => '',
    ],

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    'pgsql' => [
        'driver'   => 'pgsql',
        'host'     => env('DB_HOST', 'localhost'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => 'public',
    ],

    'sqlsrv' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_HOST', 'localhost'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'prefix'   => '',
    ],

],

/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/

'migrations' => 'migrations',

/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/

'redis' => [

    'cluster' => false,

    'default' => [
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
    ],

    ],

];

How can I solve it?

Calondra answered 1/5, 2015 at 12:11 Comment(2)
Are you using homestead as development environment? Also do you use .env file for environment? Better if you can share your database configuration file.Oculomotor
I added configuration file. Current application environment: productionCalondra
O
8

Put a .env file in your root directory and paste this code there.

APP_ENV=local
APP_DEBUG=true
APP_KEY=1CaND3OKKvOGSBAlCg6IyrRmTQWwZjOO

DB_HOST = localhost
DB_DATABASE = YOUR_DATABASE_NAME
DB_USERNAME = USER_NAME
DB_PASSWORD = PASSWORD

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

Update your database, username and password field here and it should solve your problem. In your configuration file env() function is looking for this file and variables from here.

UPDATE: You must create a blank database before running the app or migration.

Oculomotor answered 1/5, 2015 at 14:6 Comment(2)
This .env file was not in my root directory.. but after creating it still problem is same..Calondra
I solved it. My database and username both were 'forge'. I changed my database name and also username and solved it... Thanks @Ariful HaqueCalondra
G
3

We forgot to set DB_USERNAME= in the .env file, so we got this error:

SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'

Open the .env file and edit it. Just set up correct DB credentials:

DB_USERNAME=         //Your Database Username           

DB_USERNAME should be set to root if you do not have a default username in the installation time

After changes of .env enter this command in your terminal for clear cache:php artisan config:cache


NOTE: If there is still error

If you are using the PHP's default web server (eg. php artisan serve) you need to restart your server

OR

If you have used XAMPP then restart your Apache server

Grandmother answered 19/7, 2019 at 5:43 Comment(1)
Thanks for php artisan config:cache --> +1Recession
S
2
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=YOUR_DATABASE_NAME
DB_USERNAME=root
DB_PASSWORD=

The DB_USERNAME= should be set to root if you do not have a default username in the installation of MySQL in XAMPP.

Stutz answered 25/10, 2018 at 12:4 Comment(0)
Z
1

Sometime in the future. This will be a basic setup if using MySQL instead of Homestead. Config->database.php file

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'yourDatabaseName'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

and in your .env file

APP_ENV=local
APP_DEBUG=true
APP_KEY=ruA9CAKRJCFgLOD1nc5o1BmvaTGokasi

DB_HOST=localhost
DB_DATABASE=yourDatabaseName


CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

and if you run the command it should work smoothly.

Zaid answered 20/2, 2017 at 5:33 Comment(1)
Nice answer @Krishneil.Howarth
E
1

Had the same problem after changing the ownership of the account, so I ended up doing the following:

(This worked for me)

Take note of your actual user and password Go to your cPanel (that is if you're using cPanel) From Databases tab, select MySQL Databases. Navigate to the Current Users Delete the user that corresponds to the database You are having conflict with. After deletion, go to the Add User to Database Tab and reenter the username and password, this will regenerate the connection with the current owner privileges.

Expunction answered 10/8, 2021 at 19:21 Comment(0)
O
0

You can check the current environment with: php artisan env

next

  • create under config/development | staging (folder)
  • save a file database.php with development | staging access
  • edit .env file APP_ENV=development | staging | production
Orangeman answered 30/10, 2015 at 22:49 Comment(0)
H
0

Try to go to database.php file correct your database name,username and password

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | PDO Fetch Style
    |--------------------------------------------------------------------------
    |
    | By default, database results will be returned as instances of the PHP
    | stdClass object; however, you may desire to retrieve records in an
    | array format for simplicity. Here you can tweak the fetch style.
    |
    */

    'fetch' => PDO::FETCH_OBJ,

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
    */

    'default' => env('DB_CONNECTION', 'mysql'),

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Here are each of the database connections setup for your application.
    | Of course, examples of configuring each database platform that is
    | supported by Laravel is shown below to make development simple.
    |
    |
    | All database work in Laravel is done through the PHP PDO facilities
    | so make sure you have the driver for your particular database of
    | choice installed on your machine before you begin development.
    |
    */

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'msm'),----database name
            'username' => env('DB_USERNAME', 'root'),--localhost username
            'password' => env('DB_PASSWORD', ''),--localhost password
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'msm'),----database name
            'username' => env('DB_USERNAME', 'root'),--localhost username
            'password' => env('DB_PASSWORD', ''),--localhost password
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
    */

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    */

    'redis' => [

        'cluster' => false,

        'default' => [
            'host' => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

];
Hautesalpes answered 18/11, 2016 at 5:47 Comment(0)
O
0

This problem can be caused by the file not having the expected ".env" extension.

If you have file extensions hidden in Windows (which is on by default), then it can easily look like the extension is ".env", when it is actually something like, like ".env.txt".

This means that the program won't be able to find your ".env" file because it doesn't have the right extension.

Open the file with an editor like Sublime Text, and you'll see what the actual extension is. If it has a ".txt" extension, delete that part and re-save.

Orthoclase answered 2/5, 2019 at 3:58 Comment(0)
W
0

I was getting the same message with empty username. The username was always blank.

The issue was with MySQL. The SQLSTATE error message is being passed directly from MySQL.

So then I deleted the database and user. Re-created the database in the Databases tab of PhpMyAdmin. And importantly separately added the user and privileges. This fixed the issue.

I could connect from the MySQL client and run migrations.

Widescreen answered 26/5, 2019 at 5:43 Comment(0)
P
0

This issue also occur when you use multiple databases in same project/query

I had the same issue solved by using same DB_USERNAME for all databases , because i was use multiple databases in same project and every database DB_USERNAME was different so when i run the query select,update, delete etc from multiple database then was get this error.

because if you use more then one table in query and the database DB_USERNAME is different you will get this error.

Solution:

If you using/connect more then one databases then you should use same DB_USERNAME for all databases

Portillo answered 20/3, 2021 at 10:29 Comment(0)
A
0

take these steps and you will be fine!

copy those from your .env.example file to your .env file :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=YOUR_DATABASE_NAME
DB_USERNAME=YOUR_DATABASE_USERNAME
DB_PASSWORD=YOUR_DATABASE_PASSWORD

save that and stop the server if you have started before. Then write :

php artisan config:cache

next start the server with :

php artisan serve

and you are good to go!

Afterlife answered 28/10, 2023 at 16:59 Comment(0)
Z
0

If the credentials are correct. For cpanel database setup, check if there's a user with privileges to the database for the application.

enter image description here

Zollie answered 13/12, 2023 at 0:11 Comment(0)
E
-1

If you don't require login while accessing the database

Try database username as root and password field leave blank

This solves my problem

Ermine answered 18/3, 2017 at 22:30 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.