现有的一套apollo应用因长时间未移交,Apollo Portal的管理员帐号的密码需要重置。以下是如何通过MySQL数据库重置Apollo Portal的管理员密码的解决方案,并解决因权限记录缺失导致的登录问题。
一、先决条件
在我们开始之前,请确保您拥有如下内容:
1.在进行任何数据库操作之前,请确保备份相关数据,以防万一操作失误导致数据丢失。
2.如果Apollo Portal使用了外部的身份验证服务,则可能需要在相应的服务中更新密码或权限。
3.确保MySQL服务器的安全,避免未授权访问。
二、解决方案
1.登录MySQL数据库
首先,你需要使用具有足够权限的MySQL用户(如root用户)登录到MySQL服务器。
[root@yunweixia.com ~]# mysql -uroot -p
2.选择Apollo Portal数据库
查看所有数据库,并找到Apollo Portal使用的数据库(通常是ApolloPortalDB)。
MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ApolloConfigDB | | ApolloPortalDB | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec) MySQL [(none)]> use ApolloPortalDB; Database changed
3.查看并修改用户密码
(1)显示所有表
MySQL [ApolloPortalDB]> show tables; +--------------------------+ | Tables_in_ApolloPortalDB | +--------------------------+ | App | | AppNamespace | | Authorities | | Consumer | | ConsumerAudit | | ConsumerRole | | ConsumerToken | | Favorite | | Permission | | Role | | RolePermission | | ServerConfig | | UserRole | | Users | | Users_bak_20240319 | +--------------------------+ 15 rows in set (0.00 sec)
(2)查看Users表内容
确认管理员账号(如apollo)的详细信息,特别是密码字段。
MySQL [ApolloPortalDB]> select * from Users; +----+----------+--------------------------------------------------------------+-----------------------------------+---------+ | Id | Username | Password | Email | Enabled | +----+----------+--------------------------------------------------------------+-----------------------------------+---------+ | 1 | apollo | $2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE942wsz2.WAOuiiwXS | apollo@acme.com | 1 | +----+----------+--------------------------------------------------------------+-----------------------------------+---------+ 1 rows in set (0.00 sec)
(2)修改apollo密码
我们需要从GitHub的`https://github.com/apolloconfig/apollo/blob/master/scripts/sql/src/apolloportaldb.sql`文件获取数据库初始化的用户名和密码。如下:
INSERT INTO `Users` (`Username`, `Password`, `UserDisplayName`, `Email`, `Enabled`) VALUES ('apollo', '$2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE94gtz2.WAOuiiwXS', 'apollo', 'apollo@acme.com', 1); INSERT INTO `Authorities` (`Username`, `Authority`) VALUES ('apollo', 'ROLE_user');
通过以下命令重置apollo用户的秘钥,重置完毕的帐号密码为:apollo/admin:
MySQL [ApolloPortalDB]> UPDATE Users SET password = '$2a$10$7r20uS.BQ9uBpf3Baj3uQOZvMVvB1RN3PYoKE94gtz2.WAOuiiwXS' WHERE username = 'apollo';
4.检查和修复权限问题
如果修改密码后仍然无法登录,可能是因为权限记录缺失。检查Authorities表,确认管理员账号的权限记录是否存在。
(1)查看Authorities表
MySQL [ApolloPortalDB]> SELECT * FROM Authorities; +----+----------+-----------+ | Id | Username | Authority | +----+----------+-----------+ | 13 | test | ROLE_user | +----+----------+-----------+ 1 rows in set (0.00 sec)
(2)添加缺失的权限记录
如果缺少如(‘apollo’, ‘ROLE_user’)的记录,你需要手动添加它。
MySQL [ApolloPortalDB]> INSERT INTO Authorities (Username, Authority) VALUES ('apollo', 'ROLE_user');
注意:如果Authorities表中有其他与角色和权限相关的字段(如自增ID),确保在插入时包含这些字段。
三、总结
完成上述步骤后,尝试使用新的密码登录Apollo Portal。如果一切正常,你应该能够成功登录。
原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/solution-for-apollo-portal-admin-password-reset.html