解决php连接本地mysql连接错误的问题

我的服务器启用的nginx,配置了php的连接mysql的配置文件connect.php:

<?php$server="localhost";//主机$db_username="root";//你的数据库用户名$db_password="root";//你的数据库密码$dbname = "users";$conn = new mysqli($server,$db_username,$db_password);//链接数据库if($conn->connect_error){die("can't connect".$conn->connect_error);//如果链接失败输出错误}if (!mysqli_select_db($conn, 'users')) {die("选择数据库失败: " . mysqli_error($conn));}

其中一个页面include了这个文件,按理来说可以直接连接的,当然你需要在本地mysql建立这个users库和user表。

但是调试过程中 include函数并不起作用:    include('/var/www/html/phpTest/connect.php');

我们查看nginx的错误日志 cat /var/log/nginx/error.log:

下面这两个报错分别是两个不同的问题:

一、未加载php的mysqli文件
2024/10/16 15:58:08 [error] 370320#370320: *18 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Class "mysqli" not found in /var/www/html/phpTest/connect.php:7
Stack trace:
#0 /var/www/html/phpTest/signup.php(32): include()
#1 {main}thrown in /var/www/html/phpTest/connect.php on line 7" while reading response header from upstream, client: 113.132.177.30, server: _, request: "POST /phpTest/signup.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "116.205.127.142", referrer: "http://116.205.127.142/phpTest/signup.php"

这个是因为没有加载php的mysqli文件导致的,我们需要在服务器上下载:

sudo apt-get install php-mysqli
sudo apt-get install php8.1-mysqli //根据你的php版本选择msqli版本sudo systemctl restart php8.1-fpm  //重启fpm和nginx
sudo systemctl restart nginx

还需要确保php的配置文件php.ini中没有禁用mysqli,找到;extension=mysqli 去掉前面分号注释符,重启fpm。

二、本地数据库拒绝连接
2024/10/16 16:27:26 [error] 371624#371624: *10 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught mysqli_sql_exception: Access denied for user 'root'@'localhost' in /var/www/html/phpTest/connect.php:7
Stack trace:
#0 /var/www/html/phpTest/connect.php(7): mysqli->__construct()
#1 /var/www/html/phpTest/signup.php(32): include('...')
#2 {main}thrown in /var/www/html/phpTest/connect.php on line 7" while reading response header from upstream, client: 113.132.177.30, server: _, request: "POST /phpTest/signup.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "116.205.127.142", referrer: "http://116.205.127.142/phpTest/signup.php"

需要确认 root 用户是否有权限从 localhost 访问数据库。执行以下 MySQL 命令来查看权限:

登录成功后,检查用户权限:

SELECT host, user FROM mysql.user;

如果没有 root@localhost,或者 root 用户没有适当的权限,你可以通过以下命令为 root 赋予权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

    确保 MySQL 配置文件 (/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf) 中允许本地连接:默认是开启的

bind-address = 127.0.0.1

修改完之后重启mysql即可

三、权限问题

确保root用户的权限

SELECT User, Host FROM mysql.user WHERE User = 'root';
mysql> SELECT User, Host FROM mysql.user WHERE User = 'root';
+------+-----------+
| User | Host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)

然后检查mysql认证插件:某些情况下,MySQL 可能使用了 auth_socket 插件,这会阻止使用密码登录。检查 root 是否使用 auth_socket 插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

如果 plugin 显示为 auth_socket,修改为 mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
mysql> SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+
1 row in set (0.00 sec)

尤其是最后一步,如果不修改还是连不上的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper快速入门:部署服务、基本概念与操作

文章目录 一、部署服务1.下载与安装2.查看并修改配置文件3.启动 二、基本概念与操作1.节点类型特性总结使用场景示例查看节点查看节点数据 2.文件系统层次结构3.watcher 一、部署服务 1.下载与安装 下载&#xff1a; 一定要下载编译后的文件&#xff0c;后缀为bin.tar.gz w…

PE结构之导出表

导出表结构中各种值的意义 ​​​​​​ 根据函数地址表遍历函数名称RVA表,和上面的图是逆过程 //函数地址表 和当前内存中的位置DWORD AddressOfFunctionsFOA RVAToFOA(LPdosHeader, LPexprotDir->AddressOfFunctions);PDWORD LPFunctionsAddressInMemary (PDWORD)((cha…

ssm基于VUE的图书馆管理系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 2 第2章 开发环境与技术 3 …

Android终端GB28181音视频实时回传设计探讨

技术背景 好多开发者&#xff0c;在调研Android平台GB28181实时回传的时候&#xff0c;对这块整体的流程&#xff0c;没有个整体的了解&#xff0c;本文以大牛直播SDK的SmartGBD设计开发为例&#xff0c;聊下如何在Android终端实现GB28181音视频数据实时回传。 技术实现 Andr…

简单说说mysql的mvcc

mvcc的实现依赖什么 事务版本号 每次事务开始之前&#xff0c;都会从数据库获取一个【自增长】的事务id&#xff0c;从这个版本号&#xff0c;可以判断事务的先后顺序 隐式字段 对于innodb存储引擎&#xff0c;每行记录都有两个隐藏列&#xff0c;分别是&#xff1a;trx_id…

java-day11

1.ArrayList 集合和数组的优势对比&#xff1a; 长度可变添加数据的时候不需要考虑索引&#xff0c;默认将数据添加到末尾 1.1 ArrayList类概述 什么是集合 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 ArrayList集合的特点 ​ 长度可以变化…

