php连接不上mysql的原因有很多种常用的可能是函数没开启或mysql数据库配置有问题,下面我来给大家介绍php连接不上MySQL一些问题的分析与解决方法。

现象1

在PHP error log里发现:

PHP Warning: mysqli::mysqli(): (HY000/2003): Can’t connect to MySQL server on ‘XXX.XXX.XXX.XXX’ (99) in /u1/www/XXXX.php on line 10

PHP Warning: mysqli::close(): Couldn’t fetch mysqli in /u1/www/XXXX.php on line 11推断:只有在高并发的环境下出现

诊断分析:

通过MySQL数据库上抓包,没发现异常。又把目标转到php 服务器上。

BTW:

linux开着selinux连接MySQL在测试中基本上属于1ms+,禁掉selinux后在0.96左右。selinux还是要禁掉的。

既然又怀疑是PHP的问题就写一个程序测试(禁掉selinux后):

cat tconn.php

代码如下

复制代码

function microtime_float()

{

list($usec, $sec) = explode(” “, microtime());

return ((float)$usec + (float)$sec);

}

$time_start = microtime_float();

for ( $i=0; $i<30000; $i++){=""

$dbh=new mysqli(“XXX.XXX.XXX.XXX”, “wubx”, “wubxwubx”, “userdb”, 3308);

$dbh->close();

}

$time_end= microtime_float();

$time_use= ($time_end – $time_start)/30000;

print “$time_usen”;

#php tconn.php

0.00090954260031382

再次运行就开始大量的报错。

PHP Warning: mysqli::mysqli(): (HY000/2003): Can’t connect to MySQL server on ‘XXX.XXX.XXX.XXX’ (99) in /u1/www/XXXX.php on line 10

PHP Warning: mysqli::close(): Couldn’t fetch mysqli in /u1/www/XXXX.php on line 11

中止该程序后,通过

#strace php tconn.php 运行

得到:

connect(3, {sa_family=AF_INET, sin_port=htons(3308), sin_addr=inet_addr(“XXX.XXX.XXX.XXX”)}, 16) = -1 EADDRNOTAVAIL (Cannot assign requested address)

shutdown(3, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint is not connected)

看到这个大概明白是本地的网络可能注册不上了,也难怪在MySQL抓包看也正常。

看样子是本地tcp不能重用造成的。改一下在测试

代码如下

复制代码

sysctl -w net.ipv4.tcp_tw_reuse=1;

在次测试问题不存在了。在这个上面碰了一下后顺便改一下/etc/sysctl.conf添加:

代码如下

复制代码

net.ipv4.tcp_max_syn_backlog = 819200

net.core.netdev_max_backlog = 400000

net.core.somaxconn = 4096

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=0

#sysctl -p

问题解决

现象2

MYSQL.测试连接mysql 提示’Fatal error: Call to undefined function mysql_connect()”环境j是:windows xp sp2 en , apache2.2,mysql5.1rc.php5.28。

