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配置文件(我省略了部分注释):
<?xml version='1.0' encoding='cp936'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
-->
<!--
NOTE: The sample user and role entries below are wrapped in a comment
and thus are ignored when reading this file. Do not forget to remove
<!.. ..> that surrounds them.
-->
<role rolename="tomcat"/>
17 <role rolename="role1"/>
18 <user username="tomcat" password="tomcat" roles="tomcat"/>
19 <user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
21 </tomcat-users>
配置文件里7-11行的注释说的很清楚:默认情况下没有用户包括在可以操作"/manager/html"页面的"manager-gui"的角色中,如果你想开启这种应用,你可以定义一个这样的用户,用户名和密码随意。于是我添加了几行代码,修改后的配置文件是这样的:
<?xml version='1.0' encoding='cp936'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
-->
<!--
NOTE: The sample user and role entries below are wrapped in a comment
and thus are ignored when reading this file. Do not forget to remove
<!.. ..> that surrounds them.
-->
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<role rolename="manager-gui"/>
<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,这次终于奏效了。
五、感悟
遇到问题的时候,文档或者配置文件本身就是最好的资料,要善于模仿文档的书写方式试着去猜测并理解每个参数的含义,同时一定要具备一定的英语阅读理解能力。
Tomcat8.0.21登录时忘记用户名和密码的更多相关文章
- ASP.NET中登录时记住用户名和密码(附源码下载)--ASP.NET
必需了解的:实例需要做的是Cookie对象的创建和对Cookie对象数据的读取,通过Response对象的Cookies属性创建Cookie,通过Request对象的Cookies可以读取Cookie ...
- servlet方式通过Cookie记住登录时的用户名和密码
1.建立web工程 2.创建存放servlet的包 3右键包,新建servlet,路径将前面的servlet去掉,只需要doPost和doGet方法 编写servlet CookieServlet.j ...
- odoo注销后在登录时的用户名和密码
初识odoo时会遇到注销后无法登陆的情况,一般原因是没有留意管理员邮件地址和对应的密码所致.初始情况下默认的邮件地址为admin,密码为数据库创建时提供的密码.
- JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
JavaBean组件 JavaBean组件实际是一种java类.通过封装属性和方法成为具有某种功能或者处理某个业务的对象. 特点:1.实现代码的重复利用.2.容易编写和维护.3.jsp页面调用方便. ...
- Oracle安装后忘记用户名或密码+创建新登陆用户
新安装的Oracle11g,不料在使用的时候没记住安装时的用户名和密码. 不用担心,打开sqlplus. 按如下步骤,新建一个登陆用户: 第一步:以sys登陆 sys/密码 as sysdba 此 ...
- Oracle里 用sql*plus 登陆时,用户名和密码是多少啊?
Oracle里sql*plus的用户名即system用户,密码是自己设置的密码. 如果密码忘记,可通过如下方法重置. 1.win键+R键,输入cmd,打开命令提示符. 2.输入sqlplus /nol ...
- CentOS忘记用户名或者密码解决办法
方法一:如果用户名和密码都忘记了,可以用以下这个方法找回:(和第二种大步骤差不多,需注意3,4步) 1. 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键 2. 再次用上下键 ...
- weblogic10.3.6忘记用户名或者密码的解决方法
weblogic安装后,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 版本:WebLogic Server 10.3 说明:%DOMAIN_HOME%:指WebLogic Serv ...
- oracle数据库忘记用户名和密码莫着急
刚安装完Oracle 11g后,登录的时候没有记住用户名和密码,解决方法:新建一个用户 第一步:以系统身份登录 cmd--->sqlplus 提示输入用户名,然后输入sqlplus/as sys ...
随机推荐
- tomcat简单文服
1.修改tomcat配置文件 web.xml 将listings的value值改为true. DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用. 2 ...
- python3批量删除豆瓣分组下的好友
python3批量删除豆瓣分组下的好友 """ python3批量删除豆瓣分组下的好友 2016年6月7日 03:43:42 codegay 我两年前一时冲动在豆瓣关注了 ...
- JS URL参数传递 谷歌乱码解决
//第一个页面 var name=encodeURIComponent("参数"); var url="test1.html?name="+name; //第二 ...
- Shell 环境变量 & 参数变量
环境变量 $HOME 当前用户的家目录 $PATH 以冒号分隔的用来搜索命令的目录列表 $PS1 命令提示符,通常是$字符,但在bash中,可以使用一些更复杂的值.例如,字符串[\u@\h \w]$就 ...
- Codeforces Round #164 (Div. 2)
A. Games 模拟. B. Buttons 简单计数. C. Beautiful Sets of Points 显然每行每列只能有一个点,那么最大点数为\(1+min(n, m)\). 在不考虑\ ...
- ups机制下停电提前关闭oracle数据库
思路:在一个受ups保护的机器A1上写脚本,几分钟(如半分钟)ping不在ups保护的机器B,如果几次(如5次)ping不同,这时我们认为将要停电,此时脚本执行正常关闭受ups保护的机器上数据库的命令 ...
- Sprint第一个冲刺(第九天)
一.Sprint介绍 建立云端数据库,把注册的内容保存到云端,不易丢失. 实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...
- 微信接口access_token
//调用聚合网笑话接口 $url = 'http://japi.juhe.cn/joke/img/text.from?page=&pagesize=2&key=f0d06a1fe45b ...
- 利用pt-deadlock-logger监控死锁
Percona提供的percona-toolkit提供很多实用功能,这里着重介绍如何监控死锁. pt-deadlock-logger基本用法 Usage: pt-deadlock-logger [OP ...