php连接本地mysql连接错误的问题解决方法
我的服务器启用的nginx,配置了php的连接mysql的配置文件connect.php:
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)
尤其是最后一步,如果不修改还是连不上的
到此这篇关于php连接本地mysql连接错误的问题解决方法的文章就介绍到这了,更多相关php连接mysql连接错误内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
您可能感兴趣的文章
- 05-12php编程基础期末考试重点是什么,php编程基础
- 05-12PHP是前端还是后端语言?PHP前端编程语言常被误解为纯后端
- 05-12{php 5 高级编程}怎么样,php5高级编程教程
- 05-12php编程windows环境怎么配置?PHP Windows环境配置教程
- 05-12php编程无限保存,php如何实现无限级数据保存
- 05-12php编程宝典dvd哪里下载,php编程宝典
- 05-12php编程能力提升难吗,php编程能力提升
- 05-12php需要怎么编程,php编程入门教程
- 05-12如何高效学习PHP编程?PHP实战技巧有哪些
- 05-12php编程的软件有哪些,php编程软件推荐
阅读排行
推荐教程
- 07-25PHP建立MySQL与MySQLi持久化连接(长连接)区别
- 07-25PHP WindSearch实现站内搜索功能
- 07-25PHP调用FFmpeg实现视频切片
- 02-01PHP编程用什么软件?资深开发者为你揭秘最佳工具组合
- 01-23重庆哪里能找到专业的PHP编程培训班?推荐哪家比较好?
- 01-23如何通过PHP编程实现从文本框输入并处理整数的完整代码示例?
- 02-22PHP编程架构原理,如何深入理解其应用与实际开发中的应用场景?
- 01-28php编程第3版pdf中,有哪些新特性或更新让我不得不重新学习?
- 01-21PHP编程如何巧妙实现九九乘法表?分享编程技巧与代码细节!
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
