Smart -Web Magazine

WEB開発者に嬉しいステキ講座

MENU

MySQLの設定

2009年8月6日 コメントの追加

各ディレクトリの説明

バイナリ配布を使用する場合、トップディレクトリはインストール先のディレクトリ /usr/local/mysql になる。ソース配布の場合、トップディレクトリはMySQL のソースディレクトリです。

  • SRCDIR
    mysqlのソースを展開したディレクトリです。通常は /usr/src/mysql-version となります。
  • BINDIR
    mysqladmin や safe_mysqld がインストールされたディレクトリ。ソースからインストールした場合、通常は /usr/local/bin です。 バイナリ配布を使用しているはバイナリ配布の bin ディレクトリになります。
  • EXECDIR
    mysqld サーバーのインストール先。ソースからインストールした場合、 /usr/local/libexec です。バイナリ配布を使用している場合、BINDIR ディレクトリと同一になります。

オプションファイル

MySQLのサーバー、クライアントともに、オプションファイルからデフォルトの起動オプションを読み込むことができます。

UNIX では MySQL は以下のファイルからデフォルトオプションを読み込みます。

ファイル名 説明
/etc/my.cnf グローバルオプション
データディレクトリ/my.cnf サーバ用オプション
~/.my.cnf ユーザ用オプション

「データディレクトリ」とは、MySQL のデータを格納するディレクトリ ( /usr/local/mysql/data もしくは /usr/local/var )です。 

Win32 では MySQL は以下のファイルからデフォルトオプションを読み込みます。

ファイル名 説明
C:\my.cnf グローバルオプション
C:\mysql\data\my.cnf ユーザ用オプション

MySQLは上記の表にかかれている順にオプションファイルを読みます。もし複数オプションファイルがあった場合、後から読まれた設定が有効になる。全てのオプションはコマンドラインの引数に上書きされます。いくつかのオプションは環境変数に定義できます。オプションファイルとコマンドラインの引数は環境変数を上書きします。

以下のプログラムはオプションファイルをサポートします。

mysql, mysqladmin, mysqld, mysqldump, mysqlimport, isamchk and pack_isam.

オプションファイルには、プログラムがサポートしているコマンドラインの long オプション(例えば、-u ではなくて --user の方)を書くことができます。プログラムを --help で起動すれば、設定可能な変数名が得られます。

