【问题标题】:Connecting to MySQL from Laravel从 Laravel 连接到 MySQL
【发布时间】:2017-12-11 04:34:40
【问题描述】:

我建立了一个名为cms 的数据库,如果我ssh 作为root 用户,我可以连接到该数据库,并且我可以很好地操作数据库。我也可以连接 MySQL Workbench。但是,当涉及到通过 Laravel 5.4 连接时,它不会让我连接到 MySQL 来运行迁移。我在 .env 文件中的凭据与在 MySQL Workbench 中的凭据相同,但仍然没有连接。有什么想法吗?

以下是我的 .env 文件中的内容

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cms
DB_USERNAME=root
DB_PASSWORD=

【问题讨论】:

  • 你得到什么错误?
  • ` [PDOException] SQLSTATE[HY000] [2002] 由于目标机器主动拒绝,无法建立连接。`
  • 如果你使用 Homestead,请勾选:stackoverflow.com/questions/32514241/…
  • 试过DB_HOST=localhost ?
  • 是的。我尝试了多种设置,但没有。

标签: php mysql laravel laravel-5 vagrant


【解决方案1】:

通过 SSH,您无需密码即可以 root 身份连接到 MySQL,因为这是默认行为。它允许本地 Linux root 用户在 MySQL 上以 root 身份登录,无需密码。

如果您不想在本地(通过 SSH)而是通过 TCP/IP 或使用 PHP mysql 库的套接字进行连接,那么您需要为此设置一个用户。

这是怎么做的:

1) 像往常一样通过 SSH 登录,并使用 root 访问 MySQL

2) 创建用户:

CREATE USER 'laravel'@'%' IDENTIFIED BY 'ENTER-PASSWORD-HERE';

3) 授予该用户对您的数据库的权限:

GRANT ALL PRIVILEGES ON cms.* TO 'laravel'@'%';

4) 刷新权限,以便重新加载所有内容:

FLUSH PRIVILEGES;

5) 现在退出 SSH 并像这样编辑您的 .env 文件:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cms
DB_USERNAME=laravel
DB_PASSWORD=ENTER-PASSWORD-HERE

当然,请将占位符“ENTER-PASSWORD-HERE”更改为您喜欢的内容。

您现在应该可以从您的应用程序进行连接了。

【讨论】:

  • 完美。我可以通过 ssh 连接,所以这似乎可以解决问题。
  • 更正,由于某种原因,我仍然遇到同样的问题。 [Illuminate\Database\QueryException] SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. (SQL: select * from information_schema.tables where table_schema = cms and table_name = migrations) ` [PDOException] SQLSTATE[HY000] [2002] 由于目标机器主动拒绝,无法建立连接。`
  • 旁注:如果有影响,我会尝试从 vagrant 外部连接到数据库。
  • 好吧,在这种情况下,您的 DB_HOST 肯定不会是 127.0.0.1。如果您使用 Homestead,请尝试:192.168.10.10,如果没有,请使用 ssh 登录您的 VM 并运行:sudo netstat -natp | grep mysql 以查看 MySQl 是否正在监听;然后ifconfig 来识别IP。
  • 如果是宅基地,你的端口很可能是:33060,但你可以通过上面详述的netstat 命令看到。
猜你喜欢
  • 2017-05-02
  • 2019-02-25
  • 1970-01-01
  • 2022-01-13
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2023-03-16
相关资源
最近更新 更多