Canal 和 MySQL 配置指南

1. 环境依赖 在开始配置之前&#xff0c;请确保已安装并配置以下环境&#xff1a; Docker&#xff1a;用于运行 MySQL 和 Canal 的容器化服务。 MySQL&#xff1a;确保安装的是支持 binlog 的版本。 Canal&#xff1a;阿里巴巴开源的数据库增量订阅和消费组件。 2. MySQL …

基于ESP32的灌溉系统

精准灌溉优化与高效水资源利用&#xff1a;基于IoT的农业解决方案 引言 传统农业实践缺乏实时监控和高效操作&#xff0c;导致效率低下和产量不高。本项目旨在利用物联网&#xff08;IoT&#xff09;技术和低成本通信协议&#xff0c;设计一个解决方案来解决这一问题。提出的…

C++算法练习-day1——704.二分查找

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始&#xff0c;如果中间元素正好是要查找的元素&#xff0c;则搜索过程结束&#xff1b;如果某一特定元素大…

Linux基础 -- 使用 cgroups 变更进程的CPU亲和性绑核

使用 cgroups 设置 CPU 绑定的教学文档 1. 使用 cgroups 设置 CPU 绑定 在 Linux 中&#xff0c;使用 cgroups 可以对进程进行 CPU 绑定&#xff0c;从而控制它们在哪些 CPU 核心上运行。以下是基本步骤&#xff1a; 创建 cgroup&#xff1a; mkdir /sys/fs/cgroup/cpuset/my…

Docker实践与应用举例

目录 1. 引言 2. Docker的基本概念 2.1 什么是Docker容器 2.2 Docker镜像 2.3 Docker架构 3. Docker的应用场景 3.1 开发与测试环境的隔离 3.2 持续集成与持续交付&#xff08;CI/CD&#xff09; 3.3 微服务架构 4. Docker的实践案例 4.1 部署Nginx反向代理 4.2 使用…

研发线上事故风险解读之缓存篇

专业在线打字练习平台-巧手打字通&#xff0c;只输出有价值的知识。 一 前言 本文继续基于《线上事故案例集》&#xff0c;进一步深入梳理线上事故缓存使用方面的问题点&#xff0c;重点关注缓存在使用和优化过程中可能出现的问题&#xff0c;旨在为读者提供具有实践指导意义的…

学习如何将Spring Boot Jar包注册成Windows服务

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 在开发Spring Boot应用时&#xff0c;我们通常通过命令行或IDE手动启动项目。然而&#xff0c;在生产环境中&#xff0c;为了提升效率和稳定性&#xff0c;我们更希望应用能够自动启动&#xff0c;并且作为Wi…

OpenCV高级图形用户界面(5)获取指定滑动条(trackbar)的当前位置函数getTrackbarPos()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 返回滑动条的位置。 该函数返回指定滑动条的当前位置。 cv::getTrackbarPos() 函数用于获取指定滑动条&#xff08;trackbar&#xff09;的当前…

【H2O2|全栈】JS入门知识(二)

目录 JS 前言 准备工作 运算符 算数运算符 比较运算符 自增、自减运算符 逻辑运算符 运算符的优先级 分支语句 if-else语句 switch语句 三元表达式 结束语 JS 前言 本系列博客主要分享JavaScript的基础语法知识&#xff0c;本期为第二期&#xff0c;包含一些简…

Linux基础命令系列一小白必掌握

前言 为了有一个大概的复习框架所以先给出总的思维导图&#xff0c;如图&#xff1a; 目录 1.Linux的目录结构&#xff1f;Linux命令与命令行是什么&#xff1f;Linux命令基础格式&#xff1f; 2.ls命令 3.cd命令 4.mkdir命令 5.touch命令 6.cat命令 7.cp命令 8.mv命令…

大数据开发电脑千元配置清单

大数据开发电脑配置清单 电脑型号HUANANZHI 台式电脑操作系统Windows 11 专业版 64位&#xff08;Version 23H2 / DirectX 12&#xff09;处理器英特尔 Xeon(至强) E5-2673 v3 2.40GHz主板HUANANZHI X99-P4T&#xff08;P55 芯片组&#xff09;显卡NVIDIA GeForce GT 610 ( 2…

PLM预训练语言模型Pre-trained Language Model

预训练语言模型&#xff08;Pre-trained Language Model&#xff0c;PLM&#xff09; gpt就是一个典型的例子 一、PLM 的定义与概念 预训练语言模型是一种在大规模文本数据上进行无监督学习得到的语言模型。它通过学习语言的统计规律、语法结构和语义表示&#xff0c;为各种自…

模板方法模式、策略模式(C++)

模板方法模式&#xff1a; 定义&#xff1a;定义一个操作算法的框架&#xff0c;实现步骤延迟到子类中去实现 策略模式&#xff1a; 定义&#xff1a;定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可相互替换。该模式使得算法可独立于使用它的客户…

开源GenImage的图片检测工具使用指南

引言 GenImage是一款开源的图片检测工具&#xff0c;旨在帮助用户在各种应用场景中进行图像处理和分析。该工具具有灵活性、可扩展性和高效性&#xff0c;适合从事计算机视觉、图像处理和深度学习的研究人员和开发者使用。本文将详细介绍如何安装、配置和使用GenImage进行图片…