※代表的なターミナルエミュレータ
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サーバが起動しているので確認します。
$ 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
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-256 | my-small.cnf or my-medium.cnf |
| ZLV-512 | my-medium.cnf or my-large.cnf |
| ZLV-768 | my-large.cnf |
| ZLV-1024 and ZLV-2048 | my-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-medium.cnfを利用した場合で説明していますが
各テンプレート共通の設定を載せています。
MySQL設定ファイルを編集します。
$ sudo vi /etc/mysql/my.cnf
... [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設定ファイルを編集します。
$ sudo vi /etc/mysql/my.cnf
下記の追記を行うと、クライアントの文字コードに関係なく、サーバ側の設定(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 ...
$ sudo service mysql restart
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
| \q | mysqlプロンプト終了コマンド |
パスワード使用が有効になっている場合、下記のような出力が確認出来ます。
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>
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.err | mysqld起動時のログ |
| log = /var/log/mysql.log | 一般ログ(MySQLデータベースログインログなど) |
| log-slow-queries = /var/log/mysql/slow.log | クエリログ |
$ sudo service mysql restart
$ service mysql status
$ sudo service mysql start
$ sudo service mysql stop
$ sudo service mysql restart