Harrison's blog

导航

Tomcat8.0.21登录时忘记用户名和密码

  大概是这学期开学没多久吧,4月份的时候,为了学习javaEE,装了Tomcat。过了这么久早就忘记用户名和密码了,所以无法进入Tomcat的管理界面。百度(其实我也很想用google)了一堆,几乎都是修改用户配置文件,可能是版本的差异,对于我这个版本都没有太大用处。其实只要按照tomcat的提示一步步去做就可以解决,前提是英语基础要好,其实技术文章比文学作品和四级考试好懂多了,语言很直白,从来不拐弯抹角。

  下面是解决这个问题的步骤:

 一、找到Tomcat配置文件的位置,修改tomcat-users.xml

      我的配置文件在D:\Program Files\Apache Software Foundation\Tomcat 8.0\conf。在这个目录下存放了所有有关Tomcat的配置文件,包括 content.xml,server.xml,web.xml,tomcat-users.xml,每个配置文件都有自己的作用,我们需要修改的是跟用户相关的tomcat-users.xml。

  打开tomcat-users.xml配置文件(我省略了部分注释):

 1   <?xml version='1.0' encoding='cp936'?>
 2   <tomcat-users xmlns="http://tomcat.apache.org/xml"
 3                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4                 xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
 5                version="1.0">
 6   <!--
 7    NOTE:  By default, no user is included in the "manager-gui" role required
 8    to operate the "/manager/html" web application.  If you wish to use this app,
 9    you must define such a user - the username and password are arbitrary.
10 -->
11   <!--
12   NOTE:  The sample user and role entries below are wrapped in a comment
13   and thus are ignored when reading this file. Do not forget to remove
14   <!.. ..> that surrounds them.
15 -->
16   <role rolename="tomcat"/>
17   <role rolename="role1"/>
18   <user username="tomcat" password="tomcat" roles="tomcat"/>
19   <user username="both" password="tomcat" roles="tomcat,role1"/>
20   <user username="role1" password="tomcat" roles="role1"/>
21   </tomcat-users>

  配置文件里7-11行的注释说的很清楚:默认情况下没有用户包括在可以操作"/manager/html"页面的"manager-gui"的角色中,如果你想开启这种应用,你可以定义一个这样的用户,用户名和密码随意。于是我添加了几行代码,修改后的配置文件是这样的:

 1 <?xml version='1.0' encoding='cp936'?>
 2 <tomcat-users xmlns="http://tomcat.apache.org/xml"
 3               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4               xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
 5               version="1.0">
 6 <!--
 7   NOTE:  By default, no user is included in the "manager-gui" role required
 8   to operate the "/manager/html" web application.  If you wish to use this app,
 9   you must define such a user - the username and password are arbitrary.
10 -->
11 <!--
12   NOTE:  The sample user and role entries below are wrapped in a comment
13   and thus are ignored when reading this file. Do not forget to remove
14   <!.. ..> that surrounds them.
15 -->
16   <role rolename="tomcat"/>
17   <role rolename="role1"/>
18   <user username="tomcat" password="tomcat" roles="tomcat"/>
19   <user username="both" password="tomcat" roles="tomcat,role1"/>
20   <user username="role1" password="tomcat" roles="role1"/>

21 <role rolename="manager-gui"/> 22 <user username="admin" password="admin" roles="admin-gui"/> 23 </tomcat-users>

  添加了 <role rolename="manager-gui"/> <user username="admin" password="admin" roles="manager-gui"/>  这两行代码后就添加了一个角色manager-gui,并且添加了一个用户,用户名是admin,密码是admin,角色是manager-gui,记得修改完后要Ctrl+S保存一下。

二、重启Tomcat

  命令行怎么重启我还不太清楚,以后转移到linux平台的时候更多的肯定还是用命令行,姑且先用图形化工具吧。不过它好像没提供restart选项,我只好先stop service,再start。重新启动的时候,tomcat会重新读取xml配置文件,这时刚才具有管理员权限的用户就被添加进去了。在浏览器输入192.168.1.106:8080,浏览器会访问默认页面

  在这个页面的右辺有3个按钮,我们刚才的配置只会对第1个和第2个按钮起作用,点击这两个button,输入用户名和密码就可以访问/manage/html 和/manage/status页面了

三、遇到的新问题

  然而如果点击第1个或者第3个按钮,就会出现下面的情况:

  在这个报错页面里已经给出了详细的解决方案,如果英文水平还可以并且愿意静下心来看一看,就知道怎么解决这个问题了。刚才我们添加了一个manager-gui的角色,并且添加了一个具有这种角色相应权限的用户。这次我们只需要再添加一个admin-gui角色,并添加这样一个属于这种角色的用户就可以了。我在原来的配置文件里又添加了39,40两行代码:

修改后保存,这次,重启Tomcat,就可以访问原来403禁止访问的/host-manager/html页面了

 四、最终的解决之道

   然而,顾此失彼, 虽然/host-manager/html页面可以访问了,但是原来的两个页面却被403forbidden了,我思考了一会儿,觉得问题还是出在配置文件上。在刚才的方法中,我添加了两个名字相同的用户admin(暂且不论他们的密码是否相同),分别赋予他们不同的角色,但是tomcat在处理这个信息的时候会覆盖这个前一条配置信息,tomcat会以为你想修改这个用户的角色,把他从manager-gui改为admin-gui。如果我当时在创建角色为admin-gui的用户是名字不和manager-gui角色的用户名相同,比如取名admin2,这样在登录/host-manager/html页面时用admin2的用户名登录,并输入相应的密码就不会403forbidden了。但是要记两个用户名和密码很麻烦,怎么办呢?

  从配置文件前面的部分      <user username="tomcat" password="tomcat" roles="tomcat"/><user username="both" password="tomcat" roles="tomcat,role1"/>可以看出,这样就给一个用户同时赋予两种角色了。于是我将配置文件修改成了这样:<role rolename="admin-gui"/>   <user username="admin" password="admin" roles="admin-gui,manager-gui"/> 保存后重启tomcat,这次终于奏效了。

五、感悟

  遇到问题的时候,文档或者配置文件本身就是最好的资料,要善于模仿文档的书写方式试着去猜测并理解每个参数的含义,同时一定要具备一定的英语阅读理解能力。

 

posted on 2015-08-29 22:50  HarrisonZhou  阅读(7616)  评论(0编辑  收藏  举报