vagrantでMySQL勉強用にcentos7で環境構築 + Linuxbrew

# vagrantでMySQL勉強用にcentos7で環境構築
（初投稿）

プログラミング学び始めて５ヶ月目です。
実務経験なし、就職活動中。~~現在夏休み。~~
備忘録兼ねてアウトプット練習で投稿をこれから続けていきたい所存。
ところどころおかしなところあると思います。飴主体でご指摘いただけると幸いです。

## 前提
ホストos: Mac10.14.6

vagrantの初期設定済（ubuntu環境作成したことがある）


## やったこと（目次）
- centos7で仮想環境作る
    - とりあえずフォルダを作る
    - Vagrantfileを作る。
- Linuxbrewインストール
    - curlとかgitとか入れる。
    - Linuxbrewダウンロード＆インストール。
    - パス通す＆環境変数の設定する。
- 略（zshインストール＆かっこヨク）
- MySQLのダウンロードまで
    - mariaDBの削除。
    - MySQLのダウンロードとインストール。
- 起動から初期設定まで
    - 起動&永続化
    - 初期設定
- その他

さて

## centos7で仮想環境作る
### とりあえずフォルダを作る。
vagrant環境下で
```zsh
mkdir centos7
```
（名前は任意）

そして

### Vagrantfileを作る。
```zsh
cd centos7
```
移動して
Vagrantfileを作りましょう。

```zsh
vagrant init centos/7
```
この呪文でVagrant fileができると。
そしたらvagrant up&haltして

## Linuxbrewインストール
### curlやらgitやらインストールしましょう

~~```yum groupinstall ‘Development Tools’ && sudo yum install curl git m4 ruby texinfo bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel
```~~

**ではないらしい**
上みたいなコマンドを打ってくださいって記事がなかなかの数残ってるので要注意です。
centos7で、というかRed Hat Enterprise Linux 7ではyumが変更されましたとのこと。

```zsh
yum -y groupinstall base "Development tools" --setopt=group_package_types=mandatory,default,optional
```


