【VisualStudio】VisualStudio導入

  • VisualStudio導入
    Visual Studio Professional 2015と同機能を持つ
    個人専用のVisual Studio Community 2015を導入しました。
    公式サイトからダウンロードし、画面の指示に従い、
    カスタムで以下をインストールしました。

    Windows and Web Development - Microsoft SQL Server Data Tools
    Windows and Web Development - Microsoft Web Developer Tools
    Common Tools - Visual Studio Extensibility Tools Update 2
    

    インストール後、アカウントのSign inを促されますが、
    スキップしたまま起動できます。
    初期状態だと英語表示なので一旦終了し、日本語パッチを適用します。

    日本語パッチ適用後、Visual Studio Community 2015を再度起動し、
    「Tools」-「Options」-「Environment」-「International Setings」を選択し、
    プルダウンから「日本語」を選択し、
    再度、Visual Studio Community 2015を再起動します。

    補足ですが、Visual Studio Community 2015をインストールすると
    2つの統合開発環境(IDE)がインストールされます。
    Windowsの左下のメニューから確認できます。

    Blend for Visual Studio 2015
    Visual Studio 2015
    

    Blend for Visual Studio 2015はXAMLを使った開発でUIデザインを行うのに適したツールらしいです。
    また、同じプロジェクトファイルを参照できるという親和性があるとか。
    通常であれば、Visual Studio 2015で十分です。
    Blend for Visual Studio 2015はデータベースエクスプローラーがなかったりで
    しばらく困惑しました。

【Excel】アンスコ区切りをキャメルケースに変換する

Javaではクラス名はアッパーキャメルケース(パスカルケース)の形式にします。
メソッド名はローワーキャメルケースの形式にします。

アッパーキャメルケース:FirstExample
ローワーキャメルケース:firstExample

エクセルでA1に「FIRST_EXAMPLE」という文字列があると仮定し、
それをアッパーキャメルケース、ローワーキャメルケースに変換します。

' アッパーキャメルケース
=SUBSTITUTE(PROPER(A1),"_","")
' ローワーキャメルケース
=LOWER(LEFT(A1,1))&MID(SUBSTITUTE(PROPER(A1),"_",""),2,LEN(A1))

【Excel】フォルダ内のエクセルファイルのオブジェクトに対して検索を行う

Dir関数を用いるため、ネットワーク上の長いファイルパスには未対応です。

Sub Test()

    ' 画面チラつきを防止する。
    Application.ScreenUpdating = False

    ' フォルダパスとファイル名を宣言する。
    Dim strFilePath As String
    Dim strFileNmae As String
         
    ' テキストボックスかセル入力でフォルダを指定させる。
    strFilePath = "C:\Users\test\Desktop\テストディレクトリ"
    
    ' 末尾が\ではない場合、\を追加する。(未実装)
    strFilePath = strFilePath & "\"
    
    ' 指定フォルダ内のファイル名を取得する。
    strFileName = Dir(strFilePath, vbNormal)

    ' 結果シートを変数に設定する。
    Dim resultBookSheet As Worksheet
    Set resultBookSheet = Worksheets("sheet1")
   
    ' 結果シートの行数を宣言する。
    Dim longGyo As Long
    longGyo = 1

    ' 指定フォルダ内のファイルがなくなるまで繰り返す。
    Do While strFileName <> ""

        Dim result As Range
        Dim firstAddress As String

        ' ファイルを開く。
        With Workbooks.Open(Filename:=strFilePath & strFileName)

            ' ファイル内のシート数を取得する。
            Dim sheetCnt As Long
            sheetCnt = .Worksheets.Count

            ' 1シート目からnシート目まで繰り返す。
            Dim i As Long
            For i = 1 To sheetCnt

                Dim shp As Shape
                ' シートからオブジェクトがなくなるまで繰り返す。
                For Each shp In .Worksheets(i).Shapes

                    ' オブジェクトにテキストを書き込める場合
                    ' shp.TextFrameはテキストが書き込めないオブジェクトでエラーが発生してしまう。
                    ' shp.TextFrame2はOffice 2007以降で利用可能だが、
                    ' テキストが書き込めないオブジェクトでもエラーが発生しない。
                    If shp.TextFrame2.HasText = True Then

                        ' 検索文字列がオブジェクト内に存在する場合
                        If InStr(shp.TextFrame2.TextRange.Text, "Excute") > 0 Then
                            resultBookSheet.Cells(longGyo, 1).Value = strFilePath & strFileName
                            resultBookSheet.Cells(longGyo, 2).Value = .Worksheets(i).Name
                            resultBookSheet.Cells(longGyo, 3).Value = "セル(" & shp.TopLeftCell.Address & ") - オブジェクト"
                            resultBookSheet.Cells(longGyo, 4).Value = shp.TextFrame2.TextRange.Text
                            longGyo = longGyo + 1
                        End If
                    End If
                Next
            Next i
            
            ' 保存せずファイルを閉じる。
            .Close SaveChanges:=False
        End With

        ' 次のファイルを取得する。
        strFileName = Dir()
    Loop
        
    ' 画面チラつき防止を解除する。
    Application.ScreenUpdating = True
    
