努力, 努力, 再努力
全部博文(220)
分类: 系统运维
2015-08-16 21:20:05
TOC \o "1-3" \h \z \u JAVA应用程序(Tomcat和Jboss)与mysql数据库连接异常(localhost与127.0.0.1) PAGEREF _Toc427523077 \h 1
一. 环境描述... PAGEREF _Toc427523078 \h 1
二. 故障现象描述... PAGEREF _Toc427523079 \h 1
(1) JBOSS 通过jdbc.properties 与数据库连接... PAGEREF _Toc427523080 \h 1
(2) 当JBOSS执行启动命令时,报错如下: PAGEREF _Toc427523081 \h 2
(3) mysql数据库的user数据表内容如下: PAGEREF _Toc427523082 \h 2
三. 问题分析... PAGEREF _Toc427523083 \h 2
(1) JBOSS能过配置文件jdbc.properties,使用localhost, root,123456 这3个参数连接mysql PAGEREF _Toc427523084 \h 2
(2)mysql中user表里包括了localhost, root, root 这个账户... PAGEREF _Toc427523085 \h 3
四. 解决方案... PAGEREF _Toc427523086 \h 3
(1) 系统版本: CentOS release 6.5 (Final)
(2) 内核版本: 2.6.32-431.el6.x86_64
(4) jdk版本: java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
(5) jboss版本: jboss-as-7.1.1.Final
(6)数据库版本: 5.1.71
jdbc.properties的相关内容:
jdbc.url=jdbc:mysql://localhost/abf?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
简单来说,就是jboss通过连接本机(localhost)上的mysql来访问mysql数据库
用户名为root, 密码也是root
mysql> select host,user,password from mysql.user;
+------------------+------+--------------------------------------------------------------------------------+
| host | user | password |
+------------------+------+--------------------------------------------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| master.mysql.com | root | |
| 127.0.0.1 | root | |
| localhost | | |
| master.mysql.com | | |
+------------------+------+----------------------------------------------------------------------------------+
注意: 这里localhost , root, 的密码是123456
按理说, JBOSS访问mysql数据库应该没有问题, 但是有3个地方要注意
a. 通常情况下,无论windows还是linux系统, 名词localhost 等价于 127.0.0.1 , 但在本文所描述的场景中他们并不等价
b. 在mysql的概念里 root@localhost 账号与root@127.0.0.1 是两个完全不同的账号
c. 尽管在jdbc.properties中设置使用localhost来访问本机mysql, 但JBOSS并不使用root@localhost来访问mysql数据库,而是用root@127.0.0.1来访问本机mysql
mysql -uroot -proot
mysql> grant all on *.* to 'root'@'127.0.0.1' identified by '123456';
mysql> flush privileges;
注1: 这里只是个示例, 应该为root@127.0.0.1 分配何种权限,根据实际需要操作
注2: 如果想清除账号: root'@'127.0.0.1的密码, 只需要执行下面的步骤:
mysql> grant all on *.* to 'root'@'127.0.0.1' identified by '';
mysql> flush privileges;
mysql> select host,user,password from mysql.user;
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| master.mysql.com | root | |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | | |
| master.mysql.com | | |
+------------------+------+-------------------------------------------+
已经成功为127.0.0.1 设置了密码: 123456
注: 本文描述JBOSS与 mysql连接异常, 同样的问题在Tomcat环境中也在在,处理方式相同