この記事[CentOS7 で yum groupinstall が出来ないんですけど。。。](https://qiita.com/madaran0805/items/1cac9c921cec4e8a23e7)に助けられたです。

さて

### Linuxbrewをインストールしましょう

漠然とbrewという文字を打ち込みたい、そんな私でした。
Macを買った５ヶ月前google先生に「Mac　買ったらやること」でひたすらググってた時に

「Homebrewを入れましょう」
「Homebrew入れなきゃ何も始まんないよね」
「Hお目bれw」

とどこの記事にも書いてあったのでとりあえず入れたのは今は昔。
HomebrewはMacOS用のパッケージ管理ツール
これのLinux版がLinuxbrewですね。

Linuxbrew何がいいかっていうと
1. rootいらねえ
2. home dirに入れれちゃう
3. ディストリビューションの package manager に依存しねえ

ってとこ。２に関しては正直まだよくわかってない。

前置きが長くなりましたが以下のコマンドでインストール

```zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
```

そしてこのまんまだとパスが〜〜〜ってエラー出てきますんで

```zsh

test -d ~/.linuxbrew && PATH="$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin:$PATH"
test -d /home/linuxbrew/.linuxbrew && PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH"
test -r ~/.bash_profile && echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.bash_profile
echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.profile
```

この４行そのまんまペッってする。

確認しましょう

```zsh
brew doctor
>>>Your system is ready to brew.
```
こんな感じでbrew先生に疾走感が感じられたらオッケーです。

[Linuxbrew のススメ](https://qiita.com/thermes/items/926b478ff6e3758ecfea#zsh-%E4%BD%BF%E3%81%84%E3%81%9F%E3%81%84%E3%82%88)
大いに~~パク~~参考にさせていただきました。


## 略（zshインストール＆かっこヨク）
小生、vimmerは変態と伺い、憧れたのでエディタはvim(練習中)
そしてiTerm2 + zshでターミナル環境構築してる故
ここにてzshとvimの設定を行う。
長くなりそうなんで割愛
そのうち別記事書き <ここら辺に>　リンク貼ります。

## MySQLのダウンロードまで
### mariaDBの削除。

```zsh
rpm -qa | grep mariadb
>>>mariadb-libs~~~~~~~~~~~~~
#ほうほう、ちゃんと入っているな

# えいっ
yum remove mariadb-libs

# 関連ライブラリも、えいっ
sudo rm -rf /var/lib/mysql

# 一応消えたこと確認
rpm -qa | grep mariadb
```

なんでもmariaDBはMySQLとは互換性があるけど、どっちもあると競合起こすのでみんな消すらしい？
言ってることはわかるけどどういう挙動になって何が困るのかよく想像つかないから今度わざと競合させてみたいと思う。




### MySQLのダウンロードとインストール。

やっとここまできました。

```zsh

# MySQLを公式レポジトリからダウンロード
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# 最新版を確認してください

# インストール
yum install mysql-community-server

```

これでOK！！


ちな
[MySQL最新版確認用](https://dev.mysql.com/downloads/repo/yum/)

こういうとこに飛びます。

<img width="933" alt="スクリーンショット 2019-10-06 21.46.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475554/8e3567c5-4110-dcee-5a01-24ac081d48c0.png">

そしたら
OS確認して右側のDownload
(今回の場合だったら上から二番目のRed Hat Enterprise Linux 7/ Oracle Linux 7てやつですね)


Download押すと
こんな画面に行きます。

<img width="761" alt="スクリーンショット 2019-10-06 21.49.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475554/06271b77-d92c-4dbb-da13-333a31cea342.png">

左下の
No thanks,just start my download
のURLとって

```zsh

rpm -ivh (とってきたURL)
```
とコマンド打ってダウンロードです。あとはさっきの通りにインストールまでしてください。


あと少しです、、頑張れ、、

## 起動から初期設定まで
### 起動＆永続化

```zsh


# 起動
sudo systemctl start mysqld.service

# 永続化
sudo systemctl enable mysqld.service
```

はい、秒。


### 初期設定

最低限しましょね
詳しいことはわかんないんでググって他の記事見つけてください（放）

まず、なんか自動でパスワード初期設定されてるみたいなんで、それを見つけましょう。

```zsh

# 自動で初期設定されてるパスワードを確認
sudo grep password /var/log/mysqld.log
>>2019-10-04T11:35:51.505412Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: password
# この部分ですね　=> password 

```

そしたら行きましょう初期設定。

```zsh
mysql_secure_installation
```

って打つと下みたいにいくつか質問出てくるんでynで答えていってください。
日本語訳つけてます。ご参考に。

```zsh

Enter password for user root:
# 初期に入ってるパスワード入力

Change the password for root ? ((Press y|Y for Yes, any other key for No) : 
# 訳）どうする？パスワード変えとく？

New password:
# 新しく設定する任意のパスワード

Re-enter new password:
# 再入力

Remove anonymous users? (Press y|Y for Yes, any other key for No) :
# 訳）今、誰でも入れんねんけど、匿名除外しとく？

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
# 訳）リモートでrootは入れんようにした方がええやんな？

Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
# 訳）テスト用データベース作らんくてもええ？

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 
# 訳）ほなすぐ反映するで！？

```

初期設定完了す。おめでとうございます。


## その他

###ログイン

```zsh
# root でログイン
mysql -u root

mysql -u ユーザ名 -p
Enter password: [パスワード]

```

### Vagrantfileのリアルタイム反映

```zsh

config.vm.synced_folder ".", "/vagrant", type:"virtualbox"
```

こんなものあるなんて知らなかったです。
ubuntuの方こんなの書いてないのに、リアルタイム同期されてる。
なんで？
















~fin~
(初投稿)
お付き合いありがとうございました。