CentOS7にMySQLを入れたりyumの使い方について調べたり
はじめに
タイトルの通りです。CentOSにMySQLを入れてみた備忘メモです。
CentOSもMySQLも素人なので、yumコマンドの使い方から出発しています。
大まかには、
という流れです。
MySQLの細かな設定については踏み込まず、最低限動くのを目標にしました。
- はじめに
- バージョン
- インストールコマンド
- yumコマンドについて
- 導入可能or導入済パッケージの一覧表示
- リポジトリを登録する
- 登録済みのリポジトリを確認する
- 目当てのパッケージを調べる
- インストールする
- MySQL起動したり止めたり
- MySQL初期パスワード
- MySQL初期設定
- 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の使い方を調べた。
導入可能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に記述されている。
さしあたり以下の設定を加える。
(略) #以下を追記する 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コマンドでパッケージのリスト、バージョン/