开发者社区> 问答> 正文

如果更改数据库中的用户/密码凭据,如何重置池

对于DBCP,https://issues.apache.org/jira/browse/DBCP-8. 当用Druid替换DBCP时用户密码变更该如何处理呢,DruidDataSource#getConnection已经声明不支持。这种业务场景是如何处理的呢。

原提问者GitHub用户qmz c

展开
收起
山海行 2023-07-05 22:06:35 328 0
5 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在更改数据库中的用户/密码凭据后,需要重置数据库连接池中的用户/密码信息,以便使用新的凭据进行连接。

    以下是一些常见的重置数据库连接池的方法:

    使用连接池管理工具:可以使用连接池管理工具(如DBCP、C3P0、HikariCP等)来管理数据库连接池,并在更改用户/密码凭据后,通过工具提供的方法来重置数据库连接池。具体的方法和操作方式可能因不同的连接池实现而有所不同。

    重启应用程序:在更改用户/密码凭据后,可以尝试重启应用程序,以便重新初始化数据库连接池,并使用新的凭据进行连接。这种方法适用于应用程序运行环境相对简单的情况。

    动态更改池配置:在某些连接池中,可以通过动态更改池配置文件的方式来重置数据库连接池。例如,在Tomcat中,可以通过修改context.xml文件来更改数据库连接池的用户/密码等信息。

    2023-07-29 23:09:28
    赞同 展开评论 打赏
  • 在使用Druid替换DBCP时,如果用户密码发生变更,可以采取以下处理方式:

    1. 动态修改数据源配置:使用Druid的DruidDataSource类,可以通过调用setPassword()方法来动态修改数据源的密码。您可以在密码变更后,通过代码获取DruidDataSource实例,并使用setPassword()方法更新密码。

    2. 重新创建数据源:如果密码变更较频繁或希望避免动态修改数据源配置的复杂性,可以考虑重新创建数据源。在密码变更时,您可以销毁当前的DruidDataSource实例,并基于新的密码参数创建一个新的DruidDataSource实例。

    3. 重启应用程序:如果无法直接修改数据源配置或重新创建数据源,且密码变更后会导致连接失败,那么可能需要重启应用程序以重新加载数据源配置并建立新的数据库连接。

    请注意,在进行密码变更时,务必确保采取适当的安全措施,如加密通信、访问控制和密码管理策略等,以保护敏感信息的安全性。

    此外,对于声明不支持密码变更的情况,建议参考Druid官方文档或与Druid社区进行进一步的咨询和解决方案讨论。根据具体的业务场景和要求,也许还有其他定制化的处理方式可供选择。

    请注意,以上建议仅供参考,具体解决方案应根据您的应用程序和需求进行评估,并遵循相关安全和最佳实践。

    2023-07-07 17:22:21
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    对于这个问题,当使用Druid替换DBCP时,如果用户密码发生变更,需要进行一些额外的处理。

    首先,需要明确一点,DruidDataSource的getConnection方法不支持在运行时更改密码。这是因为Druid的设计原则是在应用程序启动时初始化连接池,并且在运行时不允许更改敏感信息。

    在业务场景中,如果用户密码发生了变更,可以考虑以下两种处理方式:

    1. 重启应用程序:当用户密码发生变更时,可以选择重启应用程序。在重启过程中,Druid连接池将重新初始化,并使用新的密码配置连接。这种方式简单直接,但会导致应用程序的停机时间。

    2. 动态数据源切换:另一种方式是使用动态数据源切换的技术。这种方法可以在运行时动态切换数据源,从而实现密码的更新。您可以使用一些开源的动态数据源切换框架,如DynamicDataSource、Dynamic Routing DataSource等。这些框架允许您在运行时切换数据源,并且可以在切换数据源时更新密码配置。

    无论您选择哪种方式,都需要确保在密码变更后,应用程序能够正确地连接到新的数据源。另外,为了保护敏感信息,建议使用加密算法对密码进行加密存储,并采取安全措施来保护加密密钥。

    请注意,这只是一种一般的处理方式,具体实现可能根据您的业务需求和技术栈而有所不同。建议根据具体情况选择最适合您的解决方案。

    2023-07-07 15:05:50
    赞同 展开评论 打赏
  • 用户名都不同了,就应该使用多个连接池啊

    原回答者GitHub用户wenshao

    2023-07-06 12:58:36
    赞同 展开评论 打赏
  • 在Druid中,如果您更改了数据库的用户/密码凭据,并且需要重置连接池以使用新的凭据,可以采取以下步骤:

    1. 创建一个新的DruidDataSource对象:首先,创建一个新的DruidDataSource实例,用于建立与数据库的连接。在创建新的数据源时,将新的用户名和密码设置到数据源的相应属性中。

    DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("newUsername"); dataSource.setPassword("newPassword"); 2. 关闭旧的连接池:在创建新的数据源之前,确保关闭旧的连接池,以释放所有现有的数据库连接。这可以通过调用旧的数据源对象的close()方法来完成。

    oldDataSource.close(); 3. 使用新的数据源:一旦新的数据源被创建并配置好,您可以使用它来获取新的数据库连接。这可以通过调用新的数据源对象的getConnection()方法来实现。

    Connection connection = dataSource.getConnection(); 请注意,这些步骤假设您已经正确地配置了Druid数据源,并且有权访问更改数据库的用户/密码凭据。另外,请确保在执行这些步骤之前,没有正在使用旧的连接池的活动连接,否则可能会导致连接失效或无法关闭。

    此外,对于Druid与DBCP的替换,您提到的DBCP-8问题跟踪链接似乎与重新加载数据源的问题有关。在Druid中,如果您需要重新加载数据源(例如更改了配置或凭据),可以使用DruidDataSourceWrapper类来实现。

    DruidDataSourceWrapper dataSourceWrapper = new DruidDataSourceWrapper(); dataSourceWrapper.setDataSource(dataSource);

    dataSourceWrapper.restart(); 通过调用`restart启动数据源,以便应用新的配置和凭据。请注意,这个方法是Druid特定的,并且不适用于原始的DBCP连接池。

    2023-07-06 08:44:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载