MySQL 访问被拒绝?

标签 mysql database laravel environment

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

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

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

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

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

.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.

最佳答案

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

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

如果这不起作用,您将不得不使用更多低级管理工具,这进一步取决于您的安装。然后,这些将使用操作系统级别的数据库访问权限,这可能需要使用 sudo 来完成。您能否分享一些有关如何安装、在什么系统上安装等信息?如果您还没有找到方法,这可能会提供所需的附加信息来插入您走向正确的方向。

关于MySQL 访问被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237129/

相关文章:

php - Laravel 5.1 - 多列的多态关系

mysql - Mysql 中的默认键约束是什么,或者单独使用 "key"关键字有什么作用?

java - 在 hibernate 中过滤计算列? (拥有)

sql - oracle双向分层查询

laravel - Php电子表格: How to save the spreadsheet with a Laravel storage disk?

php - Laravel 5.3 API 中的搜索功能

java - 结果集被重用

MySQL在一个具有依赖关系的事务中有两个插入语句

mysql - 在 MySQL 的同一个查询中使用同一个子查询 2 次

java - 如何访问 zip 文件中的 SQLite 数据库 - android