프로그램/C#

C#에서 ms access 암호 있을때 connection string + 코드로 mdb 암호 변경 수정.

(주)CKBcorp., 2016. 3. 24. 06:30
반응형


제목 그대로다. 

1. C#에서 

2. 암호 설정 + connection string 에 암호낑궈넣기.

3. ms access 에 걸어놓은 암호를 코드로 변경/수정하는 거.


혹시나 해서 찾아보니 있네. 

역시나 출처는 stackoverflow + MSDN 등등등 이다. 


결론부터 말하면 


ALTER DATABASE Password NEWPASSWORD OLDPASSWORD


쿼리문으로 mdb 파일에 암호를 걸 수 있다. 



아래는 내가 작업하면서 실수했던 것들. 참고바람( 내 실수를 밟고 넘어가라!! )





1. connection string. 


http://www.connectionstrings.com/ 이라는 사이트가 있다. 몰랐다. 

각종 디비에 접속하는 access string 을 모아놓은 거임. 


1.1. 디비 암호 없는 경우 접속문자열은 


mConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=너님mdb파일경로명파일명"


이다. 


1.2. 디비 암호 있을때 접속문자열은 


mConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Jet OLEDB:Database Password=너님디비암호;Data Source=C:\\temp\\파일명.mdb"


1.2.1. "Password=암호" 가 아니라, "Database Password=암호" 다. 중간에 Database 문자열이랑 스페이스 빼 먹지 말것.

1.2.2. "OLEDB" 가 아니라 "Jet OLEDB" 다 . 빼먹지 말 것.


2. "Persist Security Info=False" 는 있어도 되고 없어도 된다. 

"Persist Security Info=True" 로 해도 상관없다. 찾아보니 보안 정책 중 하나이긴 한데, 별 영향 안 끼치는 듯. 


3. ALTER TABLE PASSWORD 할 때는, "배타적 모드" 로 열어야 한다.


[ 베지터 아니다. Exclusive Mode 다. ]


이건 MS Access 라서 그런거 같은데, 원래 mdb 파일에 암호 걸 때는, mdb 파일 열 때 "단독 모드" 열어야 된다. 그냥 열면 암호 못 바꾼다. 




마찬가지로, mdb 파일 암호를 코드로 변경하려면, 똑같이 DB Connection String 에 Exclusive mode 를 걸어줘야 한다.

예를 들면,


string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Jet OLEDB:Database Password=너님암호;Mode=Share Exclusive;Data Source=엠디비경로명파일파일";


와 같다. 

이건 암호 바꾸어 줄 때만 하면 되니까, 실제 프로그램에서 작성할 때는


3.1. 암호 변경용 connection 

3.2. 일반 DB Read/Write/Update 용 connection


을 두개 유지하자.


4. ALTER DATABASE Password NEWPASSWORD OLDPASSWORD 에서, 앞 패스워드가 새거다

ALTER DATABASE Password NEWPASSWORD OLDPASSWORD

다. 절대로 순서를 착각하지 말자.


5. 코드에서 ALTER TABLE 로 암호 설정할 때는, 영문자소문자 + 숫자만 가능하다.

즉, [a-z0-9]만 된다. 이거 좀 의외인데, 삽질 많이 한 결과 알아낸 것. 이 이야기는 어디에도 없더라.



[ 동물도 삽질이 가능하다. ] 


이게 조금 설명이 필요한데, 아래와 같다.

5.1. MS Access 프로그램에서 mdb 를 열어서 암호를 설정하면, 대문자소문자특수문자 다 잘 들어간다.

5.2. MS Access 프로그램에서 mdb 암호를 특수문자등등 넣어서 수동 설정한 다음, 코드로 connection string 에 password 설정하고 접속하면, 접속된다.

5.3. 개발하려는 프로그램에서 코드로 mdb 암호를 대문자나 특수문자로 설정하려면, 설정이 거부된다.


ALTER TABLE PASSWORD 


쿼리를 실행하는 라인에서, Exception 이 발생한다. 



이상. 다른사람들이 참고되길 빈다.


반응형