Help us understand the problem. What is going on with this article?

AWSのMySQL初期セットアップ

More than 1 year has passed since last update.

はじめに

最初からAWSにインストールされているmysqlの設定を行うもの。

対象

・mysqlをセットアップしたい人

MySQLセットアップ手順

MySQLを利用する前の初期セットアップ手順を書き記します。

MySQLサーバーを起動する

最初はMySQLサービスが起動していないためサービスを起動する必要があります。

$ sudo service mysqld start
Starting mysqld:                                           [  OK  ]

MySQLにrootユーザーでログインする

最初は自分で作成したユーザーが存在しないためスーパーユーザーであるrootユーザーでログインします。

$ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.59 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

データベースを作成する

今回はstudywebappという名のデータベースを作成していきます。

mysql> create database studywebapp;
Query OK, 1 row affected (0.00 sec)

ユーザーを作成する

ここではユーザー名:default_userを作成していきます。
パスワードはxxxxxの部分をご自身のパスワードに置き換えて設定してください。
他サーバーに接続することがないのであれば、サーバーはlocalhostで問題ありません。

mysql> create user default_user@localhost identified by 'xxxxx';
Query OK, 0 rows affected (0.00 sec)

ユーザーに権限を付与する

作成したユーザーにstudywebappデータベースに参照・更新・削除など全ての動作が実行できる権限を与えます。

mysql> grant all on studywebapp.* to default_user@localhost identified by 'xxxxx';
Query OK, 0 rows affected (0.00 sec)

作成したユーザーで、データベースにアクセス

一旦mysqlを終了して、作成したdefault_userユーザーでstudywebappデータベースにアクセスします。

$ mysql -u default_user -p -D studywebapp
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.59 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

パスワードを入力してmysql>が表示されていたら設定完了です。

番外編:文字コードをUTF-8にする

デフォルトだと一部の項目に文字コードUTF-8が設定されていないため、個別で設定する必要があります。

現在設定されている文字コードを確認する

では、現在設定されている文字コードを確認していきましょう。
自分で作成したユーザーでログインをして確かめて下さい。

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

今回は以下の項目がUTF-8に設定されていないため、個別で設定していきます。

  • character_set_database:現在参照しているデータベースの文字コード
  • character_set_server:データベース作成時のデフォルト文字コード

先ほど作成したデータベースstudywebappは、データベース作成時のデフォルト文字コードがUTF-8に設定されていないため、文字コードlatin1に設定されてしまっていることが分かります。

作成したデータベースの文字コードを変更する

既に作成しているデータベースの文字コードを設定していきましょう。

mysql> ALTER DATABASE studywebapp default character set utf8;
Query OK, 1 row affected (0.00 sec)

サーバーの設定を行う

では、一旦MySQLをログアウトしてターミナルに戻って下さい。
viで/etc/my.cnfファイルを開き設定をしていきます。

$ sudo vi /etc/my.cnf                                                                                                                                                                                         
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
character-set-server=utf8 # 追加

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client] #追加
default-character-set=utf8 #追加

MySQLサービスを再起動する

設定ファイル/etc/my.cnfを変更したときは、設定を反映するために必ず再起動が必要となります。

$ sudo service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

文字コードを再確認する

再度、MySQLにログインして文字コードを確認してみましょう。

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

全てUTF-8に設定されていれば完了です!!

最後に・・・

MySQLの設定は頻繁に実施することではないので忘れがちになってしまいますが、またMySQLの設定を実施するときが来たら本記事を思い出してみて下さい!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away