SQLSTATE[HY000] [2002] 连接仅在浏览器中被拒绝

SQLSTATE[HY000] [2002] Connection refused only in browser

我正在 OS X Yosemite,运行正在与 Laravel 5.3 一起使用最新的宅基地。

我能够 运行 并在终端中从 OS X 重置迁移。当我使用 Sequel Pro 使用标准连接连接到数据库时,我可以看到这些表。当我 SSH 进入虚拟框和 运行 mysql -uhomestead -psecret 时,我什至看到了表格。

问题是,当我尝试从浏览器注册新用户时,出现 PDOException in Connector.php line 119: SQLSTATE[HY000] [2002] Connection refused 错误。当我 运行 php artisan serve 并在 http://localhost:8000/register.

处填写表格时它起作用

我尝试将 DB_HOST 更改为 192.168.10.10,但这会导致迁移失败。

我可能在尝试安装 mysql 时造成了一些混乱。我使用自制软件安装了它。然后我 运行 mysql.server start 并且在另一点我 运行 brew services start mysql 因为我不确定它是否有效。

Homestead.yml 文件:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code/laravel
      to: /home/vagrant/laravel
      type: "nfs"

sites:
    - map: votingapp.dev
      to: /home/vagrant/laravel/votingapp/public

databases:
    - homestead

.env 文件:

    APP_ENV=local
    APP_KEY=base64:xxxxxxxx
    APP_DEBUG=true
    APP_LOG_LEVEL=debug
    APP_URL=http://localhost

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=33060
    DB_DATABASE=votingapp_development
    DB_USERNAME=homestead
    DB_PASSWORD=secret

web.php 文件:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index');

原来是我输入了错误的端口号。在 .env 文件中它应该是 3306 而在 Sequel Pro 中它应该是 33060.

根据 Laravel 手册的 Connecting to databases

You should only use these non-standard ports when connecting to the databases from your host machine. You will use the default 3306 and 5432 ports in your Laravel database configuration file since Laravel is running within the virtual machine.

如果您在 127.0.0.1 中使用 Mamp,请添加 :8889 或您的配置 mamp 的端口。enter image description here

127.0.0.1:8889 或 localhost:8889