写点什么

mysql 进阶 (十七)Cannot Connect to Database Server 问题分析

  • 2022 年 7 月 22 日
  • 本文字数:1292 字

    阅读完需:约 4 分钟

mysql进阶(十七)Cannot Connect to Database Server问题分析

一、前言

由于不同的项目中使用的数据库用户名与密码出现了不一致的情况,在其中之前较早一个项目执行过程中出现“The user specified as a definer ('root'@'localhost') does not exist”的错误提示。经过网络一番搜索,原因是 root 用户不存在,故自己将用户名改回到之前的用户名,结果出现连接不到数据库的情况,如下图所示:

 

二、问题分析

  1. 可能数据库服务没有启动;

  2. 可能指定的数据库连接用户名或密码不正确;

  3. 可能数据库连接语句写得不正确;

  4. 可能数据库中没有指定的数据库存在;

  5. 可能没引 sql 包或没有驱动程序;

三、解决方案

Mysqlbin 目录: C:\Program Files\MySQL\MySQL Server 5.7\bin

mysql -u root -p;
复制代码

删除原来的数据库实例后,创建新的实例,发现还是无法连接数据库,如下所示:

 


关闭重启 mysql 服务,发现还是无法登录,自己也就纳了闷了。

 


将 mysql 服务关闭后,可以进入 workbench,但是还是无法连接 mysql。根据下图可获知 mysql 配置文件my.ini位置:

 


Can't connect to MySQL server on '127.0.0.1' (10061)

检查密码是否正确。



密码错误的话会提示密码不对,查看一下你的 hosts 的文件。

Hosts 文件位置:C:\Windows\System32\drivers\etc



难道是端口的问题?于是用telnet 127.0.0.1 3308测试端口,结果它竟然提示:

 


my.ini中确实用的是 3308 端口,用netstat -an查看,3308 处于如下TIME_WAIT超时状态:

 


那到底是什么原因呢?在项目中测试发现也是提示“Host 'localhost' is not allowed to connect to this MySQL server”


启动mysql服务,出现下图错误:

 


尝试无果后,重装!

卸载过程中由于没卸载干净,导致安装时又出现了一系列的问题。悲剧!

Mysql 卸载教程:点击查看

Mysql 安装教程:  Windows下MySQL 5.6安装及配置详细图解-51CTO.COM


安装过程中出现了如下错误:

 


网络搜寻各种方法,还是未能解决问题。


再次转换思路,换个版本试试,其中尝试了 5.7.10.但其是 zip 格式,解压后还需配置一系列的文件,尝试无果后,使用了低版本的 5.5.47,msi 格式,这是傻瓜式安装方式还是比较方便的。第一次安装后,自己曾试图将之前的数据库恢复,无果而终,并且导致无法更改用户名,又是一顿狂卸载,安装,第二次之后,用户名可以正常更改。经测试,一切正常!


数据库要及时备份,否则后果不堪设想!

​四、延伸阅读 mysql 批量删除大量数据

假设有一个表(syslogs)有 1000 万条记录,需要在业务不停止的情况下删除其中 statusid=1 的所有记录,差不多有 600 万条, 直接执行 DELETE FROM syslogs WHERE statusid=1 会发现删除失败,因为lock wait timeout exceed的错误。


因为这条语句所涉及的记录数太多,因此我们通过 LIMIT 参数分批删除,比如每 10000 条进行一次删除,那么我们可以利用 MySQL这样的语句来完成:

DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;
复制代码


然后分多次执行就可以把这些记录成功删除。


执行大批量删除的时候注意要使用上limit。因为如果不用limit,删除大量数据很有可能造成死锁。如果deletewhere语句不在索引上,可以先找主键,然后根据主键删除数据库。平时updatedelete的时候最好也加上limit 1来防止误操作。

发布于: 42 分钟前阅读数: 5
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
mysql进阶(十七)Cannot Connect to Database Server问题分析_MySQL 数据库_No Silver Bullet_InfoQ写作社区