当前位置: 首页 > 科技观察

客户端连接不上MySQL故障排查

时间:2023-03-22 01:17:43 科技观察

在日常的MySQL运维中,客户端连接不上MySQL的情况也很常见。在这种情况下,调查分为以下三类。1、mysqld进程运行不正常。遇到这种情况,先去服务器看看mysqld进程是否存活。使用的命令是:mysqladminping或ps-ef|grepmysqld2.客户端无法与进程mysqld通信。如果MySQL服务器上的mysqld进程运行正常,我们看看客户端是否可以和mysqld通信,使用如下命令测试网络连接:telnetlocalhost3306如果本地连接可用,则到客户端的机器上更换带有用于测试的MySQL服务器ip地址的localhost。如果失败,通常有两个原因。一个原因是操作系统或网络问题,或防火墙;另一个原因是mysqld本身根本不监听客户端的连接请求。三个条件。第一种情况是使用参数--skip-networking跳过监听客户端的网络连接。通过以下命令,我们可以看到MySQL根本没有监听3306端口。mysqld--no-defaults--console--usermysql--skip-networking&netstat-plunt|grep3306第二种情况,使用参数--bind-address添加对客户端访问IP地址的限制,比如只监听本地连接:mysqld--no-defaults--usermysql--bind-address=127.0.0.1&netstat-plunt|grep3306tcp00127.0.0.1:33060.0.0.0:*LISTEN22767/mysqldtcp600:::33060:::*LISTEN22767/mysqldmysqld--no-defaults--usermysql--bind-address='192.168.17.40'&netstat-plunt|grep3306tcp00192.168.17.40:33060.0.0.0:*LISTEN23053/mysqldtcp600:::33060:::*LISTEN23053/mysqld第三种情况有对客户端访问IP地址没有限制。mysqld--no-defaults--usermysql&netstat-plunt|grep3306tcp600:::33060:::*LISTEN23582/mysqldtcp600:::3306:::*LISTEN23582/mysqld我们可以通过查看网口监听来猜测mysqld进程的参数设置。3、账号密码的问题最后一种情况是账号密码的问题。针对这种情况,我们有一个强大的工具,可以查看MySQL的错误日志。错误日志记录信息的详细程度由参数--log-error-verbosity来控制,该参数的作用如下:默认为2,设置为3可以记录更多的信息.这个参数可以在线设置:mysql>setgloballog_error_verbosity=3;QueryOK,0rowsaffected(0.00sec)whenpasswordwrongmysql-uroot-perrorpasswordmysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.ERROR1045(28000):Accessdeniedforuser'root'@'localhost'(usingpassword:YES)MySQL的错误日志中有这样一条记录:2020-11-03T07:59:40.720835Z7[Note][MY-010926][??Server]Accessdeniedforuser'root'@'localhost'(usingpassword:YES)看到这样一条记录,我们至少知道客户端连接上了MySQL服务。如果参数--log-error-verbosity设置为默认值2,则没有这个提示,也就是没有注释类型信息。账号错误ERROR1130(HY000):Host'192.168.17.149'isnotallowedtoconnecttothisMySQLserver注意,账号错误时提示“不允许连接此MySQL服务器”,密码错误时提示“Accessdeniedfor用户”。MySQL中的帐户由两部分组成:用户和主机。MySQL中有一个mysql数据库,里面有一个user表。表中的Host和User是两个主键列(primarykey),唯一代表一个用户。在这种情况下,主机字段通常是本地主机,只需将其更改为通配符“%”即可。

最新推荐
猜你喜欢