1045 - Access denied for user ‘root @223.98.184.126‘ (using password: YES)

发布时间:2024年01月09日

在这里插入图片描述
Navicat 连接数据库的时候报错,本文就是解决此问题。

1 知识小课堂

1.1 Mysql 1045错误

MySQL的1045错误是一个常见的错误,表示用户无法连接到数据库,因为提供的用户名和密码无效。

这个错误的完整消息通常是:“Access denied for user ‘username’@‘hostname’ (using password: YES)”。

这里是一些可能的解决步骤:

  1. 检查用户名和密码:确保您使用的用户名和密码是正确的。
  2. 检查主机名:确保您尝试连接的主机名是正确的。如果您的应用程序尝试从不同的主机或IP地址连接,您可能需要编辑MySQL用户的主机设置。
  3. 检查MySQL配置:有时候,MySQL配置可能会阻止某些用户从特定主机连接。您可以检查my.cnf或my.ini文件中的bind-address设置,确保它允许您尝试连接的主机。
  4. 重置密码:如果您忘记了密码,您可能需要重置它。这通常涉及到以安全模式重新启动MySQL服务器,并使用一个有足够权限的账户重置密码。
  5. 检查用户权限:使用以下命令检查用户的权限:
SHOW GRANTS FOR 'username'@'hostname';

如果用户没有足够的权限,您可能需要添加或修改权限。

  1. 查看日志文件:查看MySQL的错误日志文件,它通常位于/var/log/mysql/error.log(取决于您的安装和配置)。日志文件可能包含有关为什么连接被拒绝的更多信息。
  2. 防火墙或安全组:确保没有任何防火墙或安全组规则阻止您的应用程序主机连接到MySQL服务器。
  3. 重新安装或修复MySQL:在极端情况下,如果上述所有方法都不起作用,您可能需要考虑重新安装或修复MySQL服务器。

1.2 mysql 常见的错误代码

MySQL常见的错误代码有很多,以下是其中一些常见的错误代码:

1045 - 访问被拒绝,因为提供的用户名和密码无效。
1040 - 连接过多。
1042 - 无法获得该地址给出的主机名。
1045 - 访问被拒绝,因为用户 ‘%s’@‘%s’ 的密码不正确(使用密码:%s)。
1046 - 未选择数据库。
1047 - 未知命令。
1039 - 读取文件 ‘%s’ 时出现意外EOF。
1048 - 列值太多个数超过列的数目。
1054 - 未知的列 ‘%s’ 在 ‘field list’。
1064 - 语法错误,不能解析查询。
1065 - 没有活动事务。 1066 - 所有关联的行都被删除或更新了。
1062 - 值重复,插入操作失败。
1064 - SQL 语句语法错误或访问规则不允许执行该操作。 1088 - 不允许将多个赋值语句组合在一起。
1091 - 不识别选项 ‘%s’,忽略它。
1138 - 结果太大,无法返回给客户端。
1142 - 没有权限执行该操作。
1143 - 结果集中的列数不匹配。
1203 - 查询超时,已超出最大执行时间限制。
1217 - 外键约束检查失败,试图插入或更新违反外键约束的值。
1222 - 值太大,超过了列的数据类型范围。
1243 - 错误地使用了函数或表达式,导致错误的结果或操作。
1292 - 值不完整或格式不正确,无法解析为日期或时间。
1307 - 会话变量没有定义或值未设置。
1366 - 数据类型不正确,无法转换指定的数据类型。
1383 - 不支持的存储引擎或文件格式。
1452 - 外键列中的值在父表中找不到对应的主键或唯一值。
1485 - 子查询返回了多于一个的值,这在使用IN、EXISTS或ANY操作符时是不允许的。
2006 - MySQL服务器已关闭。
2056 - MySQL服务器遇到一个未知错误并关闭了连接。
2057 - MySQL服务器已经达到了最大连接数限制,无法再接受新的连接请求。
2066- 在查询执行期间,发生了一个未知错误。
2079 - 在尝试进行某种操作时,发现表或数据库不存在或无法访问。
2089 - 不允许在视图上执行该操作,因为视图不是基于单个表且可能涉及多个表的数据。
2097 - 在尝试修改或删除记录时,违反了唯一性约束条件。
2106 - 不允许对存储过程或函数进行修改或删除操作,因为它正在被其他查询或连接使用。

2 问题呈现

使用Navicat远程连接数据库的时候报错,报错详情如下。
在这里插入图片描述

3 问题解决

这是因为数据库没有开放权限导致,服务器中默认仅限本地连接,保护数据安全,因此解决方法按步骤进行。

  • 检查服务器的防火墙端口是否开放
  • 阿里云“云服务器”需要监测“安全组策略
  • 如果是Centos系统 又恰巧使用第三方工具管理比如:宝塔,则还需要再宝塔的面板安全处将端口放开
  • 以上工作做完,还需要重要的一步,则是放开服务器数据库的IP连接限制。

3.1 开始前的准备

3.1.1 防火墙开端口

进入阿里云的网站,找到个人的服务器,再防火墙那里添加新的规则。

  • 我的是轻量应用服务器
    在这里插入图片描述
  • 点开【添加规则】
    在这里插入图片描述
  • 输入端口和备注信息
    在这里插入图片描述
    如下,可看到已经开放的端口
    在这里插入图片描述

3.1.2 宝塔管理控制

进入宝塔管理页面,开放端口

在这里插入图片描述
在这里插入图片描述
呈现的效果。
在这里插入图片描述

3.2 问题解决步骤

1、在安装Mysql数据库的主机上登录root用户:

mysql -u root -p密码

在这里插入图片描述
2、依次执行如下命令:

use mysql;
select host from user where user='root';

在这里插入图片描述

  • 由图可知,连接方式仅为Localhost,没有配置远程连接的方式,因此,通过连接工具进行远程连接会报错,这也是上面错误的来源。
  • 那么这个问题怎么解决呢?很简单,配置所有IP可以连接就行
  • 根据下面文档进行

3、将Host设置为通配符

update user set host = '%' where user ='root';

在这里插入图片描述

4、刷新

flush privileges;

在这里插入图片描述

  • 刷新之后,再次查看可以连接的host,多了一个”%“这样就配置好了连接方式,再次尝试连接即可。

5、再次测试成功连接
在这里插入图片描述

请添加图片描述

文章来源:https://blog.csdn.net/CSDN_Admin0/article/details/135478466
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。