2010年01月05日
パスワード付きのAccessのmdbファイルの処理
perlでパスワード付きのmdbファイルにアクセスしたい場合、あるいはパスワードを変更したい場合にどうしたらよいか調べてみた。(近年、勤務先で要求されるセキュリティのレベルが上がってきたのだ。)パスワード付きのmdbファイルにアクセスするには接続文字列に
Jet OLEDB:Database Password=YourPassword;
と追加すれば良い。
# パスワード付きのmdbファイルにアクセスする例 # PASSWORD というパスワードをもつ hoge.mdb に接続する。 use Win32::OLE; my $password="PASSWORD"; # 接続文字列を作る $connStr="Provider=Microsoft.Jet.OLEDB.4.0;"; $connStr.="Data Source=hoge.mdb;"; # 接続文字列にパスワードを追加 $connStr.="Jet OLEDB:Database Password=$password;" if($password ne ""); #アクセスのデータベースへの接続 $objDB=Win32::OLE->new("ADODB.Connection"); $objDB->Open($connStr); # # ここに読み書きその他の処理を書く。 # # 接続を閉じる $objDB->Close(); $objDB=undef();
パスワード変更をしたいときは、データベースを排他モードで開いて
ALTER DATABASE PASSWORD 新パスワード 旧パスワード
を実行する。(空のパスワードは NULL と記述)
# # hoge.mdb に接続して、パスワードを変更。 # use Win32::OLE; $password="PASSWORD"; #変更前のパスワード $newpassword="NEWPASSWORD"; #変更後のパスワード # 接続文字列を作る $connStr="Provider=Microsoft.Jet.OLEDB.4.0;"; $connStr.="Data Source=hoge.mdb;"; # 接続文字列にパスワードを追加 $connStr.="Jet OLEDB:Database Password=$password;" if($password ne ""); #アクセスのデータベースへの接続 $objDB=Win32::OLE->new("ADODB.Connection"); $objDB->{Mode}=12; # 排他モードにする。 $objDB->Open($connStr); # パスワード変更 $newpassword="NULL" if($newpassword eq ""); $cmd=$objDB->Execute( "ALTER DATABASE PASSWORD $newpassword $password" ); # 接続を閉じる $objDB->Close(); $objDB=undef();
投稿者 augustus : 2010年01月05日 10:48