LInux MySQL 端口验证
linux suse11在terminal可以正常登录进行各种操作,在tomcat运行jdbc web程序异常:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
原因查找
正常可以连接msql suse 运行以下命令情况如下:
1. 运行命令netstat -talnp验证3306端口是否打开:
test:~ # netstat -talnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4620/mysqld
。。。。。。
2.运行命令 ps aux|grep mysql看mysql服务是否在运行
test:~ # ps aux|grep mysql
root 4254 0.0 0.0 2940 1332 ? S 06:05 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/test.pid
mysql 4620 0.1 0.9 301476 37428 ? Sl 06:05 0:13 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/test.err --pid-file=/usr/local/mysql/data/test.pid --socket=/usr/local/mysql/mysql.sock --port=3306
root 8002 0.0 0.0 2264 680 pts/2 S+ 09:21 0:00 grep mysql
3.查看3306端口运行的进程 lsof -i :3306
test:~ # lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 4620 mysql 12u IPv4 10559 0t0 TCP *:mysql (LISTEN)
问题机器运行上面运行命令
1.netstat -talnp 看不到绑定到3306端口的tcp连接
2.ps aux|grep mysql 显示服务在运行
3. lsof -i :3306查看mysql是否运行在3306端口,未有显示mysql服务没有运行在3306端口
结论:mysql服务虽然在运行,可以通过teminal操作,但没有运行在3306端口,所以通过jdbc连接连接不上。
后查看网络资料mysql配置中skip-networking未注释,参数skip-networking起的作用是:mysql不再在TCP / IP端口上进行监听,与mysqld的所有互动都必须通过Unix套接字或命名管道进行。
配置文件注释如下
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
将参数skip-networking注释重启mysql服务,jdbc程序连接mysql正常。
网络遇见同样异常,可能的其它原因:
1.
tomcat程序连接服务器mysql数据库,报
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driverhas not received any packets from the server.
错误,后来用java程序直接连接数据库,还是一样的错误,数据库连接,用户名密码都没有问题。
在网上查了很多情况,什么数据库用户权限设置,还是数据库连接等待时间(wait_timeout)设置,都没用。
而连接本地的数据库就没问题,本地数据库版本:5.0.37,服务器数据库版本:5.0.19,JDBC驱动版本:
mysql-connector-java-5.1.9-bin.jar。
这个问题困扰了一天,后来想想换换5.0的驱动看看怎么样,结果在网上找了个mysql-connector-java-5.1.14-bin.jar的驱动,结果OK了。
2.
CommunicationsException: Communications link failure
If you get a SQLException: Connection refused or Connection timed out or a MySQL specific CommunicationsException: Communications link failure, then it means that the DB isn't reachable at all. This can have one or more of the following causes:
IP address or hostname in JDBC URL is wrong.
Hostname in JDBC URL is not recognized by local DNS server.
Port number is missing or wrong in JDBC URL.
DB server is down.
DB server doesn't accept TCP/IP connections.
DB server has run out of connections.
Something in between Java and DB is blocking connections, e.g. a firewall or proxy.
To solve the one or the other, follow the following advices:
Verify and test them with ping.
Refresh DNS or use IP address in JDBC URL instead.
Verify it based on my.cnf of MySQL DB.
Start the DB.
Verify if mysqld is started without the --skip-networking option.
Restart the DB and fix your code accordingly that it closes connections in finally.
Disable firewall and/or configure firewall/proxy to allow/forward the port.
参考:
http://stackoverflow.com/questions/2983248/com-mysql-jdbc-exceptions-jdbc4-communicationsexception-communications-link-fai
http://blog.csdn.net/gucapg/article/details/17509969
http://4925054.blog.51cto.com/4915054/1154263
LInux MySQL 端口验证的更多相关文章
- Linux下Mysql端口修改及防火墙开端口
用户权限问题:https://blog.csdn.net/weixin_43670802/article/details/103019598 Linux下修改Mysql默认的3306端口 如下: 1. ...
- linux开关端口问题
linux开关端口问题: 我们知道一些常用的端口,比如mysql的端口为3306,sql的端口为:1433,以及tomcat的端口为 8008等等一样! 当这些端口在linux下是没有开启时,我们是无 ...
- Linux Mysql数据库安全配置
Linux Mysql数据库安全配置 目录: 1.修改mysql管理员账号root的密码(2种方法) 2.修改mysql管理员账号root 3.mysql管理员root账号密码遗忘解决办法(2种方法 ...
- Linux通过端口转发来访问内网服务(端口转发访问阿里云Redis数据库等服务)
# 安装rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz& ...
- linux 常用端口【转载】
原文地址: http://blog.csdn.net/u013943420/article/details/65938696 一个计算机最多有65535个端口,端口不能重复.这65536个端口被分为两 ...
- Linux MySQL 常见无法启动或启动异常的解决方案
Linux MySQL 常见无法启动或启动异常的解决方案 在 Linux 上自建 MySQL 服务器,经常遇到各种无法启动或启动后异常的问题,本文列举一些常见问题的解决办法. 注意:以下错误日志提示, ...
- linux暴露端口可以被外部访问
linux暴露端口可以被外部访问,把端口号换成要暴露的端口:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT Centos 7 开启端口Cen ...
- mysql端口查看与修改-netstat命令使用
linux上使用netstat察看mysql端口和连接 linux上使用netstat察看mysql端口和连接 近日发现写的一个java程序的数据库连接在大压力下工作不打正常,因此研究了一下dbcp, ...
- linux mysql远程连接
今天在本地连接linux服务端的mysql始终报错61,谷歌后找到原因: linux的mysql默认是不允许远程连接操作的,在stack上面找到方法:修改mysql配置文件/usr/local/mys ...
随机推荐
- linux內核輸出soft lockup
創建的內核線程長期佔用cpu,一直內核認為線程soft lockup,如無法獲取自旋鎖等:因此線程可適度調用schdule(),以進行進程的調度:因為kwatchdog的執行級別低,一直得不到執行 [ ...
- [资料分享]7天搞定Node.js微信公众号开发
- unity 利用ugui 制作技能冷却效果
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...
- webpack 使用教程--实时刷新测试
学习webpack,基本始终是围绕: 1.如何安装webpack 2.如何使用webpack 3.如何使用loader 4.如何使用开发服务器 可能我们会在如何使用开发服务器的时候,遇到诸如调试的相关 ...
- MariaDB 双主复制的配置
环境 Master1/Master2 系统 IP 数据库版本 Master1 CentOS6.7 10.10.3.211 mariadb-10. ...
- 如何让eclipse进行智能提示?
1.打开eclipse工具,点击window菜单,选择preferences选项 2.然后,选择Java->Editor->content assist 3.然后在Auto activat ...
- Visual Studio 2015 Update 2正式版下载地址
转载自:王彬的博客 地址:http://blog.sina.com.cn/s/blog_55f899fb0102wcwg.html Visual Studio Professional 2015(带 ...
- lua的C库
在云风的ejoy2d里是没有dll和so之类的东西的, 所有的C扩展都是类似这样写的: int ejoy2d_shader(lua_State *L) { luaL_Reg l[] = { ...
- db2定界符
在DB2数据库中,在导出DEL文件时,默认的字符分隔符是".字段分隔符是, (逗号).有一个需求是要为Oracle数据库提供数据,因此就想使用"|"作为数据的字段分隔符. ...
- JQ 常见demo
使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: <!DOCTYPE html> <html> <head> <script src= ...