End Sub

【要件定義】アプリ計画

要件定義のアプリ計画のテンプレ。随時加筆。

  • アプリケーション要件 背景
    現状のアプリはOracleとの依存関係が強すぎ、
    メンテナンス効率が非常に悪いとう課題がある。

【要件定義】データ移行

要件定義のデータ移行のテンプレ。随時加筆。

  • 目的
    データ移行の概要を載せる。

    本書の目的は2017年1月サービス開始予定のXXXシステムにおける移行に関する
    作業・役割・期間を定義し、プロジェクトメンバー、関連部署間において、
    共有することを目的とする。
    
  • 前提条件
    判明している前提条件を載せる。

    ・サービス開始は2017年1月4日(月)である。
    ・移行作業については、2016年12月29日(木)のオンライン終了後~
     2017年1月3日(火)までの間でシステムを停止させた状態で行う。
    ・XXXシステムの切替は一括切替とし、一部切替は行わない。
    ・XXXシステムの切り戻しは一括切り戻しとし、一部切り戻しは行わない。
    ・セキュリティパッチの適用は2016年8月31日をもって凍結する。以降、
    ・本番開始までのタスク・スケジュールは今後随時見直し行う。
    ・移行の大まかな流れは以下の通りとする。
     (ここで年、月のエクセル図があるとイメージがつきやすい)
    
  • システム移行
    IPやURLや製品情報を載せる。

    新システムのシステム構成
    
    
    No役割分類IPや製品名
    1WEBサーバ#1Linux系サーバXXXX
    2WEBサーバ#2Linux系サーバXXXX
    3APサーバ#1Linux系サーバXXXX
    4APサーバ#2Linux系サーバXXXX
    5DBサーバLinux系サーバXXXX
    6ロードバランサ#1仮想アプライアンスXXXX
    7ロードバランサ#2仮想アプライアンスXXXX
    8帳票サーバWindows系サーバXXXX
    ※仮想アプライアンスとは仮想マシン内にOS、ミドルウェア、アプリケーションといった  全ソフトウェア・コンポーネントを予め準備し、デプロイすると稼働状態となり、  利用可能になる。

    アプリケーションの機能ごとに言語やバージョンの違いを載せる。
    ライブラリの違いもあるとより良い。

    1.オンラインアプリケーション
    2.クライアントアプリケーション
    3.バッチアプリケーション
    
    
    No種別名称言語
    OracleC#Java
    Pro*CSQLローダPLSQL
    1オンラインXXXマスタ登録
    2クライアントXXXマスタ登録
    3バッチXXXマスタ取込
  • データ移行
    移行対象有無や移行方法を載せる。

    No名称移行有無移行方法スキーマ表領域
    1テーブルSQL文XXXXTBL
    2インデックスSQL文XXXXIDX
    3プロシージャ----
    4パッケージ----
    5シーケンスSQL文XXXXTBL
    6トリガー----
    7シノニム----

    オブジェクト構成があまり変わらない場合、新旧の比較を載せるのも良い。

    No旧オブジェクト名新オブジェクト名区分概要
    新規変更削除
    1AテーブルAテーブルカラム追加
    2Bテーブルテーブル追加
    3Cテーブルテーブル削除

    テーブルのうち、データマッピング、初期データについて載せる。
    詳細は外部設計にすることが多い。

    1.テーブルデータ
    
    
    No旧カラム名新カラム名区分概要
    新規変更削除
    1IDID変更なし
    2氏名漢字カラム追加
    3氏名カナカラム削除
    2.初期データ
    Noテーブル名カラム名設定値
    1URLマスタID111
    2URLマスタURLz-area.net
  • 業務移行
    アプリケーションの機能ごとに稼働時間の違いや運用ルールの違いを載せる。

    1.オンラインアプリケーション
    2.クライアントアプリケーション
    3.バッチアプリケーション
    
    
    No種別機能名旧機能概要新機能概要
    1オンラインXXXマスタ登録300件まで登録2000件まで登録
    2クライアントXXXマスタ登録300件まで登録2000件まで登録
    3バッチXXXマスタ取込2000件まで登録5000件まで登録
  • 依頼事項
    事前に判明している依頼先と依頼内容があれば載せる。
  • 移行リハーサル
    移行リハーサルの概要を載せる。

    移行リハーサルについては3回実施する。
    
    <1回目>
    データベースの移行検証
    データベース以外の移行検証
    
    <2回目>
    1回目の検証結果を受けた見直し実施
    
    <3回目>
    最終的な手順確認
    
    移行時に発生する作業
    
    1.システム移行(システム構築)
    2.リリース
    3.現行サーバの停止
    4.データ移行(DB、ファイル)
    5.検証
    
    移行リハスケジュール
    (ここで年、月のエクセル図があるとイメージがつきやすい)
    
  • 移行テスト
    移行後の環境で行うテスト方針を載せる。
  • 移行体制
    移行時の体制や連絡先を載せる。
    (ここで年、月のエクセル図があるとイメージがつきやすい)
  • 本番検証
    移行の検証手段と移行判定方針を載せる。

    2017年1月1日(日)に運用にてURLを切り替えていただき、アプリチームにて
    アプリケーション観点で動作確認を行う。
    他システムとの連携確認は実施しない。
    2017年1月2日(月)に顧客に動作確認を実施いただく。

  • 切り戻し
    本番検証で失敗した場合の切り戻し方針を載せる。

    本番検証で現行業務に支障を及ぼすと判断される場合、切り戻しを実施する。
    切り戻しについては以下表のシステムを切り戻す。

  • コンティンジェンシープラン
    移行時の不測の事態が発生することを想定し、
    その対策や行動手順として、再実行時の必要日数や候補日を載せる。

    現時点では移行期間は4日間必要と考える。
    再移行期間の候補は以下の通り。
    1.2017年1月7日(土)~2017年1月9日(月・祝)と前後1日
    2.2017年3月18日(土)~2017年3月20日(月・祝)と前後1日

