phpstudy是很多开发者常用的本地集成开发环境,部署完成后出现无法连接mysql的情况十分常见,其中mysql服务未启动和密码错误是最主要的两类原因,下面针对这两种情况分别给出排查和解决方法。

一、如何判断是服务未启动还是密码错误
首先需要先明确连接失败的具体原因,避免盲目操作,两种情况的报错特征有明显区别:
- 如果是mysql服务未启动,连接时通常会提示
Can't connect to MySQL server on 'localhost'或者连接被拒绝类的报错,服务列表中看不到mysql进程运行。 - 如果是密码错误,通常会提示
Access denied for user 'root'@'localhost'或者密码错误类的报错,服务本身是正常运行状态。
二、mysql服务未启动的解决方法
1. 通过phpstudy面板启动服务
打开phpstudy面板,在首页的服务列表中找到mysql选项,查看状态是否为已停止,如果是则点击右侧的启动按钮,等待状态变为已启动即可。
2. 手动检查系统服务
如果面板启动失败,可以打开系统服务列表,找到名称包含mysql的服务项,查看其状态是否为正在运行,如果未运行则右键选择启动。如果启动时报错,可能是端口被占用,默认mysql端口是3306,可以通过以下命令查看端口占用情况:
# 查看3306端口占用 netstat -ano | findstr 3306
如果端口被其他进程占用,可以关闭对应进程,或者修改mysql的配置文件my.ini中的端口配置,修改后重启phpstudy即可。
三、mysql密码错误的解决方法
1. 确认phpstudy默认密码
phpstudy不同版本的mysql默认密码不同,部分版本默认密码为空,部分版本默认密码是root,可以在phpstudy面板的mysql设置中查看默认密码提示,或者尝试用空密码和root分别连接。
2. 重置mysql密码
如果忘记修改后的密码,可以通过以下步骤重置:
- 停止phpstudy中的mysql服务
- 打开命令行,进入mysql的bin目录,执行以下命令跳过权限验证启动mysql:
# 进入mysql bin目录,路径根据实际安装位置调整 cd D:phpstudyExtensionsMySQL5.7.26bin # 跳过权限表启动 mysqld --skip-grant-tables
- 新开一个命令行窗口,同样进入mysql的bin目录,执行
mysql -u root直接登录,然后执行以下命令修改密码:
-- 切换到mysql系统库
USE mysql;
-- 修改root用户密码,密码替换为实际需要设置的密码
UPDATE user SET authentication_string = PASSWORD('新密码') WHERE User = 'root';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
关闭所有命令行窗口,重启phpstudy的mysql服务,使用新密码即可正常连接。
四、其他可能导致连接失败的原因
| 问题原因 | 排查方法 | 解决方式 |
|---|---|---|
| 端口配置不一致 | 查看连接代码中的端口和mysql实际监听端口是否一致 | 修改连接代码端口或者mysql配置文件端口,保持统一 |
| 用户权限不足 | 查看root用户的host字段是否为%,允许所有地址连接 | 执行UPDATE user SET host='%' WHERE User='root';刷新权限 |
| php扩展未开启 | 查看phpinfo中是否有mysql或者mysqli扩展 | 在phpstudy的php设置中开启对应扩展,重启服务 |
按照以上步骤排查,基本可以解决phpstudy本地部署后无法连接mysql的大部分问题,操作时注意根据自己的phpstudy版本和实际安装路径调整对应命令和配置路径即可。