tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【mysql】mysql5.5を使う - ② - 初期設定

はじめに

mysqlのインストールメモ。
何度もやってるし前も書いてるんですが 入れる一連を改めて書いておこうと思い立っただけのメモの②で初期設定

yumrpmでのインストールはこちらも参考に。
mysqlをyum、rpm、ソースでそれぞれインストール(5.1と5.5)

アジェンダ

  1. my.cnfを用意する
  2. mysqlの設定(my.cnfの編集)
  3. mysql自動起動の設定
  4. mysqlの起動
  5. mysqlのセキュリティ設定
  6. pathの追加

1. my.cnfを用意する

my.cnfについては別記事で補足してるのでそちらを参考に
【mysql】mysql5.5を使う - ②-2 - my.cnfの種類と読み込み順序

今回はMySQLメインサーバというわけではないので、my-medium.cnfを使います。

※ 所有権とかも変えたくないので-apオプションでコピー
$ sudo cp -ap /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

2. mysqlの設定(my.cnfの編集)

設定は主に下記について変更します

InnoDBについて

# Uncomment the following if you are using InnoDB tablesと書かれた行の下からがInnoDBの設定になります。

$ sudo vi /etc/my.cnf
中身

InnoDBについてはデフォルトコメントアウトされるのでこんな感じにしました

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 512M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 128M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
補足

innodb_buffer_pool_sizeinnodb_log_file_sizeの設定値としてはこちらも参考になります
MySQLの「innodb_buffer_pool_size」と「innodb_log_file_size」の設定

文字コードの設定

日本語も扱うでしょうからやっておいたほうがいいですね。

$ sudo vi /etc/my.cnf
中身

文字コードついては[client]などのグループ指定の後にそれぞれこんな感じで追記しました

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

3. mysql自動起動の設定

※ 自動起動スクリプト場所にコピー
$ sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/.

※ 設定
$ sudo chkconfig --add mysql.server

※ 確認
$ chkconfig --list mysql.server
mysql.server    0:off 1:off 2:on  3:on  4:on  5:on  6:off

4. mysqlの起動

mysqlを起動して入ってみます

※ 起動
$ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
[1] 26162
150611 02:14:32 mysqld_safe Logging to '/usr/local/mysql/data/tk2-223-21094.vs.sakura.ne.jp.err'.
150611 02:14:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

※ 入ってみる
$ /usr/local/mysql/bin/mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.44-log MySQL Community Server (GPL)

mysql> 

5. mysqlのセキュリティ設定

mysql_secure_installationでセキュリティ設定をします。

たとえばですが今の状態でユーザを見てみると、
rootのパスワードが設定されていなかったり、userが空欄の匿名ユーザがいることがわかるかと思います。

mysql> select user, password, host from mysql.user;
+------+----------+-------------------------------+
| user | password | host                          |
+------+----------+-------------------------------+
| root |          | localhost                     |
| root |          | hogehogehoge.ne.jp            |
| root |          | 127.0.0.1                     |
| root |          | ::1                           |
|      |          | localhost                     | ← 匿名ユーザ
|      |          | hogehogehoge.ne.jp            | ← 匿名ユーザ
+------+----------+-------------------------------+
6 rows in set (0.00 sec)

mysql_secure_installationでは いろいろ聞かれますが主に下記を行います。

  • rootユーザのパスワード設定
  • 匿名ユーザを削除
  • localhost接続のみ許可(リモートからのrootアクセスを禁止)
  • testデータベース削除
※ rootユーザになっておこなう
$ sudo su

※ スクリプトを実行
$ /usr/local/mysql/bin/mysql_secure_installation
---- 入力 ----
※ 何も入力せずEnter
Enter current password for root (enter for none): 

※ 新しいrootパスワードを設定するのでYを入力
Set root password? [Y/n] 

※ 新しいrootパスワードを設定
New password: 

※ 歳入力
Re-enter new password: 

※ 匿名ユーザを削除するのでYを入力
Remove anonymous users? [Y/n] 

※ リモートからのrootアクセスを禁止
Disallow root login remotely? [Y/n] 

※ testデータベース削除
Remove test database and access to it? [Y/n] 

※ 設定をすぐ反映するか、なのでYを入力
Reload privilege tables now? [Y/n] 
--------------
補足

mysql_secure_installationの実行時にこんなエラーになることがあります

$ /usr/local/mysql/bin/mysql_secure_installation 
Can't find a 'mysql' client in PATH or ./bin

その際はパスを通すか、実行前にexportしてからやってみましょう

$ export PATH=/usr/local/mysql/bin
確認

再度ユーザを見てみます。

rootユーザのパスワードの設定がうまくいってない場合は空白になってるので
mysqlにはいった状態で設定します。

mysql> select user, password, host from mysql.user;
+------+----------+-----------+
| user | password | host      |
+------+----------+-----------+
| root |          | localhost |
| root |          | 127.0.0.1 |
| root |          | ::1       |
+------+----------+-----------+
3 rows in set (0.00 sec)

※ パスワードを設定
mysql> UPDATE mysql.user SET Password=PASSWORD('あたらしいパスワード') WHERE User='root';

※ 即反映
mysql> FLUSH PRIVILEGES;

いちど出てユーザ名rootのみではいってみます

$ /usr/local/mysql/bin/mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

※ これで入れる
$ /usr/local/mysql/bin/mysql -uroot -p

※ 暗号化された状態でパスワードが入っている
mysql> select user, password, host from mysql.user;
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | localhost |
| root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | 127.0.0.1 |
| root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | ::1       |
+------+-------------------------------------------+-----------+
3 rows in set (0.00 sec)

と、こんな感じで基本的な設定できました。

6. pathの追加

/usr/local/mysql/bin/mysql -uroot -pと毎回打つのは面倒なのでパスを追加します

$ vi ~/.bashrc
---- vi追記 ----
export PATH=/usr/local/mysql/bin
---------------

参考

こちらはけっこー参考にさせて抱きました!thx!
誰でも簡単!MySQLのインストールと初期設定(初期設定編)

おわり

設定らへんは何度もやることではないですが、my.cnfの調整は運用していくと触ることも多いと思うのですこしずつでも覚えたいですね!
enjoy\(^o^)/