当前位置: 首页 > 知识库问答 >
问题:

Mysql身份验证

俞学
2023-03-14

我有麻烦让我的数据库连接到WAMP。我做这件事已经有5年了,所以我有点生疏了。我将我的Mysql升级到8.0时遇到了这个错误

 Fatal error: Uncaught PDOException: PDO::__construct(): The server requested authentication method unknown to the client [sha256_password] in C:\wamp64\www\dirtyosrs\assets\lib\core\Database.class.php:34 Stack trace: #0 C:\wamp64\www\dirtyosrs\assets\lib\core\Database.class.php(34): PDO->__construct('mysql:host=;dbn...', NULL, NULL, Array) #1 C:\wamp64\www\dirtyosrs\assets\lib\init.php(34): Database->connect() #2 C:\wamp64\www\dirtyosrs\templates\header.php(8): require_once('C:\\wamp64\\www\\d...') #3 C:\wamp64\www\dirtyosrs\index.php(1): include('C:\\wamp64\\www\\d...') #4 {main} Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client in C:\wamp64\www\dirtyosrs\assets\lib\core\Database.class.php on line 34

PDOException: PDO::__construct(): The server requested authentication method unknown to the client [sha256_password] in C:\wamp64\www\dirtyosrs\assets\lib\core\Database.class.php on line 34

我刷新了我的特权,并将插件更改为本机的根。在这一点上我被难倒了。有人能帮帮我吗?

下面是我的数据库类,直到第37行

<?php

/**

>

  • class Database*/class Database{

    专用$IP、$username、$password、$database;

    /**

    • @var PDO*/private$connection;private$Query=0;

    /**

    • 数据库构造函数。
    • @param$ip
    • @param$username
    • @param$password
    • @param$database*/public function__construct($ip,$username,$password,$database){$this->ip=$ip;$this->username=$username;$this->password=$password;$this->database=$database;}

    /**

    • 尝试连接到主机*/public函数connect(){$this->connection=new PDO('mysql:host='.$this->ip.';dbname='.$this->database.';charset=utf8',$this->用户名,$this->密码,数组(PDO::attr_persistent=>true));$this->connection->setattribute(PDO::attr_errmode,PDO::errmode_exception);$this->connection
  • 共有1个答案

    吉岳
    2023-03-14

    自2018年以来,MySQL8有了一种新的默认类型的安全身份验证方法(sha2),这可能很难在本地主机上使用。为了继续使用传统的身份验证方法,我在我的DockerFile中是这样做的:

    命令:--default-authentication-plugin=mysql_native_password

    如果手动设置,则必须在数据库设置上运行default-authentication命令。

    更多信息请访问:https://mysqlserveteram.com/upgrading-to-mysql-8-0-default-authentication-plugin-considentions/

     类似资料:
    • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

    • 问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答

    • 我试图使用swift代码在网站上找到这里,但响应是html代码与两个错误:“您必须输入密码!”和“您必须输入用户名!”我是NSURLSession的新手,试图更改用于身份验证的字符串,但无法更改响应。下面是我的代码: 这是控制台响应中的内容:

    • 我正在开发一个具有自己的身份验证和授权机制的REST应用程序。我想使用JSON Web Tokens进行身份验证。以下是有效且安全的实现吗? < li >将开发一个REST API来接受用户名和密码并进行认证。要使用的HTTP方法是POST,因此没有缓存。此外,在传输时还会有安全SSL < li >在认证时,将创建两个JWTs访问令牌和刷新令牌。刷新令牌将具有更长的有效期。这两个令牌都将写入coo

    • 身份验证是将提供的凭据与本地操作系统或身份验证服务器中授权用户信息的数据库中的凭据进行比较的过程。 如果凭据匹配,则完成该过程并授予用户访问权限。 我们将创建一个非常基本的身份验证系统,它将使用Basic HTTP Authentication 。 这是实施访问控制的最简单方法,因为它不需要cookie,会话或其他任何东西。 要使用它,客户端必须发送Authorization标头以及它所做的每个请

    • 身份验证是识别用户凭据的过程。 在Web应用程序中,身份验证由会话管理,会话使用电子邮件或用户名和密码等输入参数进行用户识别。 如果这些参数匹配,则称用户被认证。 Command Laravel使用以下命令创建表单以及执行身份验证的关联控制器 - php artisan make:auth 此命令有助于成功创建身份验证脚手架,如以下屏幕截图所示 - 控制器(Controller) 用于认证过程的