假如说你的weblogic的账号或者密码错误,会导致你的AdminServer无法启动,控制台就无法登陆,这个时候我们就需要创建新的账号和密码来管理我们的控制台了~
1. 备份
%DOMAIN_HOME%/security下的DefaultAuthenticatorInit.ldift文件,和%DOMAIN_HOME%servers/AdminServer/security目录下的boot.properties文件,这样如果下列步骤操作失败还能还原回去。
[zhuying@sor-sys security]$ pwd
/home/zhuying/opt/bea/user_projects/domains/test_domain/security
[zhuying@sor-sys security]$ cp DefaultAuthenticatorInit.ldift DefaultAuthenticatorInit.ldift.bak
2. 运行 java -cp $BEA_HOME/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount <新用户名> <新密码>. (注意最后有个点号的,点号之前有空格)
[zhuying@sor-sys bin]$ pwd
/home/zhuying/opt/bea/jdk160_05/bin
[zhuying@sor-sys bin]$ ./java /home/zhuying/opt/bea/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount Adminzy ******* .
3. 执行完后在当前目录会生成一个新的DefaultAuthenticatorInit.ldift文件,然后替换原来的%DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift文件。
[zhuying@sor-sys bin]$ pwd
/home/zhuying/opt/bea/jdk160_05/bin
[zhuying@sor-sys bin]$ mv DefaultAuthenticatorInit.ldift /home/zhuying/opt/bea/user_projects/domains/test_domain/security/
4. 从%DOMAIN_HOME%/servers/AdminServer/data/ldap/子目录中删除初始化状态文件DefaultAuthenticatormyrealmInit.initialized,并更新boot.properties。
[zhuying@sor-sys ldap]$ rm DefaultAuthenticatormyrealmInit.initialized
[zhuying@sor-sys ldap]$ pwd
/home/zhuying/opt/bea/user_projects/domains/test_domain/servers/Admin-test/data/ldap
文件boot.properties的格式:
username=用户名
password=密码
5. 运行startWebLogic.sh,启动过程中会让你输入用户名和密码,输入新建立的那个用户名和密码。
6. 用新的用户名密码登录管理控制台,在“安全领域”里点击“myrealm”,在用户和组里,找到之前的那个用户,修改密码,保存,那么以后可以继续使用原来的用户名和密码登录
如果你想要使用原来的账号,那么就需要将原来的DefaultAuthenticatorInit.ldift文件还原,并将初始化状态文件删除~
[zhuying@sor-sys bin]$ pwd
[zhuying@sor-sys bin]$/home/zhuying/opt/bea/user_projects/domains/test_domain/security/
[zhuying@sor-sys bin]$ mv DefaultAuthenticatorInit.ldift.bakDefaultAuthenticatorInit.ldift
删除初始化状态文件:
[zhuying@sor-sys bin]$ cd /home/zhuying/opt/bea/user_projects/domains/test_domain/servers/Admin-test/data/ldap
[zhuying@sor-sys ldap]$ rm DefaultAuthenticatormyrealmInit.initialized
7. 重启服务器,现在不用输入用户名密码了,成功启动后,weblogic会加密用户密码的
注意:
weblogic本身也提供了一个简单的命令,但是这个命令是正向的而不是反向的,即由密码到加密字符串而不是解密。你需要用控制台登录密码,然后比较密码加密后的字符串是不是boot.properties里面的值。该命令用法如下:
首先进入域,执行setDomainEnv.sh,得到环境变量设置后,进入域目录,运行:
java weblogic.security.Encrypt ******** 【********代表的是你控制台的密码】
理论上应该显示你加密后的字符串,但是系统提示以下报错~
Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/security/Encrypt
Caused by: java.lang.ClassNotFoundException: weblogic.security.Encrypt
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
下面我们换另一种方法,不用执行setDomainEnv.sh,直接运行:
[zhuying@sor-sys bin]$ pwd
/home/zhuying/opt/bea/jdk160_05/bin
[zhuying@sor-sys bin]$ ./java -cp /home/zhuying/opt/bea/wlserver_10.3/server/lib/weblogic.jar -Dweblogic.RootDirectory=/home/zhuying/opt/bea/user_projects/domains/zy_domain/ weblogic.security.Encrypt 12345678
{3DES}c+Sk1+Y8rQz+AWUnbzQMvw==