【Excel】CSVファイルを開く

  • ダブルクリック
    ダブルクリックで開いた場合、数値などは自動判断する。
  • テキストファイルで読み取り
    ツールバーの「データ」-「外部データの取り込み」-「テキストファイル」から読み取り、
    区切り文字をカンマに指定し、全項目を文字列として読み取る。
    数値も文字列として読み取るので、先頭が0でも変換しない。
    項目間が”,”の場合、ダブルクォート内のカンマは区切り文字ではなく、
    文字としてのカンマとして扱う。

【管理】WBS

WBSをエクセルで書くことが多いので、数式や書き方を記載。

  • 祝日の設定
    祝日は別紙「リスト」シートを作成し、A:Aに日付書式で管理する。
  • 終了日の自動設定(祝日除く)
    作業日数と開始日を入力すると祝日を除いた上で終了日を自動設定できるよう
    終了日に数式を設定する。

    ' 終了日の自動設定
    =IF(開始日セル="","",WORKDAY(開始日セル,ROUNDUP(作業日数セル,0)-1,リスト!祝日設定範囲))
    
  • 1ヶ月の日付の設定
    X月1日のセルに対して、YYYY/MM/DD形式でセルに入力し、
    書式をユーザ定義で「d」を設定する。
    X月2日のセルに対して、「X月1日のセル+1」を入力し、書式をユーザ定義で「d」を設定する。
    以降、繰り返しとなる。
  • 1ヶ月の曜日の自動設定
    曜日を入力したいセルに対して、数式を設定する。

    ' 曜日の自動設定
    ' aaa:「月」、「火」などの曜日1文字を表す
    ' aaaa:「月曜日」、「火曜日」などの曜日3文字を表す。
    =TEXT(X月1日のセル,"aaa")
    
  • 日ごとの書式設定
    祝日は灰色、タスクの作業期間中はオレンジ色で塗りつぶせるよう
    タスク行の日ごとのセルに数式を設定し、
    さらに条件付き書式を設定する。
    オレンジ色の条件付き書式4の優先順位を下げ、
    灰色の条件付き書式1~3の優先順位を上げ、
    「条件を満たす場合は停止」チェックをONにするところがミソ。

    ' タスク行の日ごとのセル
    ' 作業日が開始日と終了日の間(=作業期間中)の場合、1を設定している。
    =IF(OR(作業日数セル="",作業日数セル=0),"",IF(AND(作業日セル>=開始日セル,作業日セル<=終了日セル),1,""))
    
    ' 条件付き書式1
    ' 作業日が別紙「リスト」シートに設定した祝日範囲に含まれる場合、
    ' COUNTIFで1が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =COUNTIF(リスト!祝日設定範囲,作業日セル)=1
    
    ' 条件付き書式2
    ' 作業日が土曜日の場合、WEEKDAYで7が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =WEEKDAY(作業日セル)=7
    
    ' 条件付き書式3
    ' 作業日が日曜日の場合、WEEKDAYで1が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =WEEKDAY(作業日セル)=1
    
    ' 条件付き書式4
    ' 指定の値を含むセルだけを書式設定で
    ' 「セルの値」「次の値に等しい」「=1」を設定する。
    ' この時、セルの塗りつぶしの色、フォント色をオレンジ色にする。
    

