MySQL5.7.21をソースからインストール

OS: Ubuntu Server 16.04
MySQL 5.7.21

久しくMySQLのソースインストールから離れていたのでメモを残すものである。以前のバージョンではconfigureスクリプトで以ってMakefileを拵えていたけれども、近頃のMySQLはどうもcmakeのようであるから此れを予め導入しておく。

$ sudo apt install cmake

またlibncurses5-devパッケージが無いとcmake実施中に下記のエラーメッセージが現れて処理が取りやめとなる。

CMake Error at cmake/readline.cmake:64 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

これを防ぐためにlibncurses5-devパッケージも併せてインストールしておく。なおRedHat系のOSであればncurses-develパッケージである。

$ sudo apt install libncurses5-dev

あとは公式の文献を手がかりに作業を進めてゆく。

$ sudo useradd -r -s /bin/false mysql
$ wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz
$ wget -c https://dev.mysql.com/downloads/gpg/?file=mysql-5.7.21.tar.gz -O mysql-5.7.21.tar.gz.asc
$ gpg --recv-keys 5072E1F5
$ gpg --verify mysql-5.7.21.tar.gz.asc
$ tar zxvf mysql-5.7.21.tar.gz
$ cd mysql-5.7.21/
$ mkdir bld
$ cd bld/

ビルドの用意が整ったらcmakeの実行から始める。インストール先を指定するCMAKE_INSTALL_PREFIXはデフォルトで/usr/local/mysqlである旨、記載があったから何も指定せずにいたのであるけれども、何故か必要なファイルが配置されなかったので念のためいちいち明示したほうが良さそうな情勢である。

$ cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make
$ sudo make install
$ cd /usr/local/mysql/
$ sudo mkdir mysql-files
$ sudo chown mysql:mysql mysql-files/
$ sudo chmod 750 mysql-files/

インストールが終わったらデータディレクトリの初期化を実施する。ここでまるきりランダムな文字列で生成されたrootユーザのパスワードが得られる。

$ sudo bin/mysqld --initialize --user=mysql
2018-03-19T02:49:10.755528Z 1 [Note] A temporary password is generated for root@localhost: Su>-%Gnhz86z

$ sudo bin/mysql_ssl_rsa_setup
$ sudo bin/mysqld_safe --user=mysql &
$ sudo cp -v support-files/mysql.server /etc/init.d/mysql.server
$ cd bin/

このパスワードは態と有効期限が切らしてあるためにMySQLを碌に操作できないからリセットの必要がある。

$ ./mysql -uroot -p
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

パスワードのリセットにはset passwordステートメントを発行する。いったんリセットすればMySQLの操作は恣である。

mysql> set password = 'avava';
Query OK, 0 rows affected (0.00 sec)

ひとまずMySQLをシャットダウンしてインストール作業は終いである。

$ sudo ./mysqladmin -uroot -p shutdown
Enter password:
2018-03-19T02:57:21.415800Z mysqld_safe mysqld from pid file /usr/local/mysql/data/guro.pid ended

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください