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

前提条件

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

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

Teraterm Poderosa

MySQLサーバのインストール

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

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

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

Do you want to continue [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.42 Distrib 5.1.37, for debian-linux-gnu on x86_64
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
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.1.37-1ubuntu5.1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 26 sec

Threads: 1  Questions: 312  Slow queries: 0  Opens: 285  Flush tables: 2  Open tables: 23  Queries per second avg: 12.0


自動起動設定

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


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

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

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

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

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

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

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

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

$ sudo gunzip /usr/share/doc/mysql-server-5.1/examples/my-[下記より選択].cnf.gz
$ sudo cp -p /usr/share/doc/mysql-server-5.1/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.1/examples/my-medium.cnf.gz
$ sudo cp -p /usr/share/doc/mysql-server-5.1/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

php5-mysql設定

PHPとMySQLを連携させるためaptからパッケージインストールします。

PHP+MySQLは各種CMS等のインストールに求められます。

$ sudo apt-get install php5-mysql

インストール完了後、apache2を再起動します。

$ sudo service apache2 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/ubuntu/howto_mysqld.txt · 最終更新: 2010/03/19 16:17 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