とりとめも

藻類が学んだり感じたりしたことを未来の自分のために書き留めるところ

CentOS7にMySQLを入れたりyumの使い方について調べたり

はじめに

タイトルの通りです。CentOSMySQLを入れてみた備忘メモです。
CentOSMySQLも素人なので、yumコマンドの使い方から出発しています。

大まかには、

  • yum list等の使い方を簡単に眺めてみる
  • MySQLをインストールする
  • データベースとテーブルを作って適当なSQL文を発行できるようになる(そのための初期設定をする)

という流れです。
MySQLの細かな設定については踏み込まず、最低限動くのを目標にしました。

バージョン

OS:CentOS 7.3.1611(minimal ISO)
入れたMySQLのバージョン:5.7.17(2017/2/7時点最新)

インストールコマンド

以下です(結論)

$ yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
$ yum install mysql-community-server

参考サイトを色々巡っても、バージョンによって差異はあれど上記2つのコマンドで完結していることが多い(yumのことは知っている前提)ので、まずは基本を知らなければということで、yumについて調べることにした。
なので、上述のコマンドは、(この記事の流れ的には)もう少し後で叩くことにする。

yumコマンドについて

というわけで、前回の記事でも何となく使用していたけど、もうちょっとだけyumの使い方を調べた。

  • yumはパッケージ管理ソフト
    • ソフトウェアの依存関係を調べながらインストールしてくれる
    • 新バージョンが出た時の更新も簡単
  • リポジトリ:パッケージが置かれているインターネット上の場所

導入可能or導入済パッケージの一覧表示

まずはyumコマンドを試しながら現在の状況を確認してみる。
以下のコマンドを実行すると、なんか色々表示される。

$ yum list

これは「現在登録済のリポジトリで導入可能なパッケージ」を一覧表示してくれるコマンド。導入済のパッケージも含む。
とにかく沢山表示されるので適宜grepしたり、以下のコマンドを利用したりする。

#インストール済のパッケージ
$ yum list installed

#新しいバージョンの存在するパッケージ
$ yum list updates

#インストール可能なパッケージ
$ yum list available

#指定したパッケージに関する情報
$ yum list <パッケージ名>

で、試しに次のコマンドで各パッケージを調べてみる。

$ yum list perl
(略)
Installed Packages
perl.x86_64                        4:5.16.3-291.el7                        @base

$ yum list ruby
Available Packages
ruby.x86_64                        2.0.0.648-29.el7                         base


$ yum list mysql-community*
(略)
Error: No matching Packages to list

perlは導入済み・rubyは未導入だけど導入可能・MySQLは導入不可(リポジトリに存在しない)ということがわかった。
まずはMySQLを導入するためのリポジトリを登録する必要がある。

リポジトリを登録する

MySQLをインストールできるリポジトリ公式サイトから調べる。
使用するOSのDownloadボタンをクリックすると、サインインを求められるので会員登録して進む。
アンケートっぽい質問に答えるとDownload Nowボタンが表示されるのでリンクをコピー。
コピーしてきたリンクを使用して次のコマンド。

$ yum localinstall <コピーしたリンク>

今回の場合は以下だった。

$ yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

URL部分はもちろんバージョンによって変わる。
これでリポジトリが登録される。

登録済みのリポジトリを確認する

$ yum repolist 上のコマンドで、登録済みリポジトリが表示される。
先ほど登録したリポジトリが存在することを確認。

ちなみに登録したリポジトリの設定は/etc/yum.repos.d内にxxx.repoという形で記述されている。
今回の場合、mysql-community.repoやmysql-community-source.repoがそれ。有効/無効もこのファイルで定義されている。
言い換えれば、このファイルを直接作成することでもリポジトリを登録できるっぽい。

目当てのパッケージを調べる

今回導入するのはmysql-community-serverというパッケージ。
次のコマンドを叩いて、詳しく調べてみる。

$ yum info mysql-community-server

情報が出てくるはず。

インストールする

$ yum install mysql-community-server

インストールが進むので待つ。
終わったら、ひとまずバージョン確認

$ mysql --version
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper

できた。

MySQL起動したり止めたり

