2023-07-09 14:05:39
来 源
中存储
MySQL
介绍了Navicat在连接MySQL数据库时遇到1045错误的解决步骤,包括检查用户名、密码、主机名,修改MySQL配置,重置密码,检查用户权限,查看日志文件,以及开放防火墙端口等。

1.1 Mysql 1045错误

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

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

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

检查用户名和密码:确保您使用的用户名和密码是正确的。

检查主机名:确保您尝试连接的主机名是正确的。如果您的应用程序尝试从不同的主机或IP地址连接,您可能需要编辑MySQL用户的主机设置。

检查MySQL配置:有时候,MySQL配置可能会阻止某些用户从特定主机连接。您可以检查my.cnf或my.ini文件中的bind-address设置,确保它允许您尝试连接的主机。

重置密码:如果您忘记了密码,您可能需要重置它。这通常涉及到以安全模式重新启动MySQL服务器,并使用一个有足够权限的账户重置密码。

检查用户权限:使用以下命令检查用户的权限:

SHOW GRANTS FOR 'username'@'hostname';

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

查看日志文件:查看MySQL的错误日志文件,它通常位于/var/log/mysql/error.log(取决于您的安装和配置)。日志文件可能包含有关为什么连接被拒绝的更多信息。

防火墙或安全组:确保没有任何防火墙或安全组规则阻止您的应用程序主机连接到MySQL服务器。

重新安装或修复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、依次执行如下命令:

mysql> use mysql;

mysql> select  User,authentication_string,Host from user;

连接方式仅为Localhost,没有配置远程连接的方式,因此,通过连接工具进行远程连接会报错,这也是上面错误的来源。

那么这个问题怎么解决呢?很简单,配置所有IP可以连接就行

根据下面文档进行

3、将Host设置为通配符update user set host = '%' where user ='root';

4、刷新flush privileges;

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

5、再次测试成功连接。

以上内容如果解决了您的1045连接错误,请点赞支持。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。