【Redmine】Railsアプリケーションを実行するためのApacheモジュール導入

Redmine等のRuby on Railsアプリケーションを
実行するためのApacheモジュールを導入します。

導入することのメリットは以下の通りです。

  1. Apache単独でRailsアプリケーションを実行可能。
    Apacheのモジュールとして実装されており、
    別途デーモンを起動する必要がなく、TCPポートも使わない。
  2. Railsアプリケーションのデプロイが簡単になる。
    ファイルをアップロードするだけなので、PHPのような感覚。
  3. サーバのメモリを節約できる。
    Railsインスタンスは必要なタイミングで生成し、
    一定時間アクセスがなければインスタンスを終了させる。
  • Passenger導入

    gem install passenger --no-rdoc --no-ri
    passenger-install-apache2-module
    

    以下の警告は無視しました。

    /usr/include/features.h:330:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
    #  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
    

    以下の設定依頼が表示されるので、メモしておきます。

    Please edit your Apache configuration file, and add these lines:
    
    LoadModule passenger_module /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27
      PassengerDefaultRuby /usr/bin/ruby2.0
    </IfModule>
    
    After you restart Apache, you are ready to deploy any number of web
    applications on Apache, with a minimum amount of configuration!
    

    ここで別のTeraTermを立ち上げ、
    Apache2の設定ファイルを作成し、メモしたものを書き込みます。

    vi /etc/httpd/conf.d/redmine.conf
    
    # Passengerの基本設定。
    LoadModule passenger_module /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27
      PassengerDefaultRuby /usr/bin/ruby2.0
    </IfModule>
    
    # サブディレクトリでRedmineを実行するための設定
    RackBaseURI /redmine
    
    # Passengerが追加するHTTPヘッダを削除するための設定(任意)
    Header always unset "X-Powered-By"
    Header always unset "X-Rack-Cache"
    Header always unset "X-Content-Digest"
    Header always unset "X-Runtime"
    
    # Passengerのチューニングのための設定(任意)
    PassengerMaxPoolSize 20
    PassengerMaxInstancesPerApp 4
    PassengerPoolIdleTime 3600
    PassengerHighPerformance on
    PassengerStatThrottleRate 10
    PassengerSpawnMethod smart
    RailsAppSpawnerIdleTime 86400
    PassengerMaxPreloaderIdleTime 0
    
    # RedmineのCSSや画像へのアクセスを許可
    <Directory "/var/lib/redmine/public">
      Require all granted
    </Directory>
    

    保存後、Apache2を再起動し、元のTeraTermでエンターを押下します。

    /etc/rc.d/init.d/httpd restart
    

    Apache上のPassengerでRedmineを実行するため、
    Redmineのオーナーを変更します。
    今回、AWSではApacheはrootユーザで実行しているため、
    変更前のオーナーでも実行は可能です。

    chown -R apache:apache /var/lib/redmine
    

    Apacheのドキュメントルートに指定されているディレクトリに
    Redmineのpublicディレクトリに対するシンボリックリンクを作成します。

    ln -s /var/lib/redmine/public /var/www/html/redmine
    

    再度、Apache2を再起動します。
    これにより、全てのRailsアプリケーションも再起動されるようになります。

    /etc/rc.d/init.d/httpd restart
    
  • Redmine動作確認
    以下のURLでRedmineにアクセスできれば成功です。
    https://xxx.xxx.xxx.xxx/redmine/

    コマンド以外のRedmineの初期設定については、
    以下のURLを確認しながら画面上で行います。
    http://redmine.jp/tech_note/first-step/admin/

