2009-03-23 6 views
0

새로운 고객을 추가하는 웹 사이트의 관리자 계정이 있습니다. 새 클라이언트가 추가되면 계정과 자체 데이터베이스가 생성됩니다.웹에서 내 서버에 데이터베이스를 만들려면 어떻게해야합니까?

문제는 내 관리자 계정에서 내 서버에 새 데이터베이스를 만들 수 없다는 것입니다. 로컬에서 실행할 때 데이터베이스를 로컬로 추가 할 수 있습니다. 내가 서버 떨어져 내 웹 사이트를 실행하는 서버에 추가하려고 할 때, 나는 몇 가지 방법을 (로컬) 데이터베이스를 추가 할 수있었습니다

CREATE DATABASE permission denied in database 'master'. 

얻을. 이는보다 간단한 작업 버전 중 하나입니다.

tmpConn.ConnectionString = "Data Source=.\\SQLEXPRESS; DATABASE = master;Integrated Security=True;"; 
sqlCreateDBQuery = " CREATE DATABASE " + dbname; 

SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, tmpConn); 
try 
{ 
    tmpConn.Open(); 
    myCommand.ExecuteNonQuery(); 

} 
catch (System.Exception ex) 
{} 

답변

0

서비스 제공 업체에 문의하십시오. (또는 서버의 관리자).

+0

웹에 아직 테스트 서버가 없으므로 저는 현재 서버의 메인테이너입니다. 서버 관리자로서 무엇을 할 수 있습니까? –

-1

MySQL에 대한 사용 권한 확인 : 관리자 계정에 로컬 연결과 호스트에 대한 설정이 다른가요?

+0

질문에 MySQL 연결 문자열이 아닙니다. –

0

데이터베이스를 만들고 데이터베이스 사용자 권한을 만들어야합니다. 서비스 제공 업체가이를 용이하게 할 수 있어야합니다.

0

dbname 값에서 어떤 종류의 유효성 검사를 수행하는지 아무도 제안하지 않았습니다. 그 안에 공백이 없습니까? 예약어가 아니라고? 악성 코드가 포함되어 있지 않습니까? 적어도 당신은 괄호 안에 그것을 싸는합니다 :

sqlCreateDBQuery = String.Format(" CREATE DATABASE [{0}]", dbname); 

난 정말 당신이 사용자가 어딘가에 텍스트 상자에 직접 이름을 입력 할 수 없습니다 바랍니다. 초기 입력에서 속성 보안을 사용하고 이것이 일종의 일반적인 "클라이언트"db에서 되돌려 졌다고하더라도 2 차 SQL 주입 취약점에 대해 스스로를 설정했을 수 있습니다.

이후에는 오류 메시지를 볼 수 있습니다. 이 경우 웹 사용자에게 적절한 CREATE 권한이없는 것이 문제입니다. 이를 수정해야하며 계속 진행해야합니다. 이 시점에 전환 할 수있는 특별 계정을 예약하려는 경우 응용 프로그램이 이러한 종류의 작업을 허용하는 컨텍스트에서 정상적으로 실행되지 않습니다.

+0

이것은 내 고객을위한 페이지가 아닙니다. 나는 접근 할 수있는 유일한 사람이고 그것은 매우 구체적인 이름 목록에 있습니다. –

+0

그리고 컴퓨터가 손상된 경우 어떻게해야합니까? 그것은 깊이있는 방어입니다. 또한 안전하지 않은 코드를 작성하지 않는 습관을 갖는 것이 좋습니다. –

3

SQL Server에 연결하는 데 사용하는 계정에 CREATE DATABASE 권한이없는 것으로 의심됩니다. 아마도 Network Security/ASP.NET을 사용하여 MSSQL에 연결하는 통합 보안을 사용하고있을 것입니다. sa (또는 다른 sysadmin) 자격 증명과 함께 Sql 인증을 사용하는 new connection string을 만들어야합니다.

오 - 로컬 사용자 계정으로 실행되는 Visual Studio의 WebDev.exe에서 실행되기 때문에 로컬로 작동합니다. MSSQL에서 sysadmin으로 설정되어있을 수 있습니다.

관련 문제