Database JUNKY

MySQL,MariaDBを中心としたブログです

最速! mysql5.7 インストール手順

MySQL5.7のインストール

しばらくMariaDBに使っていたので、MySQL 5.7のインストール方法について、すっかり忘れてしまったので、備忘録代わりに書きます。その過程でエラーおよびワーニングが発生ししたものに関しては、1つずつ、my.cnfを修正して、結果エラーはZEROになりましたので、最後に出てくるmy.cnfはまるっとコピペしても大丈かと思います。 また、今回、centos6系でインストールを実施しましたが、32BITも、64BITも同様の手順で行えます。

f:id:hit10231023:20180309104332j:plain

インストール

rpm --import http://dev.mysql.com/doc/refman/5.7/en/checking-gpg-signature.html
rpm -ihv http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
yum --enablerepo='mysql57-community*' install  mysql-community-server mysql-community-common mysql-community-devel mysql-community-embedded mysql-community-libs
/etc/init.d/mysqld start                         
----------------------------------------------------------------------------------------------
mysqld を起動中:                                           [  OK  ]

必要があれば、MySQLのデータディレクトリの初期化

mysqld --initialize
chown -Rf mysql:mysql mysql/ 

初期パスワードを確認する

cat /var/log/mysqld.log | grep "temporary password"
----------------------------------------------------------------------------------------------
2016-12-20T01:04:30.285707Z 1 [Note] A temporary password is generated for root@localhost: 5NlWj;(+5a(y

SSLキーを発行する

ぶっちゃけ、これが何に役立つかわかってないですが、起動時にワーニングがでるので設定しておきます ログファイルに以下の感じのものが出ておりましたら、対応しておいたほうがいいです(適当

2016-12-20T02:26:29.581960Z 0 [Warning] CA certificate ca.pem is self signed.

SSLキーを生成する

cd /var/lib/mysql ; mysql_ssl_rsa_setup; chown mysql:mysql *.pem
ll *.pem
-------------------------------------------------------------------------------------
-rw------- 1 mysql mysql 1675 12月 20 11:23 2016 ca-key.pem
-rw-r--r-- 1 mysql mysql 1074 12月 20 11:23 2016 ca.pem
-rw-r--r-- 1 mysql mysql 1078 12月 20 11:23 2016 client-cert.pem
-rw------- 1 mysql mysql 1679 12月 20 11:23 2016 client-key.pem
-rw------- 1 mysql mysql 1679 12月 20 11:23 2016 private_key.pem
-rw-r--r-- 1 mysql mysql  451 12月 20 11:23 2016 public_key.pem
-rw-r--r-- 1 mysql mysql 1078 12月 20 11:23 2016 server-cert.pem
-rw------- 1 mysql mysql 1679 12月 20 11:23 2016 server-key.pem

my.cnf に以下の値を入力する

初回ログインする

mysql -uroot -p
パスワードは、上記の5NlWj;(+5a(yを入力する

パスワードの変更

とりあえず、複雑なパスワードを求められるので、複雑なパスワードを入れてくださいw

SET password for root@localhost=password('@a@1@2@3@4@55azA@');

my.cnfの編集

一概にこれが正解ってわけでもないのですが、私の場合、こんな感じにしております こちらは環境にあわせて適宜変更するのが、よろしかと思います。

my.cnf

[root@gate mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# データディレクトリにシンボリックの利用を許可する
# (セキュリティリスクあり) 0: 許可しない 1:許可する
symbolic-links=1

server-id = 100001128
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
wait_timeout=28800
log-bin-trust-function-creators=1
# log_bin_trust_function_creators 
# ストアドファンクションおよびトリガー作成に対して 
# MySQL がどのように制限を適用するかに影響します。

port = 3306
socket = /var/lib/mysql/mysql.sock

# IGNORE_SPACE
#   ファンクション名と後続の括弧間に余白が存在
#   してはいけないという要求を緩和
# PIPES_AS_CONCAT
#   文字列結合に||が利用できる
# NO_AUTO_CREATE_USER
#   パスワード無しでのユーザー作成不可
sql_mode = 'IGNORE_SPACE,PIPES_AS_CONCAT,NO_AUTO_CREATE_USER'

# SSLの設定
# 下記コマンドを入力してSSLキーを作成する
# cd /var/lib/mysql ; mysql_ssl_rsa_setup; chown mysql:mysql *.pem
ssl-ca=/var/lib/mysql/ca-key.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
lower_case_table_names=1
max_connections = 10000 
max_connect_errors = 10
table_open_cache = 15000
max_allowed_packet = 64M
binlog_cache_size = 128M
max_heap_table_size = 100M
read_buffer_size = 128M
read_buffer_size = 128M
read_rnd_buffer_size = 2M
sort_buffer_size = 2M
join_buffer_size = 128
thread_cache_size = 8000 
max_heap_table_size = 204857600
query_cache_size = 128M
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 200M
log-bin=mysql-bin
log-bin-index=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin
expire_logs_days = 7
binlog_format=mixed

explicit_defaults_for_timestamp = true
# explicit_defaults_for_timestamp
# 0の場合、
# timestamp 型に明示的にデフォルト値を設定しない
# (暗黙的なデフォルト値が設定される)ということ。

log_error_verbosity=2
# -- log_error_verbosity --
# Verbosity Value       
# 1 Errors only
# 2 Errors and warnings
# 3 Errors, warnings, and notes

slow_query_log
long_query_time = 1.5 
innodb_buffer_pool_size = 256M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_per_table
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

ログを確認する

ここまでやれば、エラーおよびワーニングは出ていないと思うけど、念のため確認しておきましょう /var/log/mysql