0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MariaDB(MySQL)を一般ユーザーでインストールする

Last updated at Posted at 2021-06-03

UNIX系のオペレーティングシステムは、マルチユーザーで使用されるのが前提で作られたOSであり、ソフトウェアはrootでインストール・実行され、一般ユーザーがそれを使わせていただく、というのが基本的な考え方になっています。

一方で、開発用途でソフトを使いたい、あるいはちょっと動作確認をしたい、といった場合に、いちいち管理ユーザーの権限がないとインストールできないのは不便ですよね。

というか、ちょっとソフトを試したいだけなのにルート権限でシステムをいじるって、ちょっと怖いです。「やっぱ使わないからソフトをアンインストールするわ」って言って本当に元通りに戻せるかとかいろいろ心配ですよね。

そこで、横浜ベイキットではいくつかのソフトウェアについて、一般ユーザーでインストールする方法を紹介していきます。

今回はMariaDB(MySQL)です。

MariaDBを一般ユーザーでインストールするメリット

挙げたらキリがないですが、

  • 管理ユーザー権限がなくても自由に起動・終了ができる

管理者や他のOSユーザーとの調整の必要もなく、自分一人の中で完結するので面倒がないです。

  • データベースを他人と共有する必要がない

複数のOSユーザーでMariaDBを使う場合は、他人のDBを壊しちゃったりとかしそうで怖いですw

  • 壊したり作り直したりが自由にできる

つまりいろいろ好きなように試せるってことですね。DB最初から作り直したいときとか、rootユーザーにならなくても、DBのフォルダをrmするだけなので楽ちんです。rootユーザーでrm -rコマンドとか実行したくないですよねw

  • 設定やログなど、どこにあるか完全にコントロールできる

パッケージインストールだと、MySQLを起動した後、ログの場所がどこか分からなくて、やっと分かったとしてもrootユーザー権限じゃないと見られなくていちいちsudoするのとか地味に面倒だったりしません?

  • アンインストールが簡単

それな!アンインストールはディレクトリごと消すだけでOK。
Mac使ったことある人は分かると思いますが、アプリケーションフォルダの中のアプリケーションをごみ箱に入れる感覚で消せますw

管理者でインストールした場合、設定ファイルやDB、ログなどがシステムのディレクトリに残る可能性があり、完全にクリーンな状態に戻せるかよく分からないんですよね。

  • スキルアップになる

何といっても、一般ユーザーインストールを経験しておくと確実に経験値が上がります
そういうところが地味におススメではあるのですがw

もちろん、管理ユーザーでインストールするメリットもありますよ

  • yumやrpm、aptなどのツール一発で瞬間インストールできる
  • システムに組み込まれるので自動起動の設定などが簡単

というのはありますね。

なので、開発環境なのか、テスト環境なのか、本番環境なのか、と言ったところでも選択は変わりそうです。

と言うのを念頭に、「それでも一般ユーザーでインストーしたい!」という方のために、MariaDB(MySQL)を一般ユーザーでインストールする方法を解説します。

※ここではCentOS8で解説します。また、MySQLも作業はほとんど同じなので都度読み替えてください。

準備

ここでは、ホームディレクトリの下のapp/mariadb配下にインストールすることにします。
つまり、このディレクトリを消すだけで、全てをなかったことにできるわけw

$ mkdir -p ~/app/mariadb

必要なパッケージのインストール
MariaDBのコンパイルに必要なツールやパッケージをインストールします。
環境によって違うのでアレですが、とりあえず弊環境ではこのあたりが必要でした

  • make
  • cmake
  • gcc
  • gcc-c++
  • ncurses-devel
  • gnutls

てことでインストール

$ sudo yum install -y cmake make gcc gcc-c++ ncurses-devel gnutls-devel

ライブラリやツールが足りないとcmakeやmakeに失敗するので、その時出たエラーメッセージからアタリをつけていきます。

例えばcmakeで以下のようなエラーが出ます

