前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL无监听端口的一个场景

MySQL无监听端口的一个场景

作者头像
bisal
发布2022-10-04 19:39:28
6720
发布2022-10-04 19:39:28
举报

这两天配合解决一个GreatDB端口的问题,碰巧看到爱可生开源社区的这篇文章《故障分析 | MySQL 无监听端口故障排查》,同样介绍了一个MySQL数据库端口的问题,问题不是很复杂,但这个场景,确实很少碰到,可以加到自己的案例库中。

故障现场

防火墙什么的均正常但是无法被远程访问到,简单的使用客户端登录了一下。

代码语言:javascript
复制
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

根据以往经验大脑中浮现了几个常见的排查此类故障手法,

(1) 排查进程存在,

代码语言:javascript
复制
[root@wx ~]# ps -ef|grep [m]ysql 
mysql 25973 1 1 8月30 ? 02:43:20 
/mysqldata/mysql/base/8.0.24/bin/mysqld --defaults-
file=/mysqldata/mysql/etc/3308/my.cnf --daemonize --pid-
file=/mysqldata/mysql/data/3308/mysqld.pid --user=mysql --
socket=/mysqldata/mysql/data/3308/mysqld.sock --port=3308

(2) 排查端口绑定情况,居然没有绑定端口,

代码语言:javascript
复制
[root@wx ~]# lsof -i:3308
[root@wx ~]# ss -nltp|grep 3308

(3) 查看启动日志发现,监听端口等于0,

代码语言:javascript
复制
2022-09-06T07:30:41.090649-00:00 0 [Note] [MY-010304] [Server] Skipping generation of SSL certificates as certificate files are present in data directory. 
2022-09-06T07:30:41.094320-00:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 
2022-09-06T07:30:41.094806-00:00 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 
2022-09-06T07:30:41.095177-00:00 0 [Note] [MY-010308] [Server] Skipping generation of RSA key pair through --sha256_password_auto_generate_rsa_keys as key files are present in data directory. 
2022-09-06T07:30:41.095500-00:00 0 [Note] [MY-010308] [Server] Skipping generation of RSA key pair through -- caching_sha2_password_auto_generate_rsa_keys as key files are present in data directory. 
2022-09-06T07:30:41.124942-00:00 0 [System] [MY-010931] [Server] /mysqldata/mysql/base/8.0.24/bin/mysqld: ready for connections. Version: '8.0.24' socket: '/mysqldata/mysql/data/3306/mysqld.sock' port: 0 MySQL Community Server - GPL.

4. 使用show variables命令查看确实是0,

代码语言:javascript
复制
mysql> show variables like 'port'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| port              | 0 | 
+---------------+-------+

通过搜索,多篇文章均指向skip-networking这个参数,他控制了是否允许通过建立TCP/IP进行远程访问,

c11db5b09ad46ed461ad65af3368eb8f.png
c11db5b09ad46ed461ad65af3368eb8f.png

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_skip_networking

然而,配置文件并未配置skip_networking参数,但是,发现了skip-grants-tables参数,MySQL 8.0官方文档说明,如果配置了skip-grants-tables参数禁用了权限表,就会默认开启skip-networking来禁用远程连接,

7f967d93d9d5558a7265ea5496e30d6a.png
7f967d93d9d5558a7265ea5496e30d6a.png

但是,MySQL 5.7官方文档则没提到这点,说明在安全性方面做到了提升,要求更加严格了,

bd3eb37135c8f4e48b81182914b3e5a3.png
bd3eb37135c8f4e48b81182914b3e5a3.png

既然这个问题,出自于skip-grants-tables参数配置引起无法远程连接MySQL,解决方案,就是注释该参数,重启服务。

从这个案例,我们可以看到,MySQL不同版本之间,一些细微参数的调整,就可能引起不同的现象,如果涉及数据库版本的升级,作为使用方,一方面需要了解不同版本之间的主要差异(一般情况下,不太可能了解全部的,还是会漏),另一方面就是能掌握排查问题的常用手段和方法,能快速定位问题、解决问题,另外,就需要持续积累这些场景和经验。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故障现场
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档