Laravel: Access denied for user homestead at localhost - php

I just started a new Laravel project and I am having some database connectivity problem. First of all, I have only the User model which comes with the package. It has a migration as well. I updated my env file for the database path like this:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_project1
DB_USERNAME=root
DB_PASSWORD=''
The problem is, when I ran migrate command
php artisan migrate
It created those migrations in my database. But now when I am simply trying to do User::all(); I am having some trouble with this error:
SQLSTATE[HY000] [1045] Access denied for user 'homestead'#'localhost' (using password: YES) (SQL: select * from `users`)
I have even cleared my config cache with this command:
php artisan config:clear
I don't understand what's wrong.
EDIT:
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'port' => env('DB_PORT', '3306'),
'database' => 'laravel_project1',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
This seems to solve the problem but I don't understand why env file is not working as it is the recommended way I believe.

The way Laravel's database config works is reading the /config/database.php file, so if you wan't Laravel to read your configuration from your .env file, you just have to make some changes in the /config/database.php for example:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel_project1'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
So now the /config/database.php file will read your .env file and if it fails to read it will have the default config (Which is the second argument of each env() function above...)

To close this question, as Vasil Gerginski said in comments below my question. Restarting solved the problem.
When artisan starts, it caches your config. So even if you change it, it won't take affect until you restart artisan server.

Related

Laravel API can't connect to db

I'm trying to build an restful API.
When I make a call to one of my endpoints, I get following error message:
SQLSTATE[HY000] [1045] Access denied for user 'root'#'localhost' (using password: NO) (SQL: select * from users)
The wierd thing is why this error is showing up when I try to access the endpoint, but when I use db:seed, the database is populated with dummy-data and I can use migrations also to create the tables.
The user that is connecting to the db has full privileges.
Can anyone please help me out?
sometimes .env archive not reload for change... maybe you need run command php artisan config:cache
This is my settings in the .env for the database:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=
And this are the ones from database.php:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
But as i understand it both the migrations, seeds and the api goes thru .env.

PHP - Laravel Corcel configuration issue with WP database

The Laravel log file reports an error with the configuration. I am configuring the WP database in the .env as being pointed out in the official docs.
The error I got in the Laravel logs:
[2019-08-06 10:23:44] local.ERROR: Database [corcel] not configured.
{"exception":"[object] (InvalidArgumentException(code: 0): Database
[corcel] not configured. at
/Applications/MAMP/htdocs/platform/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:152)
In the config/database.php I have a separate connection for Corcel:
'corcel' => [ // for WordPress database (used by Corcel)
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_WP_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'wp_',
'strict' => false,
'engine' => null,
],
...and in the config/corcel.php file I have this line:
'connection' => 'corcel',
...that corresponds to the connection added in config/database.php
The configuration in the .env file I added the WordPress database which should be the source for Corcel:
DB_WP_DATABASE=my_wp_database
The rest of the .env file is the same and I still got no idea why is this throwing config error.
Your config may be cached, could you try running
php artisan config:clear
Is the error happening when you are trying access data? If so you need to specify the connection on your query.
DB::connection('corcel')->table('table_name')
If you are using MAMP, you may need to use unix_socket. In that case you can include unix_socket on the database config like,
'corcel' => [
.....
'unix_socket' => env('DB_SOCKET', ''),
.....
],
On the environment variable(.env file), you may need to use the following,
DB_SOCKET="/Applications/MAMP/tmp/mysql/mysql.sock"

PHP Laravel could not migrate files to database

I'm trying to connect with PHP and MySQL through the database using Laravel doing:
php artisan migrate but I'm experiencing a common error:
"Illuminate\Database\QueryException : could not find driver"
(I'm using XAMPP to start up the server if that makes a difference)
The values I changed in database.php:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3308'),
'database' => env('DB_DATABASE', 'test2'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
I also changed the .env file:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3308
DB_DATABASE=test2
DB_USERNAME=root
DB_PASSWORD=
The things I did were:
See if the extension=pdo_mysql is uncommented which it was.
Typed in php artisan migrate:refresh
Restarted Xampp
Deleted and recreated the migration file. Also incremented the last digit of the number (taken advice from one of the answers)
Check the version (which is the latest)
composer update
composer require doctrine/dbal
Check to see if pro_mysql is activated on your install.
You can do this by creating a file and adding the following:
phpinfo();
Then navigate to it in your browser. If it is activated you will see it in the list.
Here is some more info:
http://php.net/manual/en/function.phpinfo.php
Hope that helps.

Configuring laravel app for production

everyone. I've recently encountered problems trying to deploy my laravel app to production-like server. So far I've been using it in homestead environment and everything was just fine.
My .env contains something like this:
APP_URL=http://public.server.url
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=myusername
DB_PASSWORD=mypassword
In mysql (running on port 3306) I've set up user 'myusername'#'localhost' with mypassword and indeed I can connect using
mysql -u myusername -p
Even 'php artisan migrate' command works and modifies my database properly.
config/database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'myusername'),
'password' => env('DB_PASSWORD', 'mypassword'),
//'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
Problem is my http controllers don't behave correctly. I am getting 500 server error when sending requests on my routes (no matter how dummy logic they do) and 404 not found when trying to reach non-existing route. Also nothing is appended in the log file. So I am guessing as far as registering routes my app works, but right after that it fails. Any suggestions? I would really appreciate any tips.

ampps/Laravel5: error:Access denied for user 'root'#'localhost'

I install laravel 5.2 on Ampps (windows 10) with this tutorial.
it works.
But Now I want connect to mysql.
I create a 'test1' DB and change these two files:
config/database.php
mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'test1'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
.env
DB_HOST=localhost
DB_DATABASE=test1
DB_USERNAME=root
DB_PASSWORD=
After that I restart apache.
then in CMS I run this code:
F:\Ammps\www\quickstart>php artisan migrate
But I get this error:
error SQLSTATE[HY000] [1045] Access denied for user 'root'#'localhost'
I think I miss a step.
can please help me?
According to the Ampps FAQ you need the default mysql password:
1. Default MySQL root password is "mysql".
So add that to your .env file like this:
DB_HOST=localhost
DB_DATABASE=test1
DB_USERNAME=root
DB_PASSWORD=mysql

Categories