MySQL在本机无法基于localhost访问的问题解决

原创 2017年07月12日 16:59:13

引言: 在本地访问数据库之时,一般使用localhost, 127.0.0.1来进行数据库访问,但是笔者这几天就碰到了只能通过127.0.0.1来访问,但是无法基于localhost来访问,非常之诡异…..

环境介绍

Centos 7, mariadb 10.2 tomcat 8 , Java War应用

问题表现

在数据库连接中使用了localhost:3306之类的连接信息,但是在启动服务过程中,一直在报连接数据库的错误信息:

java.sql.SQLException: Access denied for user ‘bladestone’@’localhost’ (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:928)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1750)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1290)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2526)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:211)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:136)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1271)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1325)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1215)
[com.alibaba.druid.pool.DruidDataSource]create connection error

但是,切换到127.0.0.1确是可以被正常访问的,问题出在localhost上。

分析过程

ping localhost

这个命令是可以正常访问的, 换句话说localhost是一个正确的域名,可以被正确的解析到。
之后回想起来,之前是使用如下命令来授权访问的:

grant all privileges on zhouzdb.* to ‘zhouz’@’%’ identified by ‘1234’;

后面的‘%’是一个通配符,用以匹配所以的ip地址,但是其是否可以匹配localhost这个特殊域名呢?验证一下即可知道:

 grant all privileges on zhouzdb.* to ‘zhouz’@’locahost’ identified by ‘1234’;

在本地重新访问一下mysql,结果顺利访问成功了。结果证明: %无法匹配localhost这个特殊的域名地址信息,需要额外进行添加设置。

总结

这里的分析过程中,有一个想当然的问题是通配符是否可以匹配localhost的问题,自己在从一开始就认为应该是,但是事实上不是的。由于这个错误的假定认知,结果花费了非常多的时间分析这个问题,这其中的弯路是非常值得深思的。

————————- 罪恶的分割线,终于到底了 —————————————————

在做java web开发时常遇到的问题:mysql只能用localhost或127.0.0.1连接

在做java web开发时常遇到的问题:mysql只能用localhost或127.0.0.1连接 解决:mysql安装完后,默认是root用户,root用户只能在服务器登录,需要分配新用户。 ...

在CentOS 6.4上安装daemontools(守护进程工具)

最近公司的三个邮件服务器都是我在更新和维护,部署服务器的时候需要使用到daemontools,用来保证邮件主程序一直运行,或者说在退出后马上运行,无法使用kill 命令终止,因为daemontools...

在Centos 7下安装MariaDB简明教程

引言: 本文将简要介绍如何在CentOS 7的环境下,安装Mariadb,配置用户和访问权限等类似操作。...

通过非本机访问MySQL报 ERROR 2003 和 ERROR 1130 问题解决方法

环境如下 MySQL安装在192.168.137.100 Ubuntu 12.04 LTS 客户端在 192.168.137.200 win7 客户端希望访问MySQL数据库,会出现如下...
  • ABBuggy
  • ABBuggy
  • 2012年12月08日 13:58
  • 5816

使用本机ip和端口号不能访问tomcat服务问题解决方案

问题背景及描述:同事在开发过程当中,将服务部署到本机tomcat,并且将服务访问端口号修改为8089,发现通过 localhost:8089 和 127.0.0.1:8089 两种方式可以访问服务。但...

MySQL在服务器本机登录不上,不管是localhost还是127.0.0.1都登不上,但是通过远程可以连接上

Can't connect to MySQL server on 'localhost' (10055)  MySQL在服务器本机登录不上,不管是localhost还是127.0.0.1都登不上,而...
  • lh11077
  • lh11077
  • 2016年08月01日 23:21
  • 1719

在别人电脑上运行本机tomcat项目的流程以及问题解决

一般我们想在别人电脑上运行本机tomcat项目,不考虑服务器的话,必须在同一局域网中,而网线连接和无线网络连接之间还是有很多不同的,流程基本都是在本机将项目运行起来,然后找到本机ip,将http://...

ORACLE 11G 安装后只能localhost 访问本机,不能用IP地址被访问

今天装了oracle11g 结果 监听里面配置的是localhost,服务里面 主机名也是 localhost,这就造成其他机器无法访问。所以经过一番折腾,操作步骤如下 1.更改监听和服务主机名lo...
  • bbaojji
  • bbaojji
  • 2015年01月13日 15:27
  • 2761

在ubuntu10.04下搭建tftp服务器的血泪史(完美解决本机测试tftp localhost出现:tansfer:timed out)

 Ubuntu 10.04 下的tftp服务器搭建  第1步:    安装tftp所需的软件。首先需要安装 tftp(-hpa),tftpd(-hpa),前者是客户端,后者是服务程序, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL在本机无法基于localhost访问的问题解决
举报原因:
原因补充:

(最多只允许输入30个字)