Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP与MySQL 8.0+;错误:服务器请求的身份验证方法客户端未知_Php_Mysql_Mysql 8.0 - Fatal编程技术网

PHP与MySQL 8.0+;错误:服务器请求的身份验证方法客户端未知

PHP与MySQL 8.0+;错误:服务器请求的身份验证方法客户端未知,php,mysql,mysql-8.0,Php,Mysql,Mysql 8.0,我正在PHP7.0上运行MySQL版本8 当我尝试从PHP连接到数据库时,出现以下错误: 连接错误:SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知 PHP可能会显示此错误 警告:mysqli_connect():服务器请求的身份验证方法对第10行的D:\xampp\htdocs\reg\server.php中的客户端未知[caching_sha2_password] 如何解决此问题?您必须更改MySQL设置。 编辑my.cnf文件并将此设置放入mysqld部分: [

我正在PHP7.0上运行MySQL版本8

当我尝试从PHP连接到数据库时,出现以下错误:

连接错误:SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知

PHP可能会显示此错误

警告:mysqli_connect():服务器请求的身份验证方法对第10行的D:\xampp\htdocs\reg\server.php中的客户端未知[caching_sha2_password]


如何解决此问题?

您必须更改MySQL设置。 编辑my.cnf文件并将此设置放入mysqld部分:

[mysqld]
default_authentication_plugin= mysql_native_password
然后运行以下命令:

FLUSH PRIVILEGES;

上述命令将使默认身份验证机制的更改生效。

@mohammed,这通常归因于mysql数据库正在使用的身份验证插件

出于某种原因,mysql 8默认插件是auth_socket。应用程序通常希望使用密码登录到数据库

如果您尚未更改mysql默认身份验证插件,可以通过以下方式进行更改:
1.以root用户身份登录mysql
2.运行以下sql命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';  
将“密码”替换为您的根密码。如果应用程序没有使用root用户登录到数据库,请将上述命令中的“root”用户替换为应用程序使用的用户


《数字海洋》在这里详细阐述了这一点

我尝试了很多方法,但只有这一方法对我有效

谢谢你

检查您的.env

MYSQL_VERSION=latest
然后键入此命令

$ docker-compose exec mysql bash
$ mysql -u root -p 
(以root用户身份登录)

然后转到phpmyadmin并以以下身份登录:

  • 主机->mysql
  • 用户->root
  • 密码->root

希望能有所帮助

我正在使用Laravel Lumen构建一个小型应用程序。
对我来说,这是因为我没有在.env文件中定义DB_用户名

DB_USERNAME=root

设置此选项解决了我的问题。

在my.cnf文件中,检查以下两个步骤

  • 检查此值-

    旧密码=0

    应该是0

  • 也检查一下这个-

    [mysqld]默认\u身份验证\u插件=mysql\u本机\u密码 要检查的值是确保

    [mysqld]部分应该是这样的


作为我的config.inc.php文件,重新启动apache服务器,它开始工作。我仍然对此表示怀疑,所以我停止了apache和mysql服务器,并再次启动它们,现在它开始工作。

面临同样的问题,我无法使用mysql版本8运行wordpress docker容器,因为它的默认身份验证机制是缓存\u sha2\u密码而不是mysql\u本机\u密码

为了解决这个问题,我们必须将默认身份验证机制重置为mysql_native_密码

在mysql安装中找到my.cnf文件,通常在linux机器上,它位于以下位置-/etc/mysql

编辑my.cnf文件并在标题[mysqld]下添加以下行

默认\u身份验证\u插件=mysql\u本机\u密码

保存文件,然后使用root用户登录mysql命令行


运行命令刷新权限

这里没有一个答案对我有用。我要做的是:

  • 重新运行安装程序
  • 选择产品“MySQL服务器”旁边的快速操作“重新配置”
  • 浏览选项,直到找到身份验证方法并选择“使用旧身份验证方法”


  • 在那之后,它工作得很好。

    我在谷歌上做了一些工作。也许这样行吗?(不是相同的问题,但是相同的错误消息),然后重新创建用户
    ALTER USER$USER通过“passwd”使用mysql_native_密码标识
    (ref在Ububtu上的/etc/mysql/my找到my.cnf)。cnf@AkshayHazari请遵循以下线索:Windows 7上的my.cnf文件在哪里?它适合我,谢谢在哪里可以找到“my.cnf”文件?laradock/mysql/my.cnfThanks这对我来说是正确的方法!在使用mysql 8.0+时,这对我很有效。我在Magento 2.3.2 web安装程序中看到了这个问题。谢谢!谢谢,我尝试了其他方法。只有这对我有效。这个问题的主要原因是mysql的默认身份验证插件支持在8.0 rel中发生了变化例如,“PHP7.3”支持的Mysql身份验证插件列表可以通过“phpinfo()看到'函数:`mysqlnd debug_trace,auth_plugin_mysql_native_password auth_plugin_mysql_clear_password,auth_plugin_sha256_password`。因此,将mysql服务器限制帐户中的身份验证插件机制更改为'sha256_password'或'mysql_native_password':通过'password'更改用户'root'@',以sha256_密码标识;我得到
    E错误1396(HY000):针对“root”@“localhost”
    的ALTER USER操作失败。我的密码是
    '
    (空)如果您使用了安装程序,并且使用经典的用户名/密码方法连接到数据库,那么这种方法就是最好的方法。最干净的方法,先生!这个解决方案对我来说是一种魅力。您还救了我一天!另外,我做的是分叉mysql docker并将解决方案封装在mysql容器的构建中:谢谢。它有助于很多。我只需要最后一个alter查询就可以在docker MySQL上运行它。谢谢你,现在对我来说没问题。到今天为止,这是我发现的唯一一个在docker上工作的解决方案。谢谢你!
    [HY000][1396]“默认”@“%”的ALTER USER操作失败。
    发生在最后一次ALTER上…有什么想法吗?此解决方案解决了我的问题,但我不必刷新权限。
    DB_USERNAME=root
    
    preferences -> mysql -> initialize database -> use legacy password encryption(instead of strong) -> entered same password