如何处理 R 连接字符串中的数据库密码?

2024-01-07

虽然我不知道 SO 法定人数是多少,但问题本身很简单: 当您从 R 连接到数据库时,你们如何处理数据库连接字符串中的密码?

教程经常展示这样的例子。

con <- dbConnect(MySQL(), user="root", password="test", 
             dbname="research_db", host="localhost",
             client.flag=CLIENT_MULTI_STATEMENTS)

如果数据库确实是您的实验本地主机,这可能有点现实。但是,如果您在服务器上与多个用户一起使用它,您可能不希望像这样公开数据库凭据。特别是当将 RStudio Server 与 SQL 数据库结合使用时,您可能想要执行一些加密操作。你的经验是什么?


下面是一段示例代码,它使用 tcltk 包提示输入密码,同时隐藏实际值:

library(tcltk)
tt <- tktoplevel()
pass <- tclVar()
tkpack(tklabel(tt,text='Password:'))
tkpack(tkentry(tt,textvariable=pass,show='*'))
tkpack(tkbutton(tt,text="Done",command=function()tkdestroy(tt)))
tkwait.window(tt)
tclvalue(pass)

在这种情况下,它只是在末尾打印出未隐藏的密码,但您可以将其包装在一个函数中以返回该值,然后将其用作密码参数的值。或者您可以将其和 connect 调用(使用 tclvalue 行作为密码)放在对local这样包含密码的变量一旦使用就会消失。

Edit

对于 RStudio 和 RStudio 服务器,有一个函数.rs.askForPassword。像这样使用它:

psswd <- .rs.askForPassword("Database Password:")
con <- dbConnect(MySQL(), user="root", password=psswd, 
             dbname="research_db", host="localhost",
             client.flag=CLIENT_MULTI_STATEMENTS)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 R 连接字符串中的数据库密码? 的相关文章

  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第
  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht
  • 如何选择前一行值? [复制]

    这个问题在这里已经有答案了 如何从 SELECT 语句的上一个结果行获取值 例如 如果我们有一个名为 cardevent 的表 并且有行 ID int Value Money 并且其中有一些行 ID Value 1 70 1 90 2 10
  • N 前缀和参数

    我有一些存储过程 CREATE PROC MyProc FullName NVARCHAR 200 NULL AS 当我将此过程称为exec MyProc Some english text 效果很好 但如果称其为exec MyProc 那
  • 如何计算满足条件的行数

    假设我有以下数据框 Data1 X1 X2 1 15 1 2 3 1 3 7 0 4 11 1 5 1 0 6 9 0 7 18 0 8 6 1 9 3 1 我想知道如何找到观察的总数X1大于 9 并且X2等于1 我想我需要使用sum 但我
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 我可以从列 CHECK 约束调用用户定义的函数吗?

    我有一个返回 1 或 0 的用户定义的 SQL 函数 我想从列 CHECK 约束中调用它 是的 SQL Anywhere 没有布尔数据类型 因此您必须编写一个生成 TRUE FALSE 或 UNKNOWN 的谓词 换句话说 如果函数返回 1
  • 如何为 nls 函数找到良好的起始值?

    我不明白为什么我不能对这些数据使用 nls 函数 我尝试过很多不同的起始值 但总是出现相同的错误 这是我一直在做的事情 expFct2 function x a b c a 1 exp x b c vec x lt c 77 87 87 7
  • count(distinct) over (partition by... 在 Oracle SQL 中不起作用

    我想数一下distinct day number过去 30 天 但是 distinct 函数不能与over 如果我删除distinct 它会给我总数day number but day number可以有很多重复的 所以这就是为什么我想添加
  • mysql 将 varchar 字段排序为整数

    我的表中有一个 varchar 字段 我想对其进行排序 但我需要将此字段作为整数处理 意思是如果按文本排序 顺序是 19 2 20 但我想得到正确的顺序 2 19 20 谁能帮我 我不知何故没有设法运行查询CAST 我总是得到Error C
  • 根据R中的特定行值将数据帧拆分为多个数据帧

    我需要根据数据帧中重复出现的标题行将数据帧拆分为 17 872 个数据帧 我需要将新创建的数据框存储在列表中 我的数据框看起来像 0 1 2 32 Alert Type Response 33 w1 x1 y1
  • 通过单击堆叠条形图打开选项卡

    我正在使用 R 构建一个包含转发的堆积条形图 ggplot and plotly 如果单击条形图的一部分 我希望打开一个新的浏览器选项卡并显示该特定日期的推文以及指定的转发量 但是 当我单击下面示例中的其中一个栏时 会打开一个不同的链接 表
  • 将 dplyr 中的starts_with与部分列名称的向量一起使用

    我想使用 dplyr 选择与字符串向量匹配的某些列 one lt seq 1 10 two lt rnorm 10 three lt runif 10 1 2 four lt 10 1 df lt data frame one two th
  • 重叠并固定小平面中的 x 尺度(尺度=“自由”)以制作电影

    在另一篇文章中 Justin 的帮助下 我用以下方法绘制了模拟结果facet gridggplot2 中的选项 包含数据和答案的帖子在这里 使用facet grid选项通过ggplot2绘制数据框的列 https stackoverflow
  • 在 r 中使用 SSasymp

    我想我不知道如何在 r 中使用 SSasymp 函数 我想为我的项目创建一个渐近函数 我试过这个 c lt seq 0 200 0 5 d lt SSasymp c 500 0 log 50 plot c d type l log 50 应
  • 针对 SQL Server 的 SQL 查询的执行日期时间

    我曾经发现过这个很好的查询here https dba stackexchange com a 135080 43889 我想将查询的执行时间添加到以下查询中 USE master go SELECT sdest DatabaseName
  • 如何合并具有相同列名的数据框

    我有一个数据框 如下所示 structure list Variables structure list ADA ADA LEAD LEAD BIG4 BIG4 LOGMKT LOGMKT LEV LEV ROA ROA ROAL ROAL
  • 在前两个冒号上分割字符串

    我想在前两个冒号上拆分一列字符串 但不在任何后续冒号上拆分 my data lt read table text my string some data 123 34 56 78 100 87 65 43 21 200 a4 b6 c888
  • 每组最大 n 个 SQL 查询的高性能方法

    我正在尝试构建一个基础设施 以便根据需要快速运行回归 从包含我们网络服务器上所有历史活动的数据库中提取 apache 请求 为了通过确保我们仍然回归来自较小客户的请求来提高覆盖范围 我想通过为每个客户检索最多 n 个 为了这个问题 假设 1

随机推荐