这个提示,会不会是php没有加载到连接mysql的库文件呢? 在启动apache server后.我试着删除’php5ts.dll’和’libmysql.dll’.提示不能删除.说明有程序在用着这两个库文件.说明是有加载的.(当然有许多方法来测试.比如可以用一些软件,查看程序服务加载的所有库文件.也是可以然而ap也说指是php.ini设置有问题.那我就不看别的.我就重点针对php.ini配置.

在没有迷信php.ini是正确下.终于发现.php.ini中漏了这一行.

PHPIniDir “你的php目录”

#(例如: PHPIniDir “c:/php”)

重启apache server,然后.用网上常用的方法

以下为引用的内容:

代码如下

复制代码

$link=mysql_connect(‘localhost’,’用户名’,’password’);

if(!$link) echo “失败!”;

else echo “成功!”;

mysql_close();

?>

测试一下.就可以了

总结一下这些问题

1. 首先要排查网络问题和防火墙的问题

这个是必须的, 你要是连MySQL的服务器都连不上, 那还访问什么? 怎么检查呢? ping一下 ping 192.168.0.11 ping 的通的话, 再去检查一下 3306端口是不是被防火墙给挡掉了 ping 192.168.0.11:3306 或者干脆把防火墙关掉,service iptables stop (Redhat ) 或 ufw disable(ubuntu) 这一步没问题的话, 开始下一步:

2. 要排查有没有访问权限

说到访问权限, MySQL分配用户的时候会指定一个host, 比如我的 host 指定为 192.168.0.5 , 那么这个账号就只能 .5 这一台机器访问, 其他的机器用这个账号访问会提示没有权限。 host 指定为 % 则表示允许所有的机器访问。 一般来说出于安全方面的考虑,遵循最小权限原则, 权限的问题就不多讲了, 不会的自己查手册。 确定了权限没问题的话进行下一步:

3. 要排查MySQL的配置

检查mysql的配置文件, Linux下MySQL的配置文件叫 my.cnf windows下的叫 my.ini,检查这个配置项: –bind-address=IP

引用手册里的一段话:

The IP address to bind to. Only one address can be selected. If this option is specified multiple times, the last address given is used. If no address or 0.0.0.0 is specified, the server listens on all interfaces.

绑定的IP, 只能绑定一个IP, 如果绑定多个IP, 则以最后一个绑定的为准。 如果没有绑定或绑定 0.0.0.0, 服务器监听所有的客户端。

我曾经就被这个东西害惨过, 有一次搞了一个下午没搞定, 检查网络通的, 检查权限没问题, 客户端就是死活连不上, 一看手册明白了。 所以有什么问题还是要多看手册

www.bkjia.comtrueTechArticlephp连接不上mysql的原因有很多种常用的可能是函数没开启或mysql数据库配置有问题,下面我来给大家介绍php连接不上MySQL一些问题的分析与解…

php mysql 连接不上_php连接不上MySQL问题解决办法_PHP教程相关推荐

  1. mysql所选路径已经存在_mysql安装常见问题解决办法

    [问]无法打开安装程序 1)双击安装软件开始安装 [问]安装是下面界面,怎么办? 然后按下图选择要安装的mysql server [问]提示需要安装.Net Framework 从这里下载:.NET ...

  2. 怎样删除usb计算机连接网络打印机驱动,USB无法识别打印机的解决办法和教程

    现在绝大部分常用打印机都是USB接口,常用型号连接到USB接口,系统一般都能默认识别并安装驱动:不常用型号打印机和精简操作系统一般也都能识别出打印机,但需要手动下载或是用光盘安装打印机驱动,打印机方可 ...

  3. 远程连接虚拟机的Network error: Connection timed out问题解决办法

    我是一个纯纯的小白 此贴并没有任何说教的意思 只是希望大家互相探讨汲取一些经验,共同进步 1 在网上查资料的时候很多大佬都提及 是因为防火墙自动阻止了一些功能的开启 具体观察办法是 win+r打开运行 ...

  4. Linux上svnserve “db/txn-current-lock: Permission denied“ 问题解决办法

    1. 查看启动svn serve 的服务与锁文件是否为同一用户[work@php_test db]$ ps -ef |grep svnservework 6424 1 0 Jun25 ? 00:00: ...

  5. 电脑连上WIfi但无网络的问题解决办法

    从未想过电脑链接Wifi无网络,想了办法解决了问题,那就给大家分享一下吧 步骤:1.打开cmd,然后输入第一个命令:ipconfig/release,点击回车,如下图(有的伙伴的点击回车,下面会出现, ...

  6. input type=file accept=.zip上传文件响应慢的问题解决办法

    在谷歌和火狐中使用 accept=".zip" 属性发现响应延迟的问题. 于是几经尝试后,发现是 accept=".zip" 属性的问题,删掉它或者将 * 通配 ...

  7. php mysql 连接不上_PHP: 连接状态 - Manual

    连接状态 插件改变了 PHP MySQL 连接的控制,新建连接会从一个连接池中获取,用于替代 client-server 的单一连接方式.连接池包含一组 master 连接,和可选数目的 slave ...

  8. linux怎么在win上安装mysql_CentOS下安装MySQL及Windows下使用Navicat for MySQL连接

    安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: y ...

  9. mysql在线检测失败_一则线上MySql连接异常的排查过程

    Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题## 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过 ...

最新文章

  1. 3650服务器性能,全新联想System x3650 M4服务器性能出色
  2. etcd数据库备份与还原
  3. verilog基础--sign表达式
  4. Automatic IE Testing With Python
  5. Google Map 中混淆和压缩代码的简单示例
  6. ubuntu linux kvm安装,基于Ubuntu 14.04 KVM拟化安装部署
  7. Codeforces Round #716 (Div. 2)
  8. LeetCode 2062. 统计字符串中的元音子字符串
  9. CSS轮廓样式属性为,简述CSS轮廓样式
  10. Boostnote跨平台 Markdown 编辑器
  11. 2021年研究生数学建模竞赛优秀论文汇总
  12. MainMenu中控制点击效果
  13. 全国哀悼日网站变灰代码
  14. 一定要会的Python爬虫技能,搜索名字即可下载全文小说?
  15. 中国科学院大学计算机研究所2019,中科院计算所2019年夏令营名单
  16. 5.用数组计算复利。有$1000,年利率6.5%,假设每月计息一次,计算10年的复利。输出要包括每年的利息、结余以及到改年为止的平均利息。
  17. Push rejected: Push to origin/master was rejected--git推送项目到远程服务器
  18. 用SRS搭建流媒体系统
  19. 基于低代码开发平台实现集团战略督办管理系统
  20. 开源聚合支付平台学习

热门文章

  1. 回归分析之线性回归(N元线性回归)
  2. emoji表情过滤处理
  3. Annotation 最终奥义,元注解
  4. c#调用本地命令并截取Output
  5. 几大主流国产浏览器统一屏蔽996.ICU!
  6. 如何“干净地”终止 Win32 中的应用程序
  7. 程序员年纪越大,工作被取代性越强
  8. 经典面试题(13):如何理解和应用JavaScript闭包?
  9. HTML5新特征、窍门和技术(6~10)
  10. vlc集成c#_C#WinForm程序调用VLC异常