使用MyBatis能否动态修改数据库连接的密码-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

使用MyBatis能否动态修改数据库连接的密码

2016-03-11 15:37:13 6929 2

在使用Mybatis和Spring进行数据库操作时,我们通常将数据库连接的信息(url、用户名、密码等)配置到jdbc.properties里面。通过Spring加载这些信息,建立数据源。Mybatis的mapper使用数据源提供的数据库连接来访问数据库。
这种情况下,数据库的url、用户名、密码是提前配置好的,不能修改的,并且在服务器启动时就读取(通过Spring)了。
那么,有没有可能在运行期间,通过Java代码动态的修改用来进行数据库连接的用户名和密码信息。
比如,我在jdbc.properties里面配置的是:admin/123,但是运行期间外界给我传来一个新的数据库用户和密码:admin2/456,那么我能不能动态地将后续的数据库连接的用户名密码改成admin2/456?

取消 提交回答
全部回答(2)
  • 人语驿边桥
    2019-07-17 18:59:24

    不建议通过动态修改数据库的连接配置。
    首先,动态修改数据库配置必将造成正在使用的系统无法正常运行,这会对公司的业务以及正在使用系统的用户造成很大的影响,会给公司造成损失。
    其次,动态修改数据库配置如果操作失误,同样的对业务和用户都有影响。
    建议:尽量不要提供对系统会造成严重影响的接口。如果真的需要动态修改数据库配置,尽量保证该数据库所能影响的接口范围最小。

    以下是动态修改配置文件的例子:

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    public class UpdateProperties {
        public static void main(String[] args) throws IOException {
    
            Properties prop = new Properties();
    
            //获取文件输入流
            FileInputStream inputFile = new FileInputStream("src/jdbc.properties");
            //读取配置文件
            prop.load(inputFile);
            inputFile.close();
            //打印修改前配置信息
            System.out.println("" + prop);
    
            //修改配置文件属性(动态修改,可对该方法进行传参)
            prop.setProperty("user", "admin2");
            prop.setProperty("password", "456");
    
            //获取文件输入流
            FileOutputStream outputFile = new FileOutputStream("src/jdbc.properties");
            //将修改后的信息保存到配置文件中
            prop.store(outputFile, "update jdbc");
            outputFile.close();
            // 打印修改后配置信息
            System.out.println("" + prop);
        }
    }
    
    0 0
  • 蛮大人123
    2019-07-17 18:59:24

    首先要确定你要使用什么连接池,Druid 的话是Springmvc有这样的配置的

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      init-method="init" destroy-method="close">
       <property name="driverClassName">
        <value>${jdbc.mysql.driver}</value>
       </property>
       <property name="url">
        <value>${jdbc.mysql.url}</value>
       </property>
       <property name="username">
        <value>${jdbc.mysql.username}</value>
       </property>
       <property name="password">
        <value>${jdbc.mysql.password}</value>
       </property>
       <!-- 连接池最大使用连接数 -->
       <property name="maxActive">
        <value>${maxActive}</value>
       </property>
       <!-- 初始化连接大小 -->
       <property name="initialSize">
        <value>${initialSize}</value>

    com.alibaba.druid.pool.DruidDataSource 这个类extendDruidAbstractDateSource 这个类里面有修改账号密码的方法

     public String getPassword() {
            return this.password;
        }
    
        public void setPassword(String password) {
            if(!StringUtils.equals(this.password, password)) {
                if(this.inited) {
                    LOG.info("password changed");
                }
    
                this.password = password;
            }
        }

    所以说是可以拿到dataSource 修改里面的用户名和密码的

    0 0
添加回答
相关问答

1

回答

mysql数据库好久没用,突然连接不上。就想着重新设置一下权限,结果密码报错,但是mysql密码没错

2020-05-25 13:38:10 654浏览量 回答数 1

1

回答

使用代码数据库连接不上

2018-06-14 13:54:36 520浏览量 回答数 1

1

回答

修改数据库密码

2018-06-13 17:03:19 488浏览量 回答数 1

1

回答

我要修改数据库密码

2018-04-27 15:05:36 490浏览量 回答数 1

1

回答

修改数据库密码

2018-04-23 13:41:21 537浏览量 回答数 1

1

回答

数据库密码能修改么

2017-12-17 09:36:37 616浏览量 回答数 1

1

回答

能否动态连接钉钉取数据

2016-09-12 09:17:49 2183浏览量 回答数 1

1

回答

在哪修改网站中的数据库连接串?

2016-06-07 21:33:33 2371浏览量 回答数 1

3

回答

轻云服务器更改数据库密码,要求修改数据库连接串?怎么改?

2015-06-15 15:31:52 6372浏览量 回答数 3

7

回答

如何修改数据库的用户密码?

2013-07-07 22:55:14 6391浏览量 回答数 7
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载