首页 > 解决方案 > MySQL访问被拒绝?

问题描述

堆栈:PHP,Laravel。使用 Vs-code 和 tableplus。

我的目标是跟随 laracast 视频系列尝试学习 laravel /php 编码。

在视频系列中,我确实创建并连接到了 mySQL 数据库。在某些时候,不确定我做了什么,但是在使用终端或 tableplus(之前已连接)时我根本无法连接到数据库。

在我输入的终端MySQL -u root中,我收到了密码(没有密码),然后我按 Enter 并出现错误。它以前可以正常工作,但我不确定我现在做了什么会引发此错误。正如您在下面 DB_Password'' 下的代码中看到的那样,没有分配任何内容。

错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

.env文件如下:


LOG_CHANNEL=stack

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

BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379

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

AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=

PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"'''

From my understanding (google) this is a mysql issue and not larvael?!?

I am not really sure what else to do here...

Here is the PostsContoller.php  (incase its needed)

```<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; use App\Post; class PostsController extends Controller { public function show($slug) { $post = Post::where('slug', $slug)->first(); if (! $post) { abort(404); } return view('post',[ 'post' => $post ]); } ```

**Additional error code in terminal:** 

 ``` catch (Exception $e) {
  > 665|             throw new QueryException(
    666|                 $query, $this->prepareBindings($bindings), $e
    667|             );
    668|         }```

 Exception trace:

  1   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)")
      /Users/paolo/Desktop/webapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel", "root", "", [])
      /Users/paolo/Desktop/webapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

标签: mysqldatabaselaravelenvironment

解决方案


首先,sudo完全错误的工具。这就像以 root 身份运行您的浏览器以访问您的网上银行。不,服务器向客户端发出身份验证请求。该服务器既不知道也不关心您以什么用户身份运行。请注意,为了增加混淆,MySQL 的“默认”用户通常被命名为“root”,就像 Unix 系统上的管理员用户一样。

现在,关于您的问题,只是有一个您可能不知道的密码。MySQL 安装中常用的用户名和密码组合是“root”和“root”(显然非常不安全,但仅供本地使用)。

如果这不起作用,您将不得不使用更多低级管理工具,这进一步取决于您的安装。然后,这些将使用对数据库的操作系统级别访问,这可能需要使用sudo. 你能分享一些关于你是如何安装的,在什么系统上的信息吗?如果您还没有找到方法,这可能会提供将您推向正确方向所需的额外信息。


推荐阅读