LoginSignup
0
1

More than 5 years have passed since last update.

Ubuntu 18.10でMySQL 8.0.13 コンパイル

Posted at

ソースコードダウンロード

Select Operating SystemでSource Codeを選択して
Generic Linux (Architecture Independent), Compressed TAR Archive Includes Boost Headers (mysql-boost-8.0.13.tar.gz)
をダウンロード

コンパイル

以下の環境でコンパイルしてます.パスとかは適当に置き換えてください.

version
gcc 8.2.0
CMake 3.13.2
ncurses 6.1
libssl-dev 1.1.1-1ubuntu2.1 amd64
cd ~/work/
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.13.tar.gz
tar zxvf mysql-boost-8.0.13.tar.gz
cd mysql-8.0.13

cmake . -DCMAKE_INSTALL_PREFIX=${HOME}/mysql_work \
-DWITH_BOOST=./boost \
-DMYSQL_DATADIR=${HOME}/mysql_work/data \
-DMYSQL_UNIX_ADDR=${HOME}/mysql_work/mysql.sock \
-DSYSCONFDIR=/etc \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_C_FLAGS_RELWITHDEBINFO="-O2 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g" \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_ja_0900_as_cs

make
make install

初期化作業

my.cnfを/etc/にコピー

my.cnf
[client]
default-character-set=utf8mb4
port=3306
socket=${HOME}/mysql_work/mysql.sock

[mysql]
default-character-set=utf8mb4

[mysqld]
#init_connect='SET collation_connection = utf8mb4_ja_0900_as_cs'
#init_connect='SET NAMES utf8mb4'
datadir=${HOME}/mysql_work/data
socket=${HOME}/mysql_work/mysql.sock
user=myuser

# database settings
port=3306
log-bin=${HOME}/mysql_work/log/mysql-bin
binlog_expire_logs_seconds=86400
log_timestamps=SYSTEM

default-storage-engine=InnoDB
max_connections=64
tmp_table_size=34M
thread_cache_size=8
sort_buffer_size=256K

sql_mode='TRADITIONAL,ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO'
secure-file-priv=''

default_authentication_plugin=mysql_native_password
character_set_server=utf8mb4
collation-server=utf8mb4_ja_0900_as_cs

skip-character-set-client-handshake

# *** MyISAM options ***
myisam_max_sort_file_size=512M
myisam_sort_buffer_size=1M
key_buffer_size=16K
read_buffer_size=8K
read_rnd_buffer_size=4K

# *** InnoDB options ***
innodb_open_files=1000
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=2G
innodb_thread_concurrency=10
innodb_file_per_table

[mysqld_safe]
log-error=${HOME}/mysql_work/log/mysqld.log
pid-file=${HOME}/mysql_work/run/mysqld.pid

データディレクトリ初期化

mkdir ${HOME}/mysql_work/log
bin/mysqld --initialize --user=myuser --basedir=${HOME}/mysql_work --datadir=${HOME}/mysql_work/data

ここでrootの一時パスワードが作成されるのでメモっておく.

A temporary password is generated for root@localhost: ******

あとはシンボリックリンク作成したりパスを通したりして起動

sudo ln -s ${HOME}/mysql_work/bin/mysql /usr/local/bin/mysql
sudo ln -s ${HOME}/mysql_work/bin/mysqldump /usr/local/bin/mysqldump

sed -i -e "$ a PATH=\"\$PATH\":\/usr\/local\/mysql\/bin" ~/.bashrc
source ~/.bashrc

nohup ${HOME}/mysql_work/bin/mysqld_safe --datadir=${HOME}/mysql_work/data --socket=${HOME}/mysql_work/mysql.sock --pid-file=${HOME}/mysql_work/run/mysqld.pid --basedir=${HOME}/mysql_work --user=myuser &

先程メモったパスでrootでアクセスができる.適当なパスワードに変更をしておく(下記だと''にしているのでパス無しでアクセス出来るようになる).

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
FLUSH PRIVILEGES;

作業用ユーザ作成

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'localhost' WITH GRANT OPTION;

defaults-extra-filesを作成しておくと便利

${HOME}/mysql_work/defaults_extra.conf
[client]
user=myuser
password="mypass"

[mysqldump]
user=myuser
password="mypass"

アクセス方法

mysql --defaults-extra-file=${HOME}/mysql_work/defaults_extra.conf

シャットダウン

${HOME}/mysql_work/bin/mysqladmin -uroot shutdown
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1