$ systemctl start mysqld.service

これでサービス起動できる。
systemctlはCentOS7のサービス管理用コマンド。
前回の記事でも使ってたけど、サービス起動関連の使い方を整理する。

#状態確認
$ systemctl status mysqld.service

#再起動
$ systemctl restart mysqld.service

#停止
$ systemctl stop mysqld.service

#自動起動
$ systemctl enable mysqld.service

#各サービスの自動起動設定を一覧表示
$ systemctl list-unit-files -t service

#mysqld.serviceの自動起動設定を確認
$ systemctl is-enabled mysqld.service

MySQL初期パスワード

初期パスワードは/var/log/mysqld.logに書かれているので、適当にgrepして確認。

$ cat /var/log/mysqld.log | grep password
2017-02-05T22:12:20.783787Z 1 [Note] A temporary password is generated for root@localhost: <ここにパスワード!>
2017-02-05T22:46:18.116128Z 0 [Note] Shutting down plugin 'validate_password'
2017-02-05T22:46:19.141449Z 0 [Note] Shutting down plugin 'sha256_password'
2017-02-05T22:46:19.141452Z 0 [Note] Shutting down plugin 'mysql_native_password'

MySQL初期設定

$ mysql_secure_installation

上のコマンドでパスワード等をセキュアでいい感じにセットさせてくれる。

  • 初期パスワードを聞かれる
  • 新パスワードを2回入力する
    • ポリシー厳しいので頑張る(大文字・小文字・数字・特殊文字が必要?)
  • あとはy/nの質問がいくつかある。基本yで良さそう
    • 匿名ユーザーアカウントを消す?
    • rootのリモートアクセスを不許可にする?
    • testデータベースを消す?

MySQL設定変更

MySQLの設定は/etc/my.cnfに記述されている。
さしあたり以下の設定を加える。

  • パスワードの有効期限を無期限にする
    • デフォルトでは360日でパスワードが無効になる
  • デフォルトの文字コードUTF-8にする
(略)
#以下を追記する
character-set-server = utf8
default_password_lifetime = 0

他にも色々設定できるみたいだけど、まだよくわかってないので変更しない。MySQL自体のことをもっと知らないといけなさそう。詳細は参考リンクの各記事参照。

変更したらサービスを再起動する。

$ systemctl restart mysqld.service

ログインしたり色々操作

まだMySQLの操作方法もよくわかってないけど、とりあえずログインコマンド。

$ mysql -u root -p

パスワード聞かれるので、さきほど設定したものを入力。
あとは適当なSQL文を試してみる。

#デフォルトのデータベース4つが表示される
mysql> show databases;

#「test」データベースを作る
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

#「test」を含むデータベースが5つ表示される
mysql> show databases;

#「test」を消す
mysql> drop database test;
mysql> show database;

#「test」をもう一回作って、接続してみる
mysql> create database test;
mysql> use test;
Database changed

#現在接続中のデータベースを表示する
mysql> select database();

#テーブルを作ってみる
create table test_table (name varchar(50), id int);

#接続中データベースのテーブルの一覧表示
show tables;

#接続中データベースのテーブルの詳細情報表示
show table status;

#「test_table」テーブルにレコードを追加してみる
insert into test_table (name, id) values (marimo, 1);
query OK, i row affected (0.01sec)

#追加したレコードが存在することを確認する
select * from test_table;

うん、ちゃんと動きそう。

おわりに

MySQLが使えるようになりました。嬉しい。

また、yumやsystemctlについてですが、よく使いそうなコマンドは調べたものの、体系的な知識は全然得られていません。これらのコマンドについてももう少し掘り下げて調べなければ。

あと、CentOS7の環境構築手順を楽しんでメモってますが、今回入れたMySQLも色々触らないとなーと思っています。というかSQLもあまりわかっていないです。生のSQL文を触る機会がどれくらい出てくるのかわかりませんが、最低限のことは知っておきたいです。色々勉強しないといけないことが多いですね。

参考にさせて頂きました

http://wordpress.honobono-life.info/lin-base/yum-listコマンドでパッケージのリスト、バージョン/