希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~
阅读指南
- 开篇说明
- 一、基础环境说明
- 1.1 硬件环境
- 1.2 软件环境
- 二、常见的问题
- 2.1 连接和认证相关
- 2.2 权限相关
- 2.3 表和数据操作相关
- 2.4 资源限制和配置相关
- 2.5 其他
- 三、最后
开篇说明
梳理了一下近期大家在使用mysql中经常遇到的问题提示,有的是在navicat等连接工具上出现,有的是在代码中调用过程中出现的,做了一个常见的错误汇总和原因,作为参考,希望可以帮大家定位问题;
一、基础环境说明
考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境
1.1 硬件环境
MacOS Monterey 版本 12.6.8 Apple M1
1.2 软件环境
数据库版本:mysql 8.0
二、常见的问题
提示:很多问题发生的原因很多,所以注意的是,以下的所有问题出现时,我们首先要确定的就是
自己的mysql服务是否正确安装
,以及服务是否是启动的状态
;防火墙
已经关闭或者开放了对应端口,然后我们再去排查原因;
2.1 连接和认证相关
- 1045:访问被拒绝,用户名或密码错误。这通常发生在尝试连接到MySQL服务器时,提供的用户名或密码不正确。
【1】这个的大概率问题就是就是用户名或密码错误
,仔细核对自己的账号和密码是否正确;
【2】端口错误的可能性也有,但是一般较少见,除非在安装的时候,大家修改过默认的端口号;或者你的计算机就有多个版本的mysql
,所以端口避免冲突会有不同;
【3】root用户
无法进行远程访问
,这个通常发生在我们远程连接数据库的时候出现,若是自己本地的连接是不存在这个问题的;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES; // 刷新权限
‘%‘代表任何主机。安全的做法,是指定一个具体的IP地址或IP地址范围,而不是使用’%’,这个就根据自己的情况来定了;
然后还需要观察一下自己的配置文件中,是不是bindaddress
是否设置了(0.0.0.0)
- 1042:无效的主机名。在连接MySQL服务器时,指定的主机名无法解析或无法访问。
【1】首先确认自己的用户名和数据库名有没有写对;
【2】其次大概率就是权限的问题,通常开发中我们使用的账号都是root权限一般较大,所以一般不会存在这个问题,但是如果你有使用其他账号的情况下,需要确认改用户是否权限有赋予足够;
在mysql8中,我们通常这么查询某个数据库这个用户是否有权限;
// 先从这个用户的账号密码登录之后,执行下面的句子
SELECT GRANTEE, PRIVILEGE_TYPE
FROM information_schema.TABLE_PRIVILEGES
WHERE TABLE_SCHEMA = 'your_database_name';
如果此时提示没有权限,你就需要这么授权;
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'your_host' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
- 1043:无效连接。通常是由于连接请求未能成功建立,可能是由于网络问题或MySQL服务器未运行
【1】mysql服务没启动
【2】网络问题,不通(防火墙,ping能否通)
【3】mysql的服务地址是否正确,例如IP,端口等
【4】检查配置文件如my.cnf等,是否配置了bindaddress为指定的ip或者0.0.0.0匹配所有IP
2.2 权限相关
- 1044:当前用户没有访问数据库的权限。用户尝试访问的数据库对其不可见或未授权;
这个错误的处理同【1045】一样处理排查即可;
- 1227:权限不足,您无权进行此操作。尝试执行的操作需要更高的权限,但当前用户不具备这些权限。
【1】你需要拥有SUPER权限;
如果你是一个管理员,并且确信需要给某个用户SUPER权限,你可以使用具有SUPER权限的用户(如root)来授予这个权限。但是,请务必谨慎,因为SUPER权限非常强大,可能会带来安全风险
2.3 表和数据操作相关
- 1005:创建表失败。通常是由于表名已存在、磁盘空间不足或权限问题等原因。
- 1050:数据表已存在。尝试创建已存在的表时会发生此错误。
- 1051:数据表不存在。尝试访问或操作不存在的表时会发生此错误。
- 1062:字段值重复,入库失败。尝试向具有唯一键约束的列插入重复的值时会发生此错误。
- 1146:数据表不存在。这也是一个常见的表不存在错误。
2.4 资源限制和配置相关
-
1021:硬盘剩余空间不足,请加大硬盘可用空间。这通常发生在尝试执行需要更多磁盘空间的操作时。
-
1037:系统内存不足,请重启数据库或重启服务器。当MySQL服务器内存不足时,可能会出现此错误。
-
1040:已到达数据库的最大连接数,请加大数据库可用连接数。当达到MySQL服务器允许的最大连接数时,新的连接请求将被拒绝。
2.5 其他
-
1024:读文件错误。在读取MySQL服务器上的文件时发生错误。
-
1026:写文件错误。在写入MySQL服务器上的文件时发生错误。
-
1216:外键约束失败,关联的外键值不存在。尝试插入或更新数据时,外键约束检查失败。
三、最后
问题处理时,需要结合自己的实际场景,并且版本,操作系统,不同的时候可能会有不同的处理方式,本文仅作参考;