Laravel 5.5:通过 .env 和 database.php 使用本地凭据登录到 MySQL 的生产环境是为我的远程 mysql 服务器设置的

Laravel 5.5: Production environment logging into MySQL with local credentials though .env and database.php are set up for my distant mysql server

亲爱的 Whosebug 社区,您好!

这是我第一次操作 Laravel 部署,我 运行 遇到的问题可能有一个简单的答案,但经过许多小时的研究后我找不到。

当我查看生产主页时,

Laravel 返回错误 SQLSTATE[HY000] [2002] No such file or directory,我能够使用以下 SSH 命令追踪数据库问题: mysqladmin -u root -p status 其中 returns:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

看来 Laravel 登录到我的本地 .env 值,但我只有一个 .env 文件配置用于服务器上的生产:

DB_CONNECTION=mysql
DB_HOST=my_distant_mysql_server_domain
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=user_name
DB_PASSWORD=xxxxxxxx

我也配置了database.php,没用:

'default' => env('DB_CONNECTION', 'mysql'),
[...]
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'my_distant_mysql_server_domain'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'database_name'),
            'username' => env('DB_USERNAME', 'user_name'),
            'password' => env('DB_PASSWORD', 'xxxxxxxx'),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

这里有人知道我可能错过了什么吗?

我也尝试了此线程中提供的所有解决方案,但我的问题仍然存在:

不幸的是,我必须使用 mysql 服务器域名,而不是 IP,因为我的主机不提供任何 IP。

非常感谢您对此事的帮助:)

感谢克里斯,我意识到这个问题是因为我在尝试连接到远程数据库时没有删除套接字配置,在此之前(重要的一步!)重新运行以下命令:

php artisan cache:clear

php artisan config:clear

php artisan config:cache

php artisan route:clear

php artisan route:cache

执行这两个步骤解决了我的问题:)