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,这次终于奏效了。

五、感悟

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

 

转载于:https://www.cnblogs.com/suddoo/p/4769867.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二元隐函数求二阶偏导_在线计算专题(03):具体、抽象函数的导数、微分与方向导数的计算...

导数与微分是微积分内容的基础&#xff0c;就计算来说一元函数与多元函数的导数的计算思想一致. 不管是一元函数还是多元函数&#xff0c;导数、偏导数的计算都是将函数视为求导变量的一元函数求导数。微分在描述形式略有区别&#xff0c;但是其计算方法还是一样&#xff0c;只…

android更换工具链

欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e73 android编译系统是跟随android源码一起发布的&#xff0c;使用了gcc编译器&#xff0c;也就是所谓的交叉编译环境。android-4.2里用的编译器是gcc4.6&#xff0c;本篇升级gcc4.6到gcc4.6&#xff0c;修…

频域/s域/z域三大变换的性质对比

本文主要介绍三大变换&#xff08;傅里叶变换、拉普拉斯变换及Z变换&#xff09;的性质对比及其常用信号变换。

Java系列(1) JavaEE架构

JavaEE是开发分布式应用的工业标准&#xff0c;Weblogic,BES,Tomcat等是比较常见的JavaEE服务器&#xff0c;严格来说Tomcat没有实现全部的JavaEE规范&#xff0c;只能算是Servlet容器。我们从一幅Spec文档上的架构图,粗略了解JavaEE的基本结构。该结构图表达了JavaEE各元素的逻…

协整检验r语言代码_R语言时间序列分析实例

#加载数据xread.table(file.choose())#生成时间序列对象xtimeseries#画时间序列图plot.ts(xtimeseries)#增加线性拟合曲线abline(lm(xtimeseries~time(xtimeseries)))1、分解时间序列分解一个时间序列意味着把它拆分成构成元件&#xff0c;一般序列包含一个趋势部分、一个不规则…

pat1043. Is It a Binary Search Tree (25)

1043. Is It a Binary Search Tree (25) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains o…

微软待办应用更新

微软做了一些更改和优化来改进微软待办。 为了在所有设备上获得最佳体验&#xff0c;需确保移动和桌面微软待办2021 年 12 月 31日之前的版本为 2.49 或更高版本&#xff0c;否则微软待办不再支持跨设备同步&#xff0c;但仍然能脱机使用。 桌面版的微软待办应用下载地址为&…

出租WiFi到底靠不靠谱?

创业是一种心态&#xff0c;也是不断的探索&#xff0c;他融入我们的生活&#xff0c;从日常中积累&#xff0c;从小微处启航。 一、背景交代 最近在换工作&#xff0c;本周搬到新租的单身公寓&#xff0c;空间不大&#xff0c;倒是干净整洁。委托租房中介帮忙开通宽带&#xf…

AD20学习笔记1---元件库的创建

前言&#xff1a; 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设计视频教程》&#xff0c;视频地址&#xff1a;Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设…

nodejs环境搭建与express安装配置

一、NPM 1、下载nodeJS 下载地址&#xff1a;https://nodejs.org/en/download/ 因为我的系统是Linux 的&#xff0c;所以下载已经编译好的Linux&#xff0c;nodejs tar包 3、下载完成过后放到/usr/local/下面 4、解压&#xff1a;因为这个包不是gz的包所以解压 正确&#xff1a…

在vue中实现picker样式_基于Vue实现timepicker

主要用到的还是Vue的基本知识而已&#xff0c;不过要想到的细节很多。先放效果&#xff0c;点击上框&#xff0c;显示timepicker。而且可以根据点击的是时还是分来改变圆盘的数字。这里我用了两个组件&#xff0c;和&#xff0c;这里的时和分的数值我挂在了根实例中&#xff0c…

玩玩

金字塔一样输出字母&#xff0c;如 输入 d a a b a a b c b a a b c d c b a 代码实现 #include<stdio.h> int main(void) { char z; int j,t,k; scanf("%c",&z); t0; if(z>a&&z<z) { for(int i0;i<z-a;i) { for(kz-a-t;k…

总结界面框架_UI_Adapter

本人定期更新经典案例及解决方案如有疑问请联系我QQ1822282728 -- 277627117 下面是常用到的ui Demo安卓三级筛选菜单listview&#xff08;非常经典&#xff09; http://download.csdn.net/detail/zillvip/9138975android地图应用&#xff08;路径规划&#xff0c;地理编码&…

AD20学习笔记2---原理图绘制及编译检查

前言&#xff1a; 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设计视频教程》&#xff0c;视频地址&#xff1a;Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设…

git如何设置master分支的权限_Git 从master 分支拉新分支开发

一、 切换到被copy的分支(master)&#xff0c;并且从远端拉取最新版本$git checkout master$git pull二、从当前分支拉copy开发分支$git checkout -b devSwitched to a new branch dev三、 把新建的分支push到远端$git push origin dev四、拉取远端分支$git pullThere is no tr…

Yii框架 phpexcel 导出

一、说明 之前使用的是PHPExcelXML包实现的数据导出&#xff0c;由于导出的文件扩展名为“.xls” 在office2007上带不开&#xff0c;报如下图错误&#xff08;用 WPS都能打开&#xff09; 因此&#xff0c;此次采用了 PHPExcel包 不仅支持生成Excel&#xff08;.xls&#xff09…

慎用stl中的erase的返回值

在windows下的VC编译或者Mac OX的XCode下编译也许不会出问题。但是在linux下可能就会挂掉。 比如我上一篇里的poj4093出现了编译错误 2007120.8890/Main.cc: In function ‘int main()’: 2007120.8890/Main.cc:50:44: error: no match for ‘operator’ in ‘itr1 a.std::set…

AD20学习笔记3---PCB封装库的创建方法及现有封装调用

前言&#xff1a; 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设计视频教程》&#xff0c;视频地址&#xff1a;Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设…

php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象

Posted by 撒得一地 on 2015年9月29日 in PHP入门教程国外稳定加速器推荐vypr |NordPHP中复合数据类型包括两种&#xff0c;即数组和对象。array(数组)&#xff1a;一组数据的集合。object(对象)&#xff1a;对象是类型的实例&#xff0c;使用new命令来创建。数组(array)数组是…

Python守护进程和脚本单例运行

2019独角兽企业重金招聘Python工程师标准>>> 一、简介 守护进程最重要的特性是后台运行&#xff1b;它必须与其运行前的环境隔离开来&#xff0c;这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等&#xff1b;它可以在系统启动…