end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

mysql v.8.0.16 を centos 7 にsrcから install

一体、何回目でしょうか? また、何度もこういったentryを記載しているのは、 mysqlにおけるversion毎の差異も原因かと思います。

https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

dev.mysql.comに↑こちらのdocumentが公開されていますが、 私にはあまり役に立ちませんでした。

$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16.tar.gz

# 当初、centos7にyum install cmake しましたが、
# mysql v.8.0.16 には古いようなので、以下の3行のように devtoolset-7 を利用。

$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-7
$ scl enable devtoolset-7 bash

# mysqlの依存packageをinstall

$ sudo yum install openssl-devel
$ sudo yum install ncurses-devel


$ tar -xvf mysql-8.0.16.tar.gz
$ /usr/local/bin/cmake . \
   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
   -DDEFAULT_CHARSET=utf8 \
   -DDEFAULT_COLLATION=utf8_general_ci \
   -DENABLED_LOCAL_INFILE=true \
   -DWITH_INNOBASE_STORAGE_ENGINE=1 \
   -DWITH_EXTRA_CHARSETS=all \
   -DWITH_READLINE=ON \
   -DDOWNLOAD_BOOST=ON \
   -DWITH_BOOST=/home/end0tknr/tmp/boost \
   -DFORCE_INSOURCE_BUILD=1 \
   -DWITH_SYSTEMD=ON
$ make
$ make test
$ sudo make install
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql

https://end0tknr.hateblo.jp/entry/20160819/1471562683

my.cnf の内容は、以前のentryを参考にしています。

特に通常のinstallでは、rootでのログイン時に

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

と怒られ、ログインできませんでしたので、「skip-grant-tables」を追加しています。

(rootの初期パスワードは、/var/log/mysql.log に表示されるらしいのですが、 私の環境では表示されませんでしたので)

$ sudo vi /etc/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
max_allowed_packet = 32M
innodb_log_file_size = 128MB
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
basedir = /usr/local/mysql
datadir = /var/mysql_data

skip-grant-tables

default_password_lifetime=0
validate_password.policy=LOW

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
$ sudo mkdir /var/mysql_data
$ sudo chown mysql:mysql /var/mysql_data
$ sudo chmod 750 /var/mysql_data

$ sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql

$ sudo /usr/local/mysql/bin/mysql_ssl_rsa_setup
$ sudo  /usr/local/mysql/bin/mysqld  --initialize-insecure
$ sudo  /usr/local/mysql/bin/mysql_secure_installation

自動起動

$ sudo cp /home/end0tknr/tmp/mysql-8.0.16/scripts/mysqld.service \
    /etc/systemd/system/
$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service