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的问题,自己在从一开始就认为应该是,但是事实上不是的。由于这个错误的假定认知,结果花费了非常多的时间分析这个问题,这其中的弯路是非常值得深思的。

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

MySQL主机127.0.0.1与localhost区别总结

可能有很多朋友都会碰到一个问题不知道127.0.0.1与localhost有什么区别,但是有的时间会发现使用localhost连接不了,但是改成127.0.0.1即可了连接了,那么他们会有什么区别呢,...
  • analogous_love
  • analogous_love
  • 2016年11月04日 11:19
  • 2482

MySQL 'localhost' (10061)解决方法

MySQL 'localhost' (10061)解决方法 首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。   昨天,重起服务器后出现MySQL 'localho...
  • u010046887
  • u010046887
  • 2014年02月09日 22:49
  • 5110

使用 localhost 无法连接 MySQL 数据库的解决方案

使用 localhost 无法连接 MySQL 数据库的解决方案   Tip:这几天在研究LAMP/WAMP及discuz的时候却发觉在装mysql及php的时候,用php连接mysql的时候死活...
  • adi_1987
  • adi_1987
  • 2016年12月05日 13:49
  • 6048

Windows下MySQL5.6以上版本不能用localhost和127.0.0.1连接问题

问题描述:使用的MySQL5.6安装包默认的安装方式安装的mysql,然后使用Navicat Premium 工具 和 localhost/127.0.0.1链接mysql数据库,结果都弹出提示:Ca...
  • xlxxcc
  • xlxxcc
  • 2016年04月13日 23:40
  • 4498

MySQL 可以用localhost 连接,但不能用IP连接的问题,局域网192.168.*.* 无法连接mysql

Mysql 默认是没有开启这个权限的(只允许使用 host:localhost,或者 host:127.0.0.1),如果想用 host:192.168.1.* ,来访问mysql ,需要手动开启这...
  • yaoyutian
  • yaoyutian
  • 2017年11月22日 18:29
  • 200

mysql能用localhost连接不能使用127.0.0.1连接的问题之一

最近朋友的一个服务器出现了一个奇怪的问题,弄了两个星期没有解决,在哥坚持不懈的努力下,终于解决了问题。发出来给需要的朋友。问题:php程序连接mysql只能使用localhost,不能使用127.0....
  • youweiqingnian_008
  • youweiqingnian_008
  • 2016年08月18日 20:52
  • 1069

mysql能用localhost连接不能使用127.0.0.1连接的解决办法

问题:php程序连接mysql只能使用localhost,不能使用127.0.0.1 系统环境:centos5.6 64位系统  mysql 版本5.6.29 php版本5.6.22 以下...
  • u011192409
  • u011192409
  • 2016年06月10日 11:14
  • 5936

mysql只能localhost连接,其他ip连接失败的解决办法

前言:           这个问题有很多解决办法,使用了最后一种方法解决了,但是其他的方法也是有参考的价值 1. 关闭防火墙 sudo ufw disable 2.赋权限 使用localhost登...
  • current_person
  • current_person
  • 2016年09月27日 16:56
  • 1403

MySQL创建用户后本地无法登录的原因

出此是用mysql,因为root权限过高,所以新建一用户appadmin,权限仅为要用到的数据库。创建语句如下:grant select,insert,update,delete on test.* ...
  • xuguokun1986
  • xuguokun1986
  • 2016年06月14日 20:16
  • 2265

mysql远程可登录,本地无法登陆问题

好吧,遇到了mysql远程可登录,本地无法登陆的问题。原因其实很简单,mysql中一个用户名为空的访问本地权限的字段,所有登陆时优先匹配了这一条,就无法登陆了。 #mysql -uroot -p ...
  • tshangshi
  • tshangshi
  • 2016年08月18日 20:02
  • 493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL在本机无法基于localhost访问的问题解决
举报原因:
原因补充:

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