【Redmine】Redmine導入

  • Redmine導入
    Redmineのバージョンは以下のURLから最新版を調査します。
    http://www.redmine.org/projects/redmine/wiki/Download

    cd /var/lib
    curl -O http://www.redmine.org/releases/redmine-3.2.1.tar.gz
    tar xvf redmine-3.2.1.tar.gz
    mv redmine-3.2.1 /var/lib/redmine
    
  • RedmineからMySQLへの接続ファイル作成

    vi /var/lib/redmine/config/database.yml
    
    production:
      adapter: mysql2
      database: レッドマイン用DB名
      host: localhost
      username: レッドマイン用ユーザ名
      password: "レッドマイン用ユーザパスワード"
      encoding: utf8
    

    スペースは2つ空けること。
    パスワードはダブルクォートをつけること。
    この設定がおかしいと後続のbundle処理でハマリます。
    「/var/lib/redmine/config/database.yml.example」にサンプルファイルがあります。

  • Redmineからメールサーバへの接続ファイル作成

    vi /var/lib/redmine/config/configuration.yml
    

    今回はお試しで導入することもあり、作成しませんでした。
    日本語フォントファイルのパス、アップロードされたファイルの保管場所、
    データベースの暗号化等も設定できます。
    この設定ファイルも記述をミスると後続のbundle処理でハマリます。
    「/var/lib/redmine/config/configuration.yml.example」にサンプルファイルがあります。

  • gemパッケージ導入
    Rubyのパッケージ管理ツール「bundler」を使用して、
    Redmineが依存するgemパッケージを導入します。

    cd /var/lib/redmine
    bundle install --without development test
    

    通常はここで普通に上手くいくようですが、私の環境では以下のエラーが発生しました。

    [root@ip-xxx-xxx-xxx-xxx redmine]# bundle install --without development test
    /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError)
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell/basic.rb:2:in `<top (required)>'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell/color.rb:1:in `<top (required)>'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell.rb:17:in `shell'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/ui/shell.rb:14:in `initialize'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:12:in `new'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:12:in `rescue in start'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:10:in `start'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/exe/bundle:19:in `block in <top (required)>'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/friendly_errors.rb:7:in `with_friendly_errors'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/exe/bundle:17:in `<top (required)>'
    from /usr/local/bin/bundle:23:in `load'
    from /usr/local/bin/bundle:23:in `<main>'
    

    「io/console (LoadError)」が存在しないと記載があるので、
    以下のコマンドで追加で導入しました。

    cd /var/lib/redmine
    gem install io-console
    

    その後、「/var/lib/redmine」を全部削除し、最初からやり直したところ、上手くいきました。

  • Redmineのセッション改ざん防止用秘密鍵の作成

    cd /var/lib/redmine
    rake generate_secret_token
    
  • Redmine用DBにテーブル作成

    cd /var/lib/redmine
    RAILS_ENV=production rake db:migrate
    
  • Redmine用DBのテーブルに初期データ登録
    初期データ登録はコマンドではなく、Redmine起動後に管理画面から実行することも可能。

    cd /var/lib/redmine
    RAILS_ENV=production rake redmine:load_default_data
    
  • Redmineのパーミッション設定

    cd /var/lib/redmine
    chown -R 755 files log tmp public/plugin_assets
    

【Redmine】Redmine導入前準備

RedmineをAWSのEC2の無料版であるAmazon Linuxに導入します。
導入の前提として、WEBサーバ、DBサーバの設定が済んでいること。
WEBサーバにはApache2、DBサーバにはMySQLを利用します。

導入前の準備として、各ツールを揃えます。

  • 開発ツール・ビルドに必要なヘッダファイルのインストール
    RubyやPassengerのビルドで必要なヘッダファイルです。

    yum -y groupinstall "Development Tools"
    yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
    
  • ImageMagickと日本語フォントのインストール
    ImageMagickと日本語フォントはガントチャートをPNG形式の画像にエクスポートする機能、
    添付ファイルのサムネイル画像を作成するのに利用するようです。
    インストールを行わなくてもRedmineの実行は可能ですが、入れておきます。

    yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
    
  • Rubyインストール
    Amazon Linuxでは既に導入済ですが、最新のものにしました。

    yum install ruby-devel
    
  • bundler導入
    Redmineが使用するGemを一括インストールするためのツールです。

    gem install bundler --no-rdoc --no-ri
    

    「–no-rdoc –no-ri」はドキュメントのインストールを省略するためのオプションです。

  • Redmine用のMySQLのユーザ作成

    mysql -uroot -pデータベースパスワード
    
    create database レッドマイン用DB名 default character set utf8;
    grant all on レッドマイン用DB名.* to レッドマイン用ユーザ名@localhost identified by 'レッドマイン用ユーザパスワード';
    flush privileges;
    exit