【问题标题】:laravel cant connect to mysql database on VM LAMPlaravel 无法连接到 VM LAMP 上的 mysql 数据库
【发布时间】:2015-12-02 07:38:09
【问题描述】:

嘿伙计们,我正在尝试学习 laravel 并按照教程进行操作,但我似乎无法通过运行 LAMP 的 VM 连接到我的数据库。我已经浏览了每一个帖子,但没有任何效果

当我运行命令php artisan migrate 时出现以下错误

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

我什至关注了这个post 并得到了以下错误

[PDOException]
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)

我的 laravel 应用程序在端口 8000 上运行,但我的 phpmyadmin 位于 10.0.1.22/phpmyadmin 我不确定这是否可能是问题,我仍然是初学者,所以我的调试解决方案是有限的。

这是我的database.php 文件和我的.envi 文件

数据库.php

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', '10.0.1.22'),
            'database'  => env('DB_DATABASE', 'task'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', 'test'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

还有我的 .envi 文件

APP_ENV=local
APP_DEBUG=true
APP_KEY=HBzhX830sIrNbZ2hdB23DGAuGa4mj4IL

DB_HOST=10.0.1.22
DB_DATABASE=task
DB_USERNAME=root
DB_PASSWORD=test

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

感谢大家的帮助

【问题讨论】:

  • 你试过把 127.0.0.1 作为 DB_HOST 吗?
  • @MagnusEriksson WTH??那行得通!但如何???你能解释一下吗
  • 10.0.1.22 是从您的计算机到您的 VM 机器的外部地址。由于 Apache/PHP 和 MySQL 在同一台机器上运行,因此您不应尝试将它们与外部地址连接,而应与内部地址 (127.0.0.1) 连接。 MySQL root 用户也可能只接受来自 127.0.0.1 的调用。 (这是在 MySQL 中创建用户时的设置)
  • @MagnusEriksson 谢谢你
  • 我会将其添加为答案,以便您检查它是否已解决。 :)

标签: php mysql database laravel-5.1


【解决方案1】:

将 DB_HOST 更改为 127.0.0.1

10.0.1.22 是从您的计算机到您的 VM 机器的外部地址。 由于 Apache/PHP 和 MySQL 在同一台机器上运行,因此没有理由将它们与外部地址连接,而是与内部 (127.0.0.1) 连接。

当您在 MySQL 中创建用户时,您可以设置它应该接受来自哪些 IP'地址的连接,并且默认情况下,在大多数情况下,root 用户通常设置为仅侦听内部呼叫 (127.0.0.1)。

【讨论】:

    【解决方案2】:

    改变你的

    DB_HOST=10.0.1.22
    

    DB_HOST = 127.0.0.1
    

    因为 Loaclhost 定义在这个端口上。简单来说就是127.0.0.1 == localhost

    $cfg['Servers'][$i]['host']

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2015-10-10
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      相关资源
      最近更新 更多