如何配置数据库,以便可以从任何计算机进行连接?

时间:2019-10-25 05:10:48

标签: azure-sql-database

我是Azure的新手,与您的服务器一起创建数据库以团队合作。但是我必须将IP添加到每个防火墙。问题是IP更改了,并且IP必须更新。我是否需要知道是否可以通过任何IP访问另一种配置形式?

2 个答案:

答案 0 :(得分:0)

建议让某种中间件访问数据库,而不是直接访问您的客户端。

但是,如果您希望任何IP能够连接到数据库,只需将此条目添加到防火墙列表中即可:

Azure门户-> Azure Sql Server->数据库->设置服务器防火墙并添加以下规则:

enter image description here

答案 1 :(得分:0)

正如Joey Cai提到的,​​您可以创建防火墙规则以接受来自所有IP地址的访问。但是,我们通过构建一个应用程序来解决此问题,我们的用户可以在运行时为其更新防火墙规则并获得对Azure SQL数据库的访问权限。

从C#中,您可以通过Microsoft.Azure.Management.Fluent这样访问所有Azure资源

// Create an authentication context to Azure and acquire a login token
var context = new AuthenticationContext("https://login.microsoftonline.com/tenantId");
var auth = await context.AcquireTokenAsync("https://management.core.windows.net/",
                    "yourClientId", new Uri("urn:ietf:wg:oauth:2.0:oob"),
                    new PlatformParameters(PromptBehavior.Always));
var tokenCredentials = new TokenCredentials(token);
var azureCredentials = new AzureCredentials(tokenCredentials, tokenCredentials, 
                           AzureParts.Tenant, AzureEnvironment.AzureGlobalCloud);

// Build the client with the acquired token as a credential.
RestClient client = RestClient.Configure()
                .WithEnvironment(AzureEnvironment.AzureGlobalCloud)
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .WithCredentials(azureCredentials)
                .Build();

// Authenticate against azure with the correct subscription to access.
var azure = Azure.Authenticate(client, AzureParts.Tenant)
                .WithSubscription("subscriptionId");

// Search for the sql server and add a firewall rule.
var sqlServer = azure.SqlServers.GetByResourceGroup("ResourceGroup", "servername");
sqlServer.FirewallRules.Define("LetMeIn").WithIPAddress("yourIp").Create();

请注意,通过AcquireTokenAsync获取登录令牌将打开一个登录窗口,因此不能以自动方式使用。如果您只想登录一次,则可以为令牌缓存提供一个已经存储的令牌。