关于mysql:Cant-Connect-to-MySQL-Server-on-IP-Address-10061-错误的解决方案

如果你打算从近程连贯 MySQL 服务器的话,有可能会碰到 10061 谬误,这个谬误特地常见,通常的谬误提醒是「Driver Error, Can’t connect to MySQL server on ‘YOUR_IP_ADDRESS’ (10061)」

导致 10061 这个谬误的状况有两种

  • 登录账号近程拜访权限问题
  • MySQL 配置文件设置问题

本教程将具体解说,如何针对这两种状况进行配置,以修改 10061 谬误。

特地提醒:对于如何关上 MySQL 近程拜访性能,可看这篇《如何近程连贯 MySQL 数据库,阿里云腾讯云外网连贯教程》,如果想开启服务器可查看这份教程,本篇教程只讲开启后,为什么会呈现 10061 谬误。另外举荐一下卡拉云,只有你能写 SQL ,不会任何前端也能够用卡拉云疾速搭建属于本人的后盾管理系统,详见本文文末

一. 受权登录 MySQL 服务器的账号近程拜访权限

如果账号没有近程拜访权限或 host 配置谬误,会导致 10061 谬误。咱们能够新建一个账号用于近程登录,也能够批改已有账号的 host 配置,使它能够近程拜访。

1. 新建用于近程登录的 MySQL 账号

MySQL 用户账号是否能够近程登录,取决于账号中的 host 配置。host 指定该账号在哪些主机上能够登录,如果是本地用户可用 localhost,如果是近程用户,须要指定近程计算机的 IP,如果想任意主机均可登录,那么能够应用通配符 %

本教程应用通配符 % 来作为账号 host 的设置,你能够依据本人的状况将 % 改为指定主机 IP,这样能够是 MySQL 近程登录更加平安。

首先登录 MySQL Server

mysql -u root -p

而后新建一个用于近程登录的 MySQL 账号,这里的「password」换成你的明码,如果MySQL 设置为严格明码的话,须要「数字+英文大小写+符号」

CREATE USER 'kalacloud.com-remote'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

接着,依据本人的须要,给你用于近程拜访的账号赋予权限。上面的例子是给账号全局权限,包含创立(CREATE)、批改(ALTER)、删除(DROP) 数据库、表、用户,任意表的插入(INSERT)、更新(UPDATE)、删除(DELETE)操作权限。能够应用 SELECT 查问数据,应用 REFERENCES 建设外键关系权限,以及应用 RELOAD 权限执行 FLUSH 操作的权限。

当然,你也能够依据本人都需要,对账号权限进行调整。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kalacloud.com-remote'@'%' WITH GRANT OPTION;

最初,运行 FLUSH PRIVILEGES 命令,刷新 MySQL 的零碎权限相干表,更新缓存。

FLUSH PRIVILEGES;

扩大浏览:最好用的 10 款 MySQL / MariaDB 管理工具横向测评 – 收费和付费到底怎么选?

2. 将已有账号更改为可近程登录的账号

如果你不想新建账号,只是想沿用曾经有的MySQL 登录账号,那么咱们也能够间接把它改为可近程登录的账号。

首先,咱们查看 MySQL 所有账号

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

接下来,咱们把 'kalacloud.com'@'localhost' 这个账号改为可近程登录的账号。咱们把这个账号 host 改为任意主机(%)或者是固定主机 ip 。能够应用 RENAME USER 命令来实现:

RENAME USER 'kalacloud.com'@'localhost' TO 'kalacloud.com'@'%';

执行后,再查看 MySQL 所有账号列表

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

咱们能够看到 'kalacloud.com'@'localhost' 曾经变为 'kalacloud.com'@'%' 了。

特地提醒:如果你应用的是 MySQL 8.0,应用这个账号近程登录可能会呈现caching_sha2_password 报错,这是因为 MySQL 8.0 默认认证形式改为 SHA2 了,如果不反对 SHA2 插件认证形式,那么就会报错,比方应用 Workbench 和 Squel Pro 登录时,如下图。

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found

咱们能够把应用 caching_sha2_plugin 认证的'kalacloud'@'%'账号改为应用明码认证。

ALTER USER 'kalacloud.com'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

最初运行 FLUSH PRIVILEGES命令 刷新 MySQL 零碎权限相干表,更新缓存

FLUSH PRIVILEGES;

至此,MySQL 近程登录账号局部就配置实现了,如果还是报 10061 谬误,那么你还应该查看 MySQL 配置文件是否有问题。

扩大浏览:MySQL Workbench 中文使用指南

二. 改 MySQL 配置文件

在默认状况下,MySQL 数据库仅监听本地连接。如果想让外网近程连贯到数据库,咱们须要批改配置文件,让 MySQL 能够监听近程固定 ip 或者监听所有近程 ip。

首先关上 mysqld.cnf 配置文件。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind – address 这一行,如下图所示。

默认状况下, bind – address 的值为 127.0.0.1 ,所以只能监听本地连接。咱们须要将这个值改为近程连贯 ip 可拜访,可应用通配符 ip 地址 *, ::, 0.0.0.0 ,当然也能够是独自的固定 ip,这样就仅容许指定 ip 连贯,更加平安。

提醒:在某些 MySQL 版本的配置文件中,没有 bind – address 这一行,这种状况下,在适合的地位加上就能够了。

提醒:在某些 MySQL 版本的配置文件中,没有 bind – address 这一行,这种状况下,在适合的地位加上就能够了。

更改后,保留并退出编辑器(应用 CTRL+X 保留并退出 nano 编辑器。)

而后重启 MySQL 服务,使刚刚编辑的 mysqld.cnf 文件失效:

sudo systemctl restart mysql

扩大浏览:如何在 MySQL / MariaDB 中查找和删除重复记录?

三. 总结

到这里,只有你跟着教程走,肯定曾经解决了 MySQL 10061 谬误。

MySQL 除了近程连贯这类适宜应用终端命令操作外,大多数对 MySQL / MariaDB 数据导入导出操作还是为了数据展现、剖析、协同共享等产品和经营层面的利用场景。

比方后端工程师接到产品需要,帮助导出某类数据等场景,如果这类需要频繁呈现,举荐应用我开发的卡拉云。卡拉云是新一代低代码开发工具,免装置部署,可一键接入包含 MySQL 在内的常见数据库及 API。

卡拉云不仅能够像命令行一样灵便,还可依据本人的工作流,定制开发。无需繁琐的前端开发,只须要简略拖拽,即可疾速搭建企业外部工具。数月的开发工作量,应用卡拉云后可缩减至数天,欢送收费试用卡拉云。

卡拉云可疾速接入的常见数据库及 API

卡拉云可依据公司工作流需要,轻松搭建数据看板,并且可分享给组内的小伙伴共享数据

仅需拖拽一键生成前端代码,简略一行代码即可映射数据到指定组件中。

卡拉云可间接增加导出按钮,导出实用于各类剖析软件的数据格式,方便快捷。立刻开明卡拉云,搭建属于本人的后盾管理工具。

如果感觉我的文章对你有帮忙,还请点个赞再走。欢送评论区一起交换。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理