オプションファイルの書式
# コメント
コメントはシャープ( # )かセミコロン( ; )で始めます。空の行は無視します。
[グループ名]
グループ宣言です。 group はオプションを定義するプログラムかグループの名前です。この宣言の後、オプションかset-variable行で、このグループにオプションを与えます。このセクションの範囲は、他のグループ宣言の行が来るか、ファイルの最後に来るまでです。
オプション名
これはコマンドラインの --option と等価です。
オプション名=値
これはコマンドラインの --option=value と等価です。
set-variable = variable=value
これはコマンドラインの --set-variable variable=value と等価です。これは mysqld 変数で使用される形式です。

client グループは、全ての MySQL クライアント(mysqldは除)に対してオプションを定義します。これはサーバーに接続する際に使用するパスワードを指定できるグループです。 (この場合、オプションファイルは自分だけが読み書きできるようにしよう)

オプションや値の善後にある全てのブランク文字は自動で取り除かれる。値として、\b、\t、\n、\r、\\、\sのエスケープシーケンスが使用できます。

オプションファイル例:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M

[mysqldump]
quick

ユーザーオプションファイル例:

[client]
# The following password will be sent to all standard MySQL clients
password=my_password

[mysql]
no-auto-rehash

ソースには「my-example.cnf」 という名前のサンプルファイルが「support-files」ディレクトリにある。もしバイナリ配布を使用しているなら、 「DIR/share/mysql」ディレクトリを探しましょう。 (ここで DIR は MySQL がインストールされたディレクトリのパス名で、通常は /usr/local/mysql)。この「my-example.cnf」 ファイルを自分のディレクトリに 「.my.cnf」 という名前でコピーして使用できます。

MySQL プログラムにオプションファイルを読ませないようにするには、コマンドラインの一番最初に --no-defaults を書きます。これはオプションの最初でないと有効になりません。どのオプションが定義されているか確かめるには、--print-defaults を最初のオプションに指定します。


MySQLの開始

MySQLを起動する場合、mySQLを直接使用しないでsafe_mysqldをバックグラウンドで使用したほうが良いでしょう。safe_mysqldスクリプトは、mysqldを起動したあとにmysqldが稼動しつづけているかチェックし、MySQLが落ちたら、自動的に再起動を行ってくれます。

許可テーブルのインストールとサーバーの開始:

・テーブルのインストール
# SRCDIR/scripts/mysql_install_db

上記コマンドで、必要なテーブルがインストールされる。これはインストール後、1回だけ行います。

MySQL サーバーの起動:

# BINDIR/safe_mysqld &

サーバーが接続を受け付けるか確認:

# BINDIR/mysqladmin version
# BINDIR/mysqladmin variables

mysqladmin version の出力はインストールプラットフォームとMySQLのバージョンを出力する。mysqladmin の使用方法は、--help オプションで起動することにより表示されます。

サーバーをシャットダウン:

# BINDIR/mysqladmin -u root shutdown

サーバーをリスタートするには、safe_mysqld か mysqld を直接実行します。

# BINDIR/safe_mysqld --log &


簡単なテスト方法

いくつかの簡単なテストでサーバーが動いているか確認できます。

# BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+

# BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+

# BINDIR/mysql -e "select host,db,user from db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+


ベンチマークテスト

他のプラットフォームで MySQLのパフォーマンスを比較するために「bench」にベンチマークがあります。「bench/Results」ディレクトリには、他のデータベースやプラットフォームでベンチを実行した結果があります。全てのテストを実行するには、以下のようにします。

# cd bench
# ./run-all-tests

「tests」サブディレクトリでテストすることも可能です。例えば、「auto_increment.tst」の実行は以下のようにします。

# BINDIR/mysql -vvf test < ./tests/auto_increment.tst

これの結果は「./tests/auto_increment.res」ファイルに書き出されます。

RPM のソース配布には含まれますが、バイナリ配布には「sql-bench」ディレクトリがありません。この場合、ベンチマークをインストールする必要があります。 MySQL 3.22 のバイナリ配布から、「mysql-bench-VERSION-i386.rpm」という名前で RPM パッケージを作っており、これにはベンチマークのデータとコードが含まれます。

このエントリーをはてなブックマークに追加

Sambaの設定

2009年8月6日 コメントの追加

smb.confの概要

Sambaのインストールが済んだら、Sambaの設定ファイル(/etc/smb.conf)を編集します。smb.confファイルはSambaシステム全体の構成ファイルで、Samba実行時の設定情報が含まれています。基本的には、ほぼデフォルト設定のまま使えます。


設定ファイルのルール

ファイルはセクションとパラメータで構成されます。1つのセクションは大かっこ ( [ ] ) でくくったセクション名で始まり、次のセクションが始まるまでが範囲となります。セクション内には '名前 = 値'という形式のパラメータを記述します。

記述ルール
  • コメント、セクション名、パラメータは別の行で指定する。
  • セクション名とパラメータ名は、大文字、小文字を区別しない。
  • 空白文字は無視される。パラメータ値の途中にある空白文字はそのまま受け付けられる。
  • セミコロンで始まる行は無視される。
  • \ で終わる行は、次の行へと続くことを指示する。
  • イコール記号 '=' の後にくるパラメータの値には、文字列、または真偽値を意味する
    真偽値は yes/no、0/1、true/false のいずれかを記述する。

セクションの説明

ここでのセクションとは、共有フォルダや、共有プリンタなどの共有リソースを設定する範囲です。

以下のセクションは、fooという名称の共有フォルダを定義しています。 ユーザは /home/bar に対して書き込み可能です。

[foo]
path = /home/bar
read only = read only = no

たとえば、下記のようにセクション名と、設定をしている1つの範囲が1セクションとなります。

[printers]
path = /usr/spool/public
writeable = no
printable = yes 

大かっこ ( [ ] ) で囲まれたセクションに、([global] セクションを除き)共有リソースの設定を記述します。セクション名は共有リソース名となり、セクション内のパラメータは、共有の 設定に利用されます。 


特殊セクションの説明

[global] セクション

このセクション中のパラメータは、サーバ全体、またはセクションで項目が定義していないときの既定値として適用されます。そのため、一般のセクションとは違い、globalという共有リソースが作成されたりはしません。

globalセクションの例
[global]
# Windowsネットワーク設定しているワークグループ名
workgroup = WORKGROUP
# ホスト一覧などの表示する際の名称
server string = Samba Server %v
# アクセス制限(許可する範囲)
hosts allow = 192.168.1. 127.
# プリンタ一覧を表示させる必要がある際は下記設定が必要
printcap name = /etc/printcap
load printers = yes
# 暗号化パスワードを使用するか設定
encrypt passwords = yes
# クライアントから受け取った文字列をどの文字コードに変換するかを指定
coding system = euc
# クライアントが利用しているDOSコードページ
client code page = 932

[homes] セクション

'homes'と呼ばれるセクションが設定ファイル中にあると、クライアントをそのホームディレクトリに接続します。

共有名は 'homes' から、登録されているユーザ名に変更されます。設定でパスが与えられていなければ、パスはユーザのホーム・ディレクトリに設定され ます。

もしも [homes] セクションで path= 行を使うのであれば、 %S マクロを使うのが便利です。

path=/data/pchome/%S

これは多数のクライアントにホーム・ディレクトリを提供する上で、最小の手間で簡単に早く実現する方法です。

自動で作成されるホームディレクトリの browseable フラグは、[global] の browseable フラグから継承され、[homes] の browseable フラグからは継承されません。 従って、[homes] セクション中で browseable=no とすると、 [homes] セクションは隠れますが、ホームディレクトリは可視になります。

[printers] セクション

このセクションは、プリンタ用です。

[printers] セクションが記述されていれば、ユーザは printcap ファイルに記述されたプリンタに接続可能となります。共有名が存在するプリンタ名に設定されます。サービスにゲストのアクセス許可がなく、クライアントからユーザ名が与えられていなければ、ユーザ名はプリンタの名前に設定され ます。

[printers] サービスは、プリント可能 (printable = yes) にする必要があります。

一般的な [printers] エントリは次のようになります。

[printers]
path = /usr/spool/public
writeable = no
guest ok = yes
printable = yes 

変数

設定ファイル中に、下記の変数を記述することができます。たとえば、オプション "path = /tmp/%u" は、ユーザがユーザ名「john」で接続したなら "path = /tmp/john" として解釈されます。

変数名 説明
%S 現在のサービス名。
%P 現在のサービスのルート・ディレクトリ。
%u 現在のサービスのユーザ名。
%g %u の本来 (primary) のグループ名。
%U セッションのユーザ名。
%G %U の本来 (primary) のグループ名。
%H %u で与えられたユーザのホームディレクトリ。
%v Sambaのバージョン。
%h Sambaが動作しているホストの名前。
%m クライアント・マシンのNetBIOS名。
%L サーバのNetBIOS名。
%M クライアント・マシンのインターネット名。
%N NISのホームディレクトリ・サーバ名。Sambaを --with-automount オプションなしでコンパイルしてあると、この値は %L と同じになる。
%p サーバのホームディレクトリのパス。
%R プロトコル・レベル。 CORE、COREPLUS、LANMAN1、LANMAN2、または NT1 のうち、いずれかの値を取る。
%d 現在のサーバ・プロセスのプロセス ID。
%a リモート・マシンのアーキテクチャ。 100% 確実ではなく、いくつかだけが認識される。現状では、Samba、WfWg、WinNT、Win95 のいずれかに認識される。それらでなければ「UNKNOWN」と識別される。
%I クライアント・マシンの IP アドレス。
%T 現在の日付と時刻。 

設定例

[global]セクションの設定

workgroup

Windows側と同じワークグループ名、もしくはドメイン名を記入します。

workgroup = GROUP_NAME

server string

ここで設定した値は、ブラウズリストでコンピュータ名の隣や、プリンタマネージャにおけるプリンタのコメント欄などに表示されます。

server string = Samba Server

hosts allow

このオプションはセキュリティ上重要です。この設定によって、ローカルネットワークにおけるマシンからの接続を制限 します。ホストの指定は、IPアドレスでもホスト名でも行うことができます。localhostのアドレスである 127.0.0.1 からのアクセスは、 hosts deny オプションで明示的に禁止しない限り、常にアクセスが許可されます。

hosts allow = 192.168.0. myhost.mynet.edu.au

上記のような指定以外に、いくつかの指定方法がサポートされています。

Ex1: 150.203.*.* 内の全てのIPアドレスを許可、ただし、150.203.6.66は例外
hosts allow = 150.203. EXCEPT 150.203.6.66
Ex2: 指定した network/netmask の範囲内のホストからのアクセスを許可する
hosts allow = 150.203.15.0/255.255.255.0

guest account

ゲストアカウントが必要な場合に設定します。nobody以外を使用する場合は、/etc/passwd にこのユーザを登録しておく必要があります。

guest account = nobody

log file

接続しているマシンごとに独立したログを残すことを指定します。

log file = /usr/local/samba/var/log.%m

max log size

ログファイルのサイズに上限をもうけています。

max log size = 50

ファイル名の短縮(NAME MANGLING)の設定

古いDOSなどは、ファイル名が8文字、拡張子が3文字までに制限(8.3形式)されていました。ウインドウズは互換のために、8.3形式の短いファイル名と、255バイトまでの長いファイル名をファイルシステム に保持しています。ところが、UNIXのファイルシステムは長いファイル名しか保持しないため、Sambaは8.3形式の短いファイル名を、クライアントのアクセス時に自動生成して返します。

ファイル名の8.3形式の問題以外にも、ファイル名の大文字・小文字の問題があります。ウインドウズはファイル名の大文字・小文字を区別しないので、たとえば同一ディレクトリにABCというファイルとabcというファイルを作成することはできません。ところが、UNIX系のOSは正確な大文字 ・小文字を区別するため、Sambaサーバで問題が起きないように設定する必要があります。

以下のオプションは、すべて共有毎に設定できますが、特別な理由がなければglobalセクションで設定します。

mangled names

このパラメータは、Sambaサーバ上のDOS非互換のファイル名を、DOS互換の名前に置き換えてアクセス可能にするか、無視するかどうかを制御します。ウインドウズで制作したファイルで大文字・小文字の区別をしたり、日本語を正しく表示させるためには、globalセクションに以下のエントリを追加します。

mangled names = yes

mangle case

このパラメータは、ウインドウズの長いファイル名に対応する短縮名を作ります。よほど古いウインドウズでなければ、mangle caseの値はnoです。

mangle case = no

short preserve case

8.3形式のファイル名を、そのまま使用する(yes)か、デフォルトの設定に従う(no)かを設定します。

short preserve case = yes

case sensitive

ファイル名の大文字と小文字を異なる文字として認識するかを設定します。

case sensitive = no

default case

新規ファイルを作成する際の、デフォルトファイル名を大文字(upper)にするか、小文字(lower)にするかを設定します。デフォルトは lower です。

default case = lower

日本語の問題

Sambaは、日本語ファイル名に対応しています。たとえば、UNIX側でEUCを使うシステムの場合、Sambaで日本語を使用するには以下のように設定します。

client code page

クライアントが利用しているDOSコードページを指定します。

client code page = 932

クライアントのコードページを調べるには、クライアントPCからコマンドプロンプトを開き、chcpコマンドを入力してください。ご利用のコードページが表示されます。

WindowsXPのコマンドプロンプト例
C:\***>chcp
現在のコード ページ: 932

coding system

 このパラメータは、client code page が 932(日本語 Shift-JIS)の時のみ有効です。クライアントから受け取った文字列をどの文字コードに変換するかを指定します。SambaサーバがLinux形であればだいたいeuc、OS Xはutf8です。

coding system = euc

※漢字コードの指定は、必ずUNIX OSの設定に合わせます。OSの文字コード設定がEUCであれば、coding systemもEUCにします。日本語に対応していないOSを使用するときは、coding system=hexかcapに設定すると良いでしょう(capにすると、マッキントッシュとのファイル共有が可能になります) 。

socket options

ほとんどの場合、このオプションを設定することで、より良い性能を得ることができるでしょう。

socket options = TCP_NODELAY 

ユーザ認証用の設定

WindowsNTは平文パスワード(plain text password)とDES暗号化パスワード(encrypt password)の両方で認証することができますが、Sambaはどちらか一方でしか認証できません。よほど古いウインドウズでなければ、 暗号化パスワードが使われますので、Sambaサーバが解読できるように、DESを利用しているクライアントの設定を変更するか、SambaサーバをDES化する必要があります。ここでは、SambaをDES化するための設定を紹介します。

encrypt passwords

暗号化パスワードを有効化します。

encrypt passwords = yes

smb passwd file

パスワードファイルの場所を指定します。

smb passwd file = /etc/smbpasswd

password level

このパラメータの値を大きくするほど、 大文字と小文字の混在したパスワードが大文字あるいは小文字のみのパスワードと一致するようになります。

password level = 0

username level

大文字・小文字が混在したUNIXユーザ名の扱いを設定します。

username level = 0

Windowsネットワークログインのサポート

security

PC上でSambaサーバと同じユーザ名を使う場合は、パラメータ値をuserにします。

security = user

local master

Sambaをネットワークにおけるマスタブラウザにするかどうかを設定します。

local master = yes

domain master

Samba にドメインマスタブラウザとなるように指示します。これによって、Samba はサブネット間のブラウズリストの照合を行なうようになります。Windows NT ドメインコントローラが既に存在する場合は、このオプションを使用しないでください。

# domain master = yes

domain logons

クライアントに対するドメインログオンサーバにするかどうかを設定します。

domain logons = yes

wins support

nmbdコンポーネントの、WINSサーバ機能を有効化するかどうかを設定します。

wins support = yes
このエントリーをはてなブックマークに追加

Jump to the top