首页 > 数据库 >关于PHP连接MySQL数据库连接问题

关于PHP连接MySQL数据库连接问题

时间:2024-12-27 12:12:09浏览次数:7  
标签:PHP 数据库 MySQL password 连接 conn

一、运行环境

PHP版本为7.2.34
MySQL版本为8.0.26

二、问题

运行过程中PHP think始终无法访问到MySQL服务,且报错500响应。

PHP直接连接SQL测试:

<?php
$servername = "127.0.0.1";//数据库地址
$username = "root";//用户名    
$password = "admin";//密码
$database = "data";//连接的数据库

// 创建连接
$conn = new mysqli($servername, $username, $password, $database);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";

// 执行一个简单的查询来检测连接是否成功
$sql = "SELECT 1";
$result = $conn->query($sql);

if ($result) {
    echo "查询成功";
} else {
    echo "查询失败: " . $conn->error;
}

// 关闭连接
$conn->close();
?>

本地能正常访问数据库,think连接数据库不显示错误,PHP直接连接SQL调试报错

连接失败: The server requested authentication method unknown to the client

三、结论

研究发现,MySQL服务器使用了客户端不支持的认证方法。常见的原因是MySQL服务器升级到8.0版本后,默认的认证插件从 mysql_native_password 变更为 caching_sha2_password ,而PHP客户端可能不支持 caching_sha2_password 

四、解决方案

1、更改MySQL用户认证插件

登录MySQL后,将root用户的认证插件更改为mysql_native_passwordroot为数据库登录账号admin为登录密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
FLUSH PRIVILEGES;

重新运行PHP即可

2、更新PHP版本

标签:PHP,数据库,MySQL,password,连接,conn
From: https://www.cnblogs.com/LazyArtizan/p/18635337

相关文章

  • 为什么MySQL单表不能超过2000万行? (1)
    ​最近看到一篇《我说MySQL每张表最好不要超过2000万数据,面试官让我回去等通知》的文章,非常有趣。文中提到,他朋友在面试的过程中说,自己的工作就是把用户操作信息存到MySQL里,因为数据量超大(5000万条左右),需要每天定时生成3张表,然后将数据取模分别存到这三张表里。下面是两人的对......
  • php中laravel基于rabbit的异步队列实践与原理
    在Laravel中,RabbitMQ是一个常用的消息队列服务,它可以用于异步任务处理。Laravel默认支持多种队列驱动,其中就包括RabbitMQ。通过RabbitMQ,你可以实现高效、可靠的消息传递和任务处理,尤其适用于需要分布式系统或者高并发的场景。以下是基于RabbitMQ的Laravel异步队列的......
  • PHP语言laravel框架中基于Redis的异步队列使用实践与原理
    在Laravel中,基于Redis的异步队列是通过Laravel的队列系统与Redis服务结合来实现的。这种队列机制允许你将任务推送到队列中,并由后台工作进程异步处理这些任务。这样,你就可以将耗时的操作(如发送邮件、处理视频、数据同步等)推迟到后台处理,从而提高应用的响应速度。###1......
  • MySQL日志之误删恢复数据
    目录1误删恢复数据1.1引言1.2解决方案1.2.1通用操作1.2.1.1确认binlog开启1.2.1.2binlog模式1.2.1.3binlog信息查询1.2.2方案一:找到insert语句,重新插入1.2.2.1找到binlog文件1.2.2.2根据时间点解析binlog文件1.2.2.2.1statement模式确认binlog位置1.2.2.2.2row模式确......
  • Mysql锁机制
    前序:    锁可以看作是一把现实生活中的锁,它的作用就是锁住东西确保安全。如果大家有其他语言开发经验,其实就很容易理解锁原理。例如Java语言中,Synchronized与Lock锁,就是用来保证并发安全性的。1、Mysql锁的概念    Mysql锁是管理并发控制与数据一致性的......
  • 允许PHP从远程URL获取数据的重要性
    在开发过程中,有时需要PHP脚本从外部资源下载数据或图片。如何确保PHP能够安全地访问互联网上的资源?答案: 为了让PHP脚本能顺利从互联网获取数据,必须确保启用了allow_url_fopen选项。此选项允许PHP使用诸如file_get_contents()、fopen()等函数打开远程URL,这对于实现各种功能至关重......
  • 如何找到PHP.ini文件的位置?
    在不同的主机环境中,PHP的配置文件php.ini的位置并不固定。如何快速准确地找到php.ini文件的具体位置?如果找不到怎么办?答案: 在不同服务器环境下,php.ini文件的位置确实会有所不同,这取决于服务器的配置和PHP的安装方式。为了确保你能正确找到并修改php.ini文件,以下是几种常见的查找......
  • 如何解决PHP表单提交时部分内容未保存成功的问题?
    在开发或管理基于PHP的网站时,您可能会遇到这样一个问题:当尝试保存大量配置信息(如用户权限设置)时,部分数据能够正常保存,但另一些数据却未能成功提交。这通常会导致前端页面显示部分保存成功、部分失败的情况。尤其是在处理复杂的用户权限配置时,这种现象更为常见。经过排查,您发现这是......
  • 如何启用PHP的cURL扩展?
    要启用PHP中的cURL扩展,您需要按照以下步骤操作,这些步骤适用于大多数常见的PHP环境配置,包括Windows和Linux系统。确认PHP版本及安装路径首先,确定您的PHP版本以及php.ini文件的位置。可以通过命令行输入php-v查看PHP版本,并通过php--ini找到php.ini文件的具体位置。这一步骤非常......
  • 如何在Windows上正确启用PHP的mbstring扩展?
    1.确保 php_mbstring.dll 文件存在首先,你需要确认你的PHP安装目录中确实包含了php_mbstring.dll文件。通常情况下,这个文件位于PHP安装目录下的ext文件夹中。如果你没有找到这个文件,可能是因为你下载的PHP版本默认没有包含这个扩展。此时,你可以考虑重新下载一个完整的PHP安装包......