我在linux机器上有一个正在运行的PostgreSql本地实例.当我使用psqlshell中的命令时,我成功登录而没有任何问题.我需要通过JDBC连接到PostgreSql,但我不知道究竟应该将什么作为url参数传递给DriverManager.getConnection().
它应该从jdbc:postgresql:但接下来会发生什么?
系统组告诉我,创建了一个像用户名一样的数据库.例如,如果我的用户是jutky一个名为db的jutky创建者,但是当我尝试打开一个连接时,jdbc:postgresql:jutky我收到一个错误
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "jutky"
:(
附加信息
当我通过psql提示登录时,我没有提示输入密码,所以当我尝试通过JDBC登录时,我传递一个空字符串作为密码 - 它是正确的,还是我应该通过null什么?
当我输入psql --helpshell时,我看到其余的这一行:
Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")
Run Code Online (Sandbox Code Playgroud)
所以我理解我通过a连接到PostgreSql socket directory,这对JDBC中的URL字符串有用吗?
编辑
首先要感谢答案.
第二:它不是我第一次使用JDBC,特别是我第一次从JDBC连接到PostgreSql,所以我知道一般规则,我已经阅读了文档.但是在描述的情况下,我不确定如果实例正在运行socket directory并且我应该提供什么密码,我应该如何构造连接字符串.因为当我通过登录时,psql我根本没有提示输入密码.
提前致谢.
如何使用.NET函数从app.config中的这样一个connectionString获取用户和密码?
当然,我可以读取该字符串并获取ID =和Password =之后的值.
<connectionStrings>
<add name="MyConString" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Persist Security Info=True;User ID=MyUsername Password=MyPassword;Connect providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud) 我有一个MVC4项目,我正在使用Azure网站预览运行.
我的问题是,当我将网站部署到azure时,我无法将blob上传到我的blob存储容器中,但是当我在本地调试时上传工作正常.
这是我在部署时获得的异常和堆栈跟踪,我尝试上传到容器:
找不到有效的帐户信息组合.在Microsoft.WindowsAzure.Storage.CloudStorageAccount.b__0(字符串ERR)在Microsoft.WindowsAzure.Storage.CloudStorageAccount.TryParse(字符串s CloudStorageAccount&accountInformation,Action`1误差)在Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(字符串的connectionString) at MyProj.Controllers.ImageController.Upload(ImageViewModel model)
具体来说,根据堆栈跟踪,它是失败的.Parse方法.
我用来连接blob存储的代码直接来自azure how-to文档:
string connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
Run Code Online (Sandbox Code Playgroud)
再次,当我在我的开发盒上本地运行时,这工作正常,我可以成功上传没有问题.但是它在部署时给了我这个错误,我尝试做同样的事情.
我猜测我的storageConnectionString在Web部署发布过程中被搞乱,但我不确定如何解决这个问题?
我想从我的app.config文件中获取ConnectionString的serverName的IP地址,然后ping它.实际上我想在运行我的应用程序之前ping我的服务器.我该怎么做呢?我的ConnectionString
<"name="ConnectionString"
connectionString="Data Source=192.168.1.5;
Initial Catalog=CheckPass2;
User ID=User;
Password=myPassword" />
Run Code Online (Sandbox Code Playgroud) 假设的网站目前使用以下方式连接:
public SqlConnection CreateConnection()
{
DbConnection connection = new SqlConnection();
connection.ConnectionString = GetConnectionString();
connection.Open();
return connection;
}
Run Code Online (Sandbox Code Playgroud)
魔术连接字符串存储在以下位置web.config:
String GetConnectionString()
{
//Get the connection string info from web.config
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["db"];
if (cs == null)
throw new Exception("Could not locate DB connection string");
return cs.ConnectionString;
}
Run Code Online (Sandbox Code Playgroud)
现在我想将连接字符串从web.config文件中移出到Azure KeyVault中.如何从Azure密钥保险库中检索任何内容?
String GetConnectionString()
{
//Get the connection string info from Azure KeyVault
String connectionString = GetAzureSecret("dbConnectionString");
if (String.IsNullOrWhitespace(connectionString)
throw new Exception.Create("Could not connection string of Azure Key Vault");
return connectionString; …Run Code Online (Sandbox Code Playgroud) 我想知道的是加密配置文件中的连接字符串的明确方法.这是我的问题:
使用机器级加密,访问我的服务器的任何人都不能写一点.Net程序来读取连接字符串的内容吗?
如果我将我的应用程序部署到企业环境中的用户计算机,并且应用程序在配置文件中有连接字符串,我该如何确保只有我的应用程序可以解密它?在ClickOnce部署方案中,该方案特别有趣.我读过有关人们在发布服务器上存储未加密的配置并在第一次下载,安装和执行应用程序时在机器级加密的人.这听起来对我来说是错误的 - 连接字符串通过线路不受保护,并且在下载和应用程序执行之间保持不受保护的短暂时间.
我可以拥有公钥和私钥,签署我的应用程序,使用密钥加密配置文件,当用户执行它时,只能从签名的应用程序解密吗?
由于我使用ClickOnce,我可以在代码中嵌入加密的敏感信息或嵌入,因为除非版本#更改,否则ClickOnce不会检测到更改.因此,如果我需要重新编译,如果我更改我的连接字符串,app.config的点是静音的.我可以采取哪些其他方法,使用配置文件,以实现对服务器,客户端和中间连接字符串的保护?
我遇到的问题是数据适配器只查看每列中的第一行来确定数据类型.在我的情况下,第一列"SKU"是前500行的数字然后我碰巧有SKU的混合数字和字母.所以最终发生的事情是SKU列中的行是空白的,但我仍然得到每个列行的其他信息.
我相信它是控制它的连接字符串,并且使用我当前的设置它应该工作,但事实并非如此.
连接字符串:
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";
Run Code Online (Sandbox Code Playgroud)
ImportMixedTypes=Text;TypeGuessRows=0
Run Code Online (Sandbox Code Playgroud)
应该是重要的关键字,看看0行,只使用文本作为一切的值类型.
我提出的"bandaid"是让电子表格中的第一行混合使用字母和数字,特别是在我的查询中留下该行.
我正在尝试在同一网络上的SQL Express实例,与我的域用户进行身份验证.它可以在SSMS中使用Windows身份验证.我确认我可以使用MyDB数据库,包括编辑表格.
但是,当我尝试以下连接字符串时:
Server=ipaddress\SQLExpress; Database=MyDB; Integrated Security=SSPI;
我收到了一个错误:
Cannot open database "MyDB" requested by the login. The login failed.
Login failed for user 'ROMANIA\MONSTER2$'
问题是MONSTER2是我的计算机的名称,而不是我的用户名.(ROMANIA是域名.)我做错了什么?
[编辑]我忘记了可能相关的内容:我正在尝试从计算机上运行的Web服务打开连接.
我阅读并测试了很多,以找到加密和部署app.config到不同机器的最佳实践.通常,我希望保护来自第三方的连接字符串的内容,并将应用程序部署到不同的计算机上.我不会手动配置每台机器.
我知道有几种方式:
Aspnet_Regiis(RSAProtectedConfigurationProvider,DPAPIProtectedConfigurationProvider)绑定到计算机,用户或自定义.RSA加密密钥.
System.Security.Cryptography.ProtectedData 绑定到机器或用户.
app.config在第一次执行时加密.哪个不安全.
您建议什么或app.config通过设置或复制和粘贴来加密和向不同机器提供应用程序的最佳做法是什么?
public class Context : DbContext
{
public Context(string connString) : base(connString)
{
Database.SetInitializer(new MyContextInitializer());
}
//...
Run Code Online (Sandbox Code Playgroud)
需要将连接字符串传递给上下文构造函数.字符串应该如何,例如,对于SQL Compact?试过这个,但没有成功:
Context db = new Context("Provider=System.Data.SqlServerCe.4.0;Data Source=D:\\Context.sdf");
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我尝试这个字符串: "Data Source=D:\\Context.sdf"
System.Data.ProviderIncompatibleException未处理
Message =从数据库获取提供程序信息时发生错误.
这可能是由实体框架使用不正确的连接字符串引起的.检查内部异常以获取详细信息,并确保连接字符串正确.来源=的EntityFramework
如果我试着像这样提到提供者: "Data Source=D:\\Context.sdf;provider=System.Data.SqlServerCe.4.0"
System.ArgumentException未处理
消息=不支持关键字:'provider'.
来源= System.Data
c# ×7
.net ×3
app-config ×2
azure ×2
encryption ×2
clickonce ×1
java ×1
jdbc ×1
postgresql ×1
security ×1
sql ×1