CMake Error at cmake/readline.cmake:65 (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.

このときはcursesライブラリがないんだということでyum searchします

$ yum search curses

出て来た一覧からそれっぽいのを見つけ、「-devel」のついたものをインストールする、という算段です。

(間違ったらyum removeでなかったことにw)

MariaDBソースのダウンロード

MariaDBのソースを取ってきます。MariaDBのサイト(https://downloads.mariadb.org )からダウンロードしてきます。

今回は10.5.10をDLしました。

$ ls
mariadb-10.5.10.tar.gz

解凍して中に入ります。

$ tar zxf mariadb-10.5.10.tar.gz
$ ls
mariadb-10.5.10  mariadb-10.5.10.tar.gz
$ cd mariadb-10.5.10

コンパイルとインストール

Makefile作成

Makefileはcmakeで作成します。configureじゃないところとか、ちょっとイケてないっすねw

$ cmake . -DCMAKE_INSTALL_PREFIX=$HOME/app/mariadb \
          -DMYSQL_DATADIR=$HOME/app/mariadb/mariadata \
          -DMYSQL_UNIX_ADDR=$HOME/app/mariadb/var/mariadb.sock \
          -DSYSTEMD_PID_DIR=$HOME/app/mariadb/var \
          -DDEFAULT_CHARSET=utf8 \
          -DDEFAULT_COLLATION=utf8_general_ci 

cmakeにこれらのオプションを指定することで、もろもろ以下のように設定されます

指定するもの
インストール先 $HOME/app/mariadb
データベースファイルのデフォルトの置き場所 $HOME/app/mariadb/mariadata
デフォルトのローカル接続用ソケットファイル $HOME/app/mariadb/var/mariadb.sock
PIDファイルのデフォルトの置き場所 $HOME/app/mariadb/var
デフォルトのキャラクタセット UTF-8
デフォルトの照合順序 utf8_general_ci

本当は設定ファイルのデフォルトの置き場所も変えられるといいのだけど、これは/etc/my.cnf固定になっており、変えられないみたい。
というわけで、設定ファイルの場所は起動時に指定することになりますね。

cmakeで指定できるオプションは以下を参考に

ちなみに、cmakeをやり直すときはCMakeCache.txtを削除してから行った方がいいらしい。知らんけど。

Make

cmakeでエラーが出なければmakeします。結構時間かかるw
メモリやコアがたくさんあるなら、-j オプションで並列度を指定してビルドすると速い。

$ make -j 8

(こっちの環境ではメモリ不足で落ちたけどw)

makeが終了したらインストールします。

$ make install

これで、$HOME/app/mariadb 以下にインストールされました。

移動して確認してみましょう

$ cd ~/app/mariadb/
$ ls
bin      include         man         README-wsrep  sql-bench
COPYING  INSTALL-BINARY  mysql-test  scripts       support-files
CREDITS  lib             README.md   share         THIRDPARTY

デフォルトの設定がどうなっているか一応確認します。

$ bin/mariadb-config
Copyright 2011-2020 MariaDB Corporation AB
Get compiler flags for using the MariaDB Connector/C.
Usage: mariadb-config [OPTIONS]
Compiler: GNU 8.3.1
  --cflags        [-I/home/baykit/app/mariadb/include/mysql -I/home/baykit/app/mariadb/include/mysql/mysql]
  --include       [-I/home/baykit/app/mariadb/include/mysql -I/home/baykit/app/mariadb/include/mysql/mysql]
  --libs          [-L/home/baykit/app/mariadb/lib/ -lmariadb]
  --libs_r        [-L/home/baykit/app/mariadb/lib/ -lmariadb]
  --libs_sys      [-ldl -lm -lpthread -lgnutls]
  --version       [10.5.10]
  --cc_version    [3.1.13]
  --socket        [/home/baykit/app/mariadb/var/mariadb.sock]
  --port          [3306]
  --plugindir     [/home/baykit/app/mariadb/lib/plugin]
  --tlsinfo       [GnuTLS 3.6.14]
  --variable=VAR  VAR is one of:
      pkgincludedir  [/home/baykit/app/mariadb/include/mysql]
      pkglibdir      [/home/baykit/app/mariadb/lib]
      pkgplugindir   [/home/baykit/app/mariadb/lib/plugin]

DB作成

前準備

DB作成の準備として、データベースを格納するディレクトリと、ランタイム情報を格納するディレクトリを作っておきます

$ cd ~/app/mariadb/
$ mkdir data var

あと、mariadbのコマンド群が実行できるようにPATHを通します

export PATH=$HOME/app/mariadb/bin:$PATH

これは$HOME/.bash_profileにも書いておきましょう。

初期化

次のコマンドを実行して、MariaDBが管理できるような形にdataディレクトリ内を初期化します(多分w)

$ scripts/mariadb-install-db 

起動

MariaDBのデーモンプログラムはmariadbd(MySQLだとmysqld)なのですが、通常はこのデーモンプログラムを起動するための別のコマンドmariadbd-safe(MySQLだとmysqld-safe)を実行します。(理由はよくわからんw)

mariadbd-safe
210603 06:34:28 mysqld_safe Logging to '/home/baykit/app/mariadb/data/kurage.err'.
210603 06:34:28 mysqld_safe Starting mariadbd daemon with databases from /home/baykit/app/mariadb/data

ちなみに、MariaDBの設定ファイルはデフォルトで/etc/my.cnfです。なければ読み込みません。

ただ、/etcはシステムディレクトリなのでここには置きたくないですよね。

というわけで ~/app/mariadb に置くことにしましょう。例によってアンインストールも簡単ですしw

設定ファイルを読ませたい場合以下のようにオプションを指定して起動します。
(ちょっと面倒ですね。だからビルド時に指定できるようにしてくれればいいのにw)

$ cd ~/app/mariadb
$ touch my.cnf
$ mariadbd-safe --defaults-file=~/app/mariadb/my.cnf

接続

mariadbコマンドを実行して、先ほど起動したデーモンに接続しましょう

$ mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.5.10-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

※この「none」ってなーんだ!w と思ったら使用中のDBの名前っぽい。

ユーザー作成

MariaDBには最初から管理者権限であるrootユーザーがいますが、まあ別のDBユーザー作っときましょうw

ローカル接続ができるkurageというユーザー(パスワードはinada)を作成し、ありとあらゆる権限を与え、一回抜けます。

MariaDB [(none)]> create user 'kurage'@'localhost' identified by 'inada';
Query OK, 0 rows affected (0.007 sec)
MariaDB [(none)]> grant all on *.* to 'kurage'@'localhost';
Query OK, 0 rows affected (0.006 sec)
MariaDB [(none)]> \q

ユーザーkurageで接続できることを確認します

$ mariadb -u kurage -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.5.10-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

接続できました!

データベース作成

ではお待ちかね、データベースを作成してみます。kurageユーザーで接続した状態で以下のSQLを実行します。

MariaDB [(none)]> create database salmon;
Query OK, 1 row affected (0.000 sec)

DB作っただけじゃ使えなくて、次のようにuse文を使って特定のDBを使うことを宣言します。

MariaDB [(none)]> use salmon;
Database changed
MariaDB [salmon]> 

そうすると現在使用中のDBの名前が(none)からsalmonに変わったことが確認できるかと思います。

表の作成・挿入・選択

貝の名前を管理するshellという表を作ってみます

MariaDB [salmon]> create table shell (id integer primary key, name varchar(128));
Query OK, 0 rows affected (0.047 sec)

牡蠣とアワビを登録します

MariaDB [salmon]> insert into shell values (1, 'Oyster');
Query OK, 1 row affected (0.007 sec)
MariaDB [salmon]> insert into shell values (2, 'Abalone');
Query OK, 1 row affected (0.013 sec)

選択してみましょう

MariaDB [salmon]> select * from shell;
+----+---------+
| id | name    |
+----+---------+
|  1 | Oyster  |
|  2 | Abalone |
+----+---------+
2 rows in set (0.000 sec)

以上で、SQLが使えるところまで確認しました。

その他

MySQLを別のマシンからアクセス可能にするためには、ポート3306番を外に向けてアクセス可能にしておく必要があります。

この辺りの設定は別ドキュメントにまとめたので参考にしてください

結言

いかがだったでしょうか。

MariaDBの一般ユーザーインストール、何となくやればできそうな感じがしませんかw

最初がちょっと面倒ですが、インストールまで行ってしまえばあとは同じですし、しかも使いやすいと思うので、是非チャレンジしてみてください!

Enjoy!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?