※代表的なターミナルエミュレータ
yumからパッケージインストールを実行します。
$ sudo yum install mysql-server
下記確認が出るので、インストール内容を確認し”y”を入力してください。
Is this ok [y/N]: y
インストールが始まり、下記ログ出力が確認出来れば完了です。
Complete!
MySQLサーバのインストールによって、mysqldとしてサービスに登録されているので、下記、コマンドにてプロセスが起動します。
$ sudo service mysqld start
下記、出力が確認出来れば問題なく、起動しています。※初回起動時は紹介文も出力されます。
MySQL を起動中: [ OK ]
サーバ起動時に自動起動するサービスとして登録します。
$ sudo chkconfig mysqld on
自動起動が有効(ランレベル2,3,4,5でON)となっている事を確認します。
$ chkconfig --list | grep mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
MySQLサーバインストール時に作成される”my.cnf”をバックアップしておきます。
$ sudo cp -p /etc/my.cnf /etc/my.cnf.org
各テンプレートファイル一覧
$ ls /usr/share/mysql/my-* /usr/share/mysql/my-huge.cnf /usr/share/mysql/my-medium.cnf /usr/share/mysql/my-innodb-heavy-4G.cnf /usr/share/mysql/my-small.cnf /usr/share/mysql/my-large.cnf
設定ファイルテンプレートでmy.cnfを上書きします。
テンプレートは、下記のプラン別推奨テンプレート一覧を参考にし、ご契約プランに合ったものをご利用下さい。
$ sudo cp -p /usr/share/mysql/my-[下記より選択].cf /etc/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 cp -p /usr/share/mysql/my-medium.cnf /etc/my.cnf
上記組み合わせ以外でも、サーバ規模によりカスタム可能です。
ここでは設定ファイルテンプレートにmy-medium.cfを利用した場合で説明していますが
各テンプレート共通の設定を載せています。
MySQL設定ファイルを編集します。
$ sudo vi /etc/my.cnf
... [mysqld] port = 3306 socket = /var/lib/mysql/mysql.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/lib/mysql/mysql.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/my.cnf
下記の追記を行うと、クライアントの文字コードに関係なく、サーバ側の設定(UTF-8)を適用します。
... [mysqld] port = 3306 socket = /var/lib/mysql/mysql.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/lib/mysql/mysql.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 mysqld restart
インストール直後のMySQLデータベースにはログインパスワードが設定されていません。
MySQLデータベースのmysqlユーザ用ログインパスワードは下記手順に従って設定します。
なお、既存のパスワード変更についても同手順で可能です。
サービスコマンドで”実行中”となっている事を確認します。
$ sudo service mysqld status mysqld (pid 4189) を実行中...
MySQLデータベースにrootユーザでログインします。
$ mysql -u root
| -u | ユーザ指定オプション |
下記の様に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
| -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/mysqld.log
my.cnfに”log-error = “を追加することによって、任意のパスにログ出力が可能です。
... [mysqld] port = 3306 socket = /var/lib/mysql/mysql.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 [mysqldump] quick max_allowed_packet = 16M ...
ログ出力パスを変更した場合は、ディレクトリの作成および、パーミッションの設定を忘れずに実施してください。
$ sudo mkdir /var/log/mysql $ sudo chown -R mysql:mysql /var/log/mysql
また、my.cnfに”log = “と”log-slow-queries = “を追記することによって、ログ出力を強化することができます。
... [mysqld] port = 3306 socket = /var/lib/mysql/mysql.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-error.log | mysqld起動時のログ |
| log = /var/log/mysql/mysql.log | 一般ログ(MySQLデータベースログインログなど) |
| log-slow-queries = /var/log/mysql/slow.log | クエリログ |
$ sudo service mysqld restart
$ service mysqld status
$ sudo service mysqld start
$ sudo service mysqld stop
$ sudo service mysqld restart