作者:王向

爱可生 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 服务端的故障,解决办法也是十分的简略正文重启。