mysql端口一直显示0_mysql监听的端口变成0

1.版本

1)操作系统

cat /etc/issue

Red Hat Enterprise Linux Server release 5.5 (Tikanga)

Kernel \r on an \m

cat /proc/version

Linux version 2.6.32-504.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed

2)mysql数据库版本

mysql --version

mysql  Ver 14.14 Distrib 5.6.27, for Linux (x86_64) using  EditLine wrapper

2.问题描述

今天测试跟我反映,他们有一套测试库,别人登录不上,而且他发现该套库所在的主机上3306端口并未被监控。

3.问题排查

一开始我怀疑是不是配置的不是默认端口

1)查看mysqld进程

ps -ef|grep mysqld

root 21304 9809 0 14:32 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my3306.cnf

mysql 21784 21304 0 14:32 pts/1 00:00:02 /usr/sbin/mysqld --defaults-file=/etc/my3306.cnf --basedir=/usr --datadir=/data/mysql/mysql3306/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/data/mysql/mysql3306/log/error3306.log --open-files-limit=10240 --pid-file=/data/mysql/mysql3306/data/3306.pid --socket=/tmp/3306.sock --port=3306

root 22888 9997 0 14:58 pts/2 00:00:00 grep mysqld##我们可以看到mysqld进程是存在的,而且配置文件中写的也是3306端口

2)查看配置文件

[mysqld]

#socket-datafile

socket =/tmp/3306.sock

port = 3306

basedir=/usr##我们看到配置文件中也确实写的是3306端口

3)检查3306端口是否被监听

# netstat -lanp|grep 3306

unix 2 [ ACC ] STREAM LISTENING 2788738 21784/mysqld /tmp/3306.sock

# netstat -naop | grep 3306

unix 2 [ ACC ] STREAM LISTENING 2788738 21784/mysqld /tmp/3306.sock正常情况下监听3306端口应该输出如下:

netstat -lanp|grep 3306

tcp 0 0 127.0.0.1:28226 127.0.0.1:3306 TIME_WAIT -

tcp 0 0 :::3306 :::* LISTEN 24736/mysqld

unix 2 [ ACC ] STREAM LISTENING 2796207 24736/mysqld /tmp/3306.sock

netstat -naop | grep 3306

tcp 0 0 :::3306 :::* LISTEN 24736/mysqld off (0.00/0/0)

unix 2 [ ACC ] STREAM LISTENING 2796207 24736/mysqld /tmp/3306.sock

4)登录数据库

mysql -uroot -p -h127.0.0.1 -P3306

Enter password:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)##可以看到 我在本地通过127.0.0.1回环地址登录数据库时候报错

通过socket文件登录成功mysql -uroot -p -S /tmp/3306.sock

5)查看 port参数

mysql> show variables like 'port';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port | 0 |

+---------------+-------+

1 row in set (0.00 sec)##注意果然 端口居然变成了0

6)查看err错误日志

Version: '5.6.27-log' socket: '/tmp/mysql3306.sock' port: 0 Source distribution

##这是mysql启动最后的输出日志,正常情况下port处应该指定的是3306(因为我cnf文件中指定的就是3306)

4.解决方案

因为在本地通过socket方案数据库是能够正常登陆的,但是通过网络来登录数据库就报错,这时我们会想到一个参数skip-networking

1)查看skip-networking参数

mysql> show variables like 'skip_networking';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| skip_networking | ON |

+-----------------+-------+##果然设置了

skip-networking参数,这个就是导致mysql监听的端口变成0,并且通过网络无法登录数据库的主要原因了

2)查看cnf文件中是否有skip-networking参数

skip-networking

innodb_log_file_size=64M

innodb_log_files_in_group=3##我们看到cnf文件中确实配置了

skip-networking参数

3)注释掉skip-networking参数后重启实例,问题解决

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值