Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

nthoeming's avatar

Can't connect to MySQL server on '127.0.0.1' - artisan migrate

I'm new to Laravel and have just installed the framework (5.2) on an existing server - PHP Version 5.5.9-1ubuntu4.14 - running an existing MySql database.
I'm attempting the Basic Task List tutorial at:
https://laravel.com/docs/5.2/quickstart
When I run - sudo php artisan migrate - I get the following error:
[PDOException]
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

Per the Database setup instructions at https://laravel.com/docs/5.2/database, I've updated config/database.php as follows:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '10.10.10.59:3306'),
'database' => env('DB_DATABASE', 'Vanguard_1.1'),
'username' => env('DB_USERNAME', 'TomS'),
'password' => env('DB_PASSWORD', '********'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],

For good measure, I've done the same in the .env file:

DB_HOST=10.10.10.59:3306
DB_DATABASE=Vanguard_1.1
DB_USERNAME=TomS
DB_PASSWORD=********

Regardless, I still receive the original error:
[PDOException]
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

To the best of my knowledge, I've eliminated any setting of localhost or 127.0.0.1. Is there another config setting I need to update so that artisan looks for my existing database?

Thanks in advance

0 likes
11 replies
Duffleman's avatar

Hi there :)

Firstly, I do not recommend using sudo to be running any artisan commands. Drop the use of sudo ^^

Secondly, do not edit config/database.php directly, the .env file in your root folder is where you should set your database information and that way when you check-in your config/ directory into version control, that information is private. Even if you are not using version control, it helps when moving your code between different environments.

Thirdly, you do not need to specify the port on DB_HOST as 3306 is the default. I would suggest dropping that too :)

So now you have your database details in your .env file. But it appears artisan is attempting to connect to 127.0.0.1 regardless. I suspect this is due to your use of sudo. Try again without it and ensure you are in the root directory of your project when running artisan.

Let us know how that goes ^^

--

To expand slightly further on the use of the env() function, this reads the values set in your .env file or an environment variable of the computer you are running the code on. Then if that value cannot be found, it drops back to the value given as a second parameter. Ergo you should not need to change anything in config/database.php.

nthoeming's avatar

Thanks, getting closer. Now I've got:

PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/mnt/Storage/apache/blog/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied' in /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87
Stack trace:
#0 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\StreamHandler->write(Array)
#1 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Logger.php(289): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#2 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Logger.php(565): Monolog\Logger->addRecord(400, Object(UnexpectedValueException), Array)
#3 /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\Logger->error(Object(UnexpectedValueException), Array)
#4 /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Log/Writer.php(113): Illuminate\Log\Writer->writeLog('error', Obje in /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 87
PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/mnt/Storage/apache/blog/storage/logs/laravel.log" could not be opened:
failed to open stream: Permission denied' in /mnt/Storage/apache/blog/ vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87
Stack trace:
#0 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\StreamHandler->write(Array)
#1 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Logger.php(289): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#2 /mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Logger.php(565): Monolog\Logger->addRecord(400, Object(Symfony\Component\Debug\Exception\FatalErr orException), Array)
#3 /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\Logger->error(Object(Symfony\Component\Debug\Exception\FatalErr orException), Array)
#4 /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Log/Writ in/mnt/Storage/apache/blog/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 87

Duffleman's avatar

That error means Laravel is unable to write to the log file. Make sure your file permissions are set correctly:

The following topic should help: https://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

(Stolen from the post linked)

You may also refer to https://laravel.com/docs/5.2/installation#configuration under "Directory Permissions" for further clarification.

nthoeming's avatar

Thanks, after extending the rights, I get the following:

[PDOException]
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

Exception trace: () at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:55
PDO->__construct() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:55
Illuminate\Database\Connectors\Connector->createConnection() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
Illuminate\Database\Connectors\MySqlConnector->connect() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:61
Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors{closure}() at n/a:n/a
call_user_func() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:864
Illuminate\Database\Connection->getPdo() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:732
Illuminate\Database\Connection->reconnectIfMissingConnection() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:621
Illuminate\Database\Connection->run() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:342
Illuminate\Database\Connection->select() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:21
Illuminate\Database\Schema\MySqlBuilder->hasTable() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:141
Illuminate\Database\Migrations\DatabaseMigrationRepository->repositoryExists() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:405
Illuminate\Database\Migrations\Migrator->repositoryExists() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:103
Illuminate\Database\Console\Migrations\MigrateCommand->prepareDatabase() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:58
Illuminate\Database\Console\Migrations\MigrateCommand->fire() at n/a:n/a
call_user_func_array() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Container/Container.php:507
Illuminate\Container\Container->call() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Console/Command.php:169
Illuminate\Console\Command->execute() at /mnt/Storage/apache/blog/vendor/symfony/console/Command/Command.php:256
Symfony\Component\Console\Command\Command->run() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Console/Command.php:155
Illuminate\Console\Command->run() at /mnt/Storage/apache/blog/vendor/symfony/console/Application.php:791
Symfony\Component\Console\Application->doRunCommand() at /mnt/Storage/apache/blog/vendor/symfony/console/Application.php:186
Symfony\Component\Console\Application->doRun() at /mnt/Storage/apache/blog/vendor/symfony/console/Application.php:117
Symfony\Component\Console\Application->run() at /mnt/Storage/apache/blog/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107
Illuminate\Foundation\Console\Kernel->handle() at /mnt/Storage/apache/blog/artisan:36

Duffleman's avatar
Level 4

Can you confirm that your .env file is filled in on that host and located at /mnt/Storage/apache/blog/.env?

1 like
nthoeming's avatar

I was linux ignorant and was updating a file named env, not the hidden file .env. Thanks, my migration is working now

brahms35's avatar

Hi guys, i hope there is some one here. I have the same issue and i'm sure i'm editing the .env hidden file but i'm getting the same error. Can someone enlighten me?

DB_CONNECTION=mysql DB_HOST=139.124.12.146 DB_PORT=3306 DB_DATABASE=mydatabase (example) DB_USERNAME=myusername (example) DB_PASSWORD=************.

[Illuminate\Database\QueryException] SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111) (SQL: select * from information_schema.tables where table_schema = Distriph one and table_name = migrations)

Snapey's avatar

is 139.124.12.146 the localhost?

Have you edited the config/database.php file?

brahms35's avatar

Thank you for you answer. I'm using the IP address of my domain. I have a dedicated IP address. I had edited the config/database.php before deploying the app on the server.

brahms35's avatar

I'm trying to run it from PHPSTORM (I reconfigured the database.php file and .env file) and now i get this answer when i run php artisan migrate.

Illuminate\Database\QueryException] SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = Distriphone and table_name = migrations)

I made sure to add every remote IP address on the hosting server inside the remote sql ip's so i have permission to access the database from a remote computer via a terminal.

tranghaviet's avatar

Remove vender then run composer install worked in my case

Please or to participate in this conversation.