Ajay Kulkarni
Ajay Kulkarni

Reputation: 3039

Laravel 5 database issue

I've installed laravel 5 successfully by using this command:

composer create-project laravel/laravel test-laravel-5-project dev-develop --prefer-dist

I even verified the version of installed laravel by using php artisan -V command. The output was

Laravel Framework version 5.0-dev

Then I went to app/config/database.php, gave dafault db as mysql and gave configurations as

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'Logintestfive'), 'username'=> env('DB_USERNAME', 'root'), 'password'=> env('DB_PASSWORD', 'manasa'), 'charset'=> 'utf-8', 'collation'=> 'utf-8_unicode_ci', prefix=> '', 'strict'=> false, ]

Then I went to localhost:8000/auth/register and filled up the form and submitted the data and this is the error which I got:

PDOException in Connector.php line 47: SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

But I've neither used laravel homestead for installng laravel 5 in my system nor used vagrant to set up laravel homestead. And it tells me like this:

in Connector.php line 47
at PDO->__construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 47
at Connector->createConnection('mysql:host=localhost;dbname=homestead', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 20
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10545
at ConnectionFactory->createSingleConnection(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10541
at ConnectionFactory->make(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false), 'mysql') in compiled.php line 10459

How can I fix those issues?

Upvotes: 24

Views: 48579

Answers (13)

nitinsridar
nitinsridar

Reputation: 684

Laravel config/database.php uses the .env file for database name,username asnd password, Please change your .env file

DB_HOST=localhost

DB_DATABASE=my_project

DB_USERNAME=root

DB_PASSWORD=myproject

After changing this run the below command:

composer dump-autoload

then run your project

php artisan serve

Upvotes: 2

Yordi Uytersprot
Yordi Uytersprot

Reputation: 585

I got a similar problem. I started my server using php artisan serve command, and edited the .env file and refreshed the web-page which did not reflect any changes!

I fixed it by stopping the webserver, editing the .env.php file and restarting the webserver!

So I guess it's a caching-issue of the .env.php file.

Upvotes: 48

Sunil
Sunil

Reputation: 1176

In Config->database.php

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

In .env file :

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=DBName
DB_USERNAME=root
DB_PASSWORD=

Close the laravel application server and restart again for clearing the cache.

  php artisan serve

Or you can do :

  php artisan config:clear

This will clear the cache in config files.

Now it will definitely work! Cheers!

Upvotes: 3

HRMadani
HRMadani

Reputation: 1

you can restart your server I think is a catch error in Laravel so run your server again with "php artisan serve" and refresh your website page IT's OK.

Upvotes: 0

Grigoreas P.
Grigoreas P.

Reputation: 2472

for me

sudo service apache2 reload

did the job

Upvotes: -1

Bastin Robin
Bastin Robin

Reputation: 938

Yes i had the same issues where everything went well right from migration installation to php artisan migrate. But when i tried to create a user the access denied.

Solution i found was to close the ctrl + d to terminate the server and restart. I worked... :)

Upvotes: 0

MasoodRehman
MasoodRehman

Reputation: 715

Laravel 5.1.10
As the answers already given above by Ganesh and Yordi, But i'm combining the both of them into single one.

Issue:
When i try to create a database in phpmyAdmin and want to create schema/table through Laravel Schema builder service i got the following errors:

PDOException in Connector.php line 50: SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)
in Connector.php line 50
at PDO->__construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0'))
in Connector.php line 50
at Connector->createConnection('mysql:host=localhost;dbname=homestead', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 22 at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) .............

Solution 1:
Then I realised that the issues were in the env file, I forgot to change the values in the env file. The .env file is located in the laravel 5 root directory open the file and change the following values with your ones

DB_DATABASE = localhost,
DB_USERNAME = databse-username,
DB_PASSWORD = databse-user-password

Solution 2:
Or change in the database.php file without env() as Ganesh syas:

    // instead of this block
    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'your database name'),
        'username'  => env('DB_USERNAME', 'your database username'),
        'password'  => env('DB_PASSWORD', 'your database password'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    // use this one

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

The both solutions worked for me.

Upvotes: 8

user2338925
user2338925

Reputation:

Inside your laravel eg. c:/www/laravel, create a new directory called 'local' inside app/config.Copy database.php (app/config/database.php).This works for me

Upvotes: 0

vuhung3990
vuhung3990

Reputation: 6789

i have same issui, edit file .env on root folder and change database config DB_DATABASE DB_USERNAME DB_PASSWORD

Upvotes: 0

Ganesh Jogam
Ganesh Jogam

Reputation: 3151

Laravel is using .env file so change the .env file or change in the database.php file without env()

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

Upvotes: 3

Barnabas Kecskes
Barnabas Kecskes

Reputation: 1961

I had a very similar issue and didn't know where to look. I cleared the cache, restarted server, etc., no joy. Until I found it...

Before I reverted to a previous version on the Git repo, I used to have my session driver set to use the database! Silly thing, but it's not necessarily the database connection what you need to look at but instead where you are invoking the database to be used at the first place.

I hope that somebody who'll end up on this page the way I did will find this helpful.

Upvotes: 1

Eason Hung
Eason Hung

Reputation: 31

I got the same problem. After I use the command "php artisan config:clear" to clear the old configuration cache file, it can work. Maybe you can try it.

By the way, my English is not good, hope you can understand.

Upvotes: 3

ajtrichards
ajtrichards

Reputation: 30565

Laravel is using the variables contained in your .env file.

From: http://laravel.com/docs/master/configuration

It is often helpful to have different configuration values based on the environment the application is running in. For example, you may wish to use a different cache driver locally than you do on your production server. It's easy using environment based configuration.

Laravel utilizes the DotEnv PHP library by Vance Lucas. In a fresh Laravel installation, the root directory of your application will contain a .env.example file. If you install Laravel via Composer, this file will automatically be renamed to .env. Otherwise, you should rename the file manually.

All of the variables listed in this file will be loaded into the $_ENV PHP super-global when your application receives a request. You may use the env helper to retrieve values from these variables. In fact, if you review the Laravel configuration files, you will notice several of the options already using this helper!

Feel free to modify your environment variables as needed for your own local server, as well as your production environment. However, your .env file should not be committed to your application's source control, since each developer / server using your application could require a different environment configuration.

If you are developing with a team, you may wish to continue including a .env.example file with your application. By putting place-holder values in the example configuration file, other developers on your team can clearly see which environment variables are needed to run your application.

The default .env file looks something like:

APP_ENV=local
APP_DEBUG=true
APP_KEY=YOUR_KEY_HERE

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file

Upvotes: 6

Related Questions