故障分析 | MySQL 无监听端口故障排查

作者:王向

爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。擅长数据库故障处理。对数据库技术和 python 有着浓厚的兴趣。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


前言

最近解决了一个比较基础的问题故障,由于排查过程挺有意思,于是就以此为素材写出了本篇文章。

故障现场

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

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

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

1.排查进程存在

[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.排查端口绑定情况,居然没有绑定端口

[root@wx ~]# lsof -i:3308
[root@wx ~]# ss -nltp|grep 3308

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

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

mysql> show variables like 'port'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| port              | 0 | 
+---------------+-------+

秉承着无从下手先谷歌的想法在谷歌一番搜索多篇文章均指向 skip-networking 这个参数;查看我方配置文件并未配置 skip_networking 参数。但是发现了 skip-grants-tables 。

官方文档寻找答案

大概意思就是因为使用 skip-grants-tables 参数禁用了权限表,这种情况下 mysql 会默认开启 skip-networking 来禁用远程连接。目的是为了安全。

解决方案

因为配置 skip-grants-tables 引起无法远程连接 mysql 服务端的故障,解决方法也是非常的简单注释重启。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 的配置文件是一个重要的组成部分,它决定了 MySQL 服务器的行为和功能。下面是 MySQL 配置文件的一些重要参数的详解: 1. `datadir`:指定 MySQL 数据文件的存储路径。默认情况下,数据文件存储在 `/var/lib/mysql` 目录下。 2. `port`:指定 MySQL 服务器监听的端口号。默认端口号是 3306。 3. `bind-address`:指定 MySQL 服务器绑定的 IP 地址。默认情况下,它绑定在所有可用的 IP 地址上。 4. `max_connections`:指定允许的最大并发连接数。这个值取决于你的硬件和应用程序的需求。 5. `character_set_server`:指定服务器默认字符集。见的字符集有 utf8、utf8mb4 等。 6. `collation_server`:指定服务器默认的排序规则。它与字符集相关,用于确定字符串比较和排序的规则。 7. `log_error`:指定错误日志文件的路径。MySQL 会将错误信息记录在这个文件中,以便进行故障排查。 8. `slow_query_log`:启用慢查询日志功能。当查询执行时间超过设定阈值时,将会被记录在慢查询日志中。 9. `innodb_buffer_pool_size`:指定 InnoDB 存储引擎使用的缓冲池大小。这个参数决定了 InnoDB 存储引擎能够缓存的数据量。 10. `innodb_log_file_size`:指定 InnoDB 存储引擎的日志文件大小。这个参数影响到事务处理的性能和恢复过程的速度。 这些只是 MySQL 配置文件中的一部分参数,还有很多其他参数可以根据需求进行配置。配置文件的路径通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`,具体路径可能因操作系统而异。在修改配置文件后,需要重启 MySQL 服务器使修改生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值