WWW を検索 NOGNOG.COM を検索

WWW.NOGNOG.COM

Last modified: Sat, 29 Dec 2007 15:17:16 +0900
Home   うにっくすさんの覚え書き   プリングルズ   MIDI   ユーザー車検   「小沢昭一の小沢昭一的こころ」のススメ   Blog  

Apache - MySQL認証

  • はじめに

    • MySQLを使ったデータベース認証モジュールの構築について解説します。
      既にMySQLがデフォルトディレクトリにインストールされていてかつ、
      ApacheがDSOスタイルでデフォルトディレクトリにインストールされている事を前提としています。
  • 用意するもの

    • mod_auth_mysql-2.8.1.tar.gz

      • 公式ページ&ダウンロードページ
        http://sourceforge.net/projects/modauthmysql/

  • コンパイル&インストール

      % tar zxvf mod_auth_mysql-2.8.1.tar.gz
      % cd mod_auth_mysql-2.8.1
      % su
      # /usr/local/apache/bin/apxs -c -i -a -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient -lz -lm mod_log_mysql.c

  • ロギング用データベース&テーブルの作成

      # mysqladmin create auth_db_name
      # mysql auth_db_name

        mysql> CREATE TABLE auth_passwd_table (
        mysql> id VARCHAR(255) BINARY,
        mysql> passwd VARCHAR(255) BINARY
        mysql> );
        mysql> GRANT ALL ON auth_db_name.* TO db_connect_account IDENTIFIED BY 'db_connect_passwd';
        mysql> GRANT ALL ON auth_db_name.* TO db_connect_account@localhost IDENTIFIED BY 'db_connect_passwd';
        mysql> FLUSH PRIVILEGES;
        mysql> EXIT

  • コンフィグレーション

      # vi /usr/local/apache/conf/httpd.conf

        <Directory  /usr/local/apache/htdocs>
          AuthMySQLHost             localhost
          AuthMySQLDB               auth_db_name
          AuthMySQLUserTable        auth_passwd_table
          AuthMySQLUser             db_connect_account
          AuthMySQLPassword         db_connect_passwd
          AuthMySQLNameField        id
          AuthMySQLPasswordField    passwd
          AuthMySQLCryptedPasswords On
          AuthMySQLKeepAlive        Off
          AuthMySQLAuthoritative    On
          AuthMySQLNoPasswd         Off
          AuthType                  Basic
          AuthName                  "You are requested to input password"
          require                   valid-user
        </Directory>
        			

      id、passwd以外に有効期限や他のアクティブなフラグを認証条件に含ませたい場合は、
      httpd.confへAuthMySQLUserConditionパラメータを追加して

        AuthMySQLUserCondition "active=1 AND expire_date >= curdate()"

      という具合に、認証時に問合せるSQL構文を記述します。すると

        SELECT passwd FROM auth_passwd_table WHERE id='testuser01' AND active=1 AND expire_date >= curdate()

      とクエリが投げられ柔軟な認証設定が可能になります。

  • 起動

      # /usr/local/apache/bin/apachectl start

うにっくすさんの覚え書きについて

Home >> うにっくすさんの覚え書き >> Apache - MySQL認証