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

embedded/2024/10/23 21:15:22/

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

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:

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

一、未加载phpmysqli文件
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"

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

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.ppmy.cn/embedded/129906.html

相关文章

深入解析TensorFlow——从基础到进阶

引言 自2015年由Google Brain团队发布以来&#xff0c;TensorFlow迅速成为深度学习领域最受欢迎的框架之一。它不仅提供了强大的功能集&#xff0c;还拥有庞大的用户群体和生态系统。无论是学术研究还是工业应用&#xff0c;TensorFlow都展现出了卓越的表现。本文将深入探讨Te…

3d NMDS多样性分析图 R语言

# 安装并加载必要的包 if (!require("vegan")) install.packages("vegan") if (!require("ggplot2")) install.packages("ggplot2") if (!require("plotly")) install.packages("plotly") if (!require("ret…

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…

MATLAB中的size函数

**MATLAB中的size函数用于获取矩阵或数组的维度信息&#xff0c;包括行数和列数**。以下是对size函数的详细解析&#xff1a; 1. **基本用法**&#xff1a;当仅有一个输出参数时&#xff0c;ssize(A)会返回一个行向量&#xff0c;其中第一个元素是矩阵的行数&#xff0c;第二个…

【Unity(2)】unity开发的基本框架和经典的 MVC 架构模式

什么是架构? 架构是一个约定&#xff0c;一个规则&#xff0c;一个大家都懂得遵守的共识。那这是什么样的约定、什么样的规则、什么样的共识呢&#xff1f; 一个项目开始立项的时候&#xff0c;最常见的一个情况就是&#xff1a;几个人一个小团队&#xff0c;开始什么也不做…

android NDK 编译提示 is not able to compile a simple test program

问题描述 在将项目 clone 下来之后编译&#xff0c;提示 The C compiler"C:/Users/***/AppData/Local/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exeis not able to compile a simple test program问题分析 很明显的提示&#…

推荐算法工程师面试中常见的问题及答案1

以下是一些推荐算法工程师面试中常见的问题及答案&#xff0c;覆盖了推荐系统中的经典算法、评价指标、业务场景等多个方面。你可以通过这些问题来全面了解面试中可能涉及的知识点。 1. 协同过滤&#xff08;Collaborative Filtering&#xff09;的两种主要方法是什么&#xf…

sprint-test和junit的区别

1. spring-test 依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.10</version><scope>test</scope> </dependency>用途&#xff1a;spring-test 是 …