MySQLサーバセットアップ(mysqld)

前提条件

  • 以下の手順はDebian5.0.4 にMySQL Serverをインストールする場合の手順となります。他のサーバにインストールする場合は設定が異なる場合があります。
  • 以下の手順はmysql-server-5.0を用いて説明しています。バージョンにより内容が異なる場合がありますがご了承ください。
  • インストールにはターミナルエミュレータを利用しています。ターミナルエミュレータについてはご自身でご用意ください。
  • 弊社ではMySQL Serverに関するサポートは行っておりません。MySQL Serverに関するご質問についてはお答えできません。

※代表的なターミナルエミュレータ

Teraterm Poderosa

MySQLサーバのインストール

apt-getからパッケージインストールを実行します。

$ sudo apt-get install mysql-server mysql-common

下記確認が出るので、インストール内容を確認し”y”を入力してください。

  Is this ok [y/N]: y

インストール途中でパスワード設定画面に切り替わります。

New password for the MySQL “root” user:rootユーザでのMySQLログインパスワードを任意で指定します。
Repeat password for the MySQL “root” user:パスワードを再入力します。

入力後、インストールが再開しエラーなく終了すれば完了です。


MySQLサーバの起動

MySQLサーバのインストールによって、mysqlとしてサービスに登録されています。

インストール完了と同時にMySQLサーバが起動しているので確認します。

$ sudo service mysql status

下記出力が確認出来れば問題なく、起動しています。

/usr/bin/mysqladmin  Ver 8.41 Distrib 5.0.51a, for debian-linux-gnu on x86_64
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.51a-24+lenny2+spu1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 10 min 32 sec

Threads: 1  Questions: 220  Slow queries: 0  Opens: 132  Flush tables: 2  Open tables: 0  Queries per second avg: 0.348.


自動起動設定

apt-getからのインストール時に自動起動は有効になります。

自動起動が有効(ランレベル2,3,4,5でON)となっている事を確認します。

$ sysv-rc-conf --list | grep mysql
mysql        0:off      1:off   2:on    3:on    4:on    5:on    6:off
mysql-ndb    0:off      1:off   2:on    3:on    4:on    5:on    6:off
mysql-ndb-mg 0:off      1:off   2:on    3:on    4:on    5:on    6:off


my.cnfのテンプレート設定

MySQLサーバインストール時に作成される”my.cnf”をバックアップしておきます。

$ sudo cp -p /etc/mysql/my.cnf /etc/mysql/my.cnf.org

各テンプレートファイル一覧

$ ls /usr/share/doc/mysql-server-5.0/examples/my-*
/usr/share/doc/mysql-server-5.0/examples/my-huge.cnf.gz
/usr/share/doc/mysql-server-5.0/examples/my-innodb-heavy-4G.cnf.gz
/usr/share/doc/mysql-server-5.0/examples/my-large.cnf.gz
/usr/share/doc/mysql-server-5.0/examples/my-medium.cnf.gz
/usr/share/doc/mysql-server-5.0/examples/my-small.cnf

※テンプレートは圧縮されているため解凍して使用します。

設定ファイルテンプレートでmy.cnfを上書きします。

テンプレートは、下記のプラン別推奨テンプレート一覧を参考にし、ご契約プランに合ったものをご利用下さい。

$ sudo gunzip /usr/share/doc/mysql-server-5.0/examples/my-[下記より選択].cnf.gz
$ sudo cp -p /usr/share/doc/mysql-server-5.0/examples/my-[下記より選択].cnf /etc/mysql/my.cnf

プラン別推奨テンプレート一覧

ZLV-256my-small.cnf or my-medium.cnf
ZLV-512my-medium.cnf or my-large.cnf
ZLV-768my-large.cnf
ZLV-1024 and ZLV-2048my-huge.cnf

※my-innodb-heavy-4G.cnfについては、当マニュアルでは言及致しません。

コマンド例(ZLV-512をご契約の場合のテンプレートの適用例)

$ sudo gunzip /usr/share/doc/mysql-server-5.0/examples/my-medium.cnf.gz
$ sudo cp -p /usr/share/doc/mysql-server-5.0/examples/my-medium.cnf /etc/mysql/my.cnf

上記組み合わせ以外でも、サーバ規模によりカスタム可能です。


my.cnfの設定

ここでは設定ファイルテンプレートにmy-medium.cnfを利用した場合で説明していますが

各テンプレート共通の設定を載せています。

文字コード設定の追加(UTF-8)

MySQL設定ファイルを編集します。

$ sudo vi /etc/mysql/my.cnf
  • [mysqld]
...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M
...

以下のように”default-character-set=utf8”を追記します。

...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
default-character-set=utf8

[mysqldump]
quick
max_allowed_packet = 16M
...

(任意)MySQLクライアントの文字コードを固定する

MySQL設定ファイルを編集します。

$ sudo vi /etc/mysql/my.cnf
  • [mysqld]

下記の追記を行うと、クライアントの文字コードに関係なく、サーバ側の設定(UTF-8)を適用します。

...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
default-character-set=utf8

[mysqldump]
quick
max_allowed_packet = 16M
...

以下のように”skip-character-set-client-handshake”追記します。

...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
default-character-set=utf8
skip-character-set-client-handshake

[mysqldump]
quick
max_allowed_packet = 16M
...


/etc/mysql/my.cnfの変更を反映させるにはmysqldの再起動が必要です。下記コマンドを実行し、mysqldを再起動してください。

$ sudo service mysql restart

MySQLパスワード変更手順

MySQLデータベースのmysqlユーザ用ログインパスワードは下記手順に従って設定します。

なお、既存のパスワード変更についても同手順で可能です。

  • MySQLパスワード設定手順

MySQLデータベースにrootユーザでログインします。

$ mysql -u root -p
Enter password:<インストール時に指定したパスワード>
-uユーザ指定オプション
-pパスワード使用オプション

下記の様にmysqlプロンプトへ遷移します。

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

パスワード設定(変更)コマンドを実行します。

mysql> SET PASSWORD FOR <ユーザ名>@<ホスト名>=password('<新規パスワード>');

コマンド実行例(rootユーザにパスワード”rootpass”を設定)

mysql> SET PASSWORD FOR root@localhost=password('rootpass');

ホスト名は自サーバのMySQLサーバに接続している為、localhostとなります。

コマンド実行後、下記出力が確認出来れば設定できています。

Query OK, 0 rows affected (0.03 sec)

一度ログアウトして、再度ログインを試みます。

mysql> \q
Bye
$ mysql -u root
\qmysqlプロンプト終了コマンド

パスワード使用が有効になっている場合、下記のような出力が確認出来ます。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

パスワードオプションを使用して、MySQLデータベースにログインします。

設定したパスワードでログイン出来るか確認します。

$ mysql -u root -p
Enter password:<指定パスワード>

ログイン出来れば成功です。

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


MySQLユーザ追加

  • MySQLユーザ作成手順

rootユーザにてMySQLデータベースへログインします。

$ mysql -u root -p
...
mysql> 

ユーザ作成コマンドを実行します。

GRANT <許可権限> ON *.* TO <ユーザ名> IDENTIFIED BY '<任意のパスワード>' WITH GRANT OPTION;
<許可権限>許可するSQL操作をカンマ区切りで指定
<ユーザ名>MySQLユーザとして追加するユーザ名を指定
<任意のパスワード>追加するユーザに対しての任意のパスワードを指定

コマンド例(ユーザ:test,パス:testtestにINSERT,SELECT文のみ許可)

mysql> GRANT INSERT,SELECT ON *.* TO test IDENTIFIED BY 'testtest' ;
Query OK, 0 rows affected (0.03 sec)

コマンド例(ユーザ:test,パス:testtestに全権限・権限書き換え許可)

mysql> GRANT ALL PRIVILEGES ON *.* TO test IDENTIFIED BY 'testtest' WITH GRANT OPTION;
ALL PRIVILEGES全ての権限を許可
WITH GRANT OPTION権限の書き換えを許可

追加したユーザへのパスワード設定も忘れずに行ってください。


ログの出力

デフォルトのMySQLデーモンのログの出力先は下記のパスとなります。

/var/log/mysql.log

my.cnfに”log-error = “を追加することによって、任意のパスにログ出力が可能です。

...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
default-character-set=utf8
log-error=/var/log/mysql/mysql.err

[mysqldump]
quick
max_allowed_packet = 16M
...

ログ出力パスを変更した場合は、ディレクトリの作成および、パーミッションの設定を忘れずに実施してください。

また、my.cnfに”log = “と”log-slow-queries = “を追記することによって、ログ出力を強化することができます。

...
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
...
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
default-character-set=utf8
log-error=/var/log/mysql/mysqld-error.log
log = /var/log/mysql/mysql.log
log-slow-queries = /var/log/mysql/slow.log

[mysqldump]
quick
max_allowed_packet = 16M
...

ここでの、ログの設定は下記の通りです。

log-error=/var/log/mysql/mysqld.errmysqld起動時のログ
log = /var/log/mysql.log一般ログ(MySQLデータベースログインログなど)
log-slow-queries = /var/log/mysql/slow.logクエリログ

/etc/mysql/my.cnfの変更を反映させるにはmysqldの再起動が必要です。下記コマンドを実行し、mysqldを再起動してください。

$ sudo service mysql restart

mysqldの操作方法

  • 状態確認
$ service mysql status
  • 起動
$ sudo service mysql start
  • 停止
$ sudo service mysql stop
  • 再起動
$ sudo service mysql restart

参考リンク

/home/vps.netcube.ne.jp/public_html/wiki/data/pages/debian/howto_mysqld.txt · 最終更新: 2010/03/18 18:12 by admin
ZoneExpress VPS NEO Boot OpenSolaris Creative Commons License Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0