前置き
本記事は前回の記事の続編です。
ご覧になっていない方は、前回の記事もご覧になってください。
さて、今回はRailsで使うRDBにMySQLを利用するための準備を行います。まぁほぼMySQLのインストールするだけですが、始めていきます!
MySQLをインストールする
-
MariaDBをアンインストールします。
CentOS 7に標準でインストールされているRDBはMariaDBです。私は使ったことがないのですが、従来のMySQLと互換があると聞きます。しかし、オープンソースのRDBの経験が少ないので、この書籍を読んでMySQLを利用してみることにしました。
よって、アンインストールしちゃいます。(またいつの日か。。。)# yum remove -y mariadb-libs
-
MySQLのリポジトリを登録します。
MySQL 8.0がリリースされましたが、前述の通りオープンソースのRDBの経験が少ないので、ドキュメントやプラクティスが豊富で新しいめのバージョンということで5.7をインスールします。(JSON型に興味あり。)# yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
-
MySQLをインストールします。
# yum -y install mysql-community-server
-
インストールされたか確認します。
問題なし# mysqld --version # mysqld Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))
-
起動と自動起動の設定をします。
# systemctl start mysqld # systemctl enable mysqld # systemctl status mysqld | grep 'Active: active' Active: active (running) since 土 2018-06-09 23:24:51 JST; 2min 53s ago
MySQLをセットアップする
先ほどまでの手順で無事にMySQLがインストールされました。
今度はセットアップしていきます。
-
rootの初期パスワードを探します。
ルートのパスワードはインストール時にログに出力されています。
この例では2dUpdwrC3Q.z
です。# cat /var/log/mysqld.log | grep 'password' 2018-06-09T14:24:48.910944Z 1 [Note] A temporary password is generated for root@localhost: 2dUpdwrC3Q.z
-
基本的な初期設定を行います。
以下を実行します。# mysql_secure_installation
Enter password for user root: # 初期パスワード New password: # 新パスワード Re-enter new password: # 再入力
# パスワードのセキュリティーポリシーが緩い場合は以下のように言われます。 The 'validate_password' plugin is installed on the server. : : Change the password for root ? ((Press y|Y for Yes, any other key for No) : y # Yes (今思えばNoで良かったかも) New password: # とりあえず新パスワード Re-enter new password: # とりあえず再入力 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
# 匿名ユーザを削除します。 Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # Rootのリモート接続を禁止します。 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y # テスト用のデータベースを削除します。 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
# この設定をすぐにリロードします。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
```
-
ログインを確認します。
接続OK# mysql -uroot -p Enter password: # 新パスワード mysql>
-
文字コードを変更します。
-
まず現在の文字コードの設定を確認しておきます。
mysql> SHOW VARIABLES LIKE 'chara%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
-
設定ファイルを書き換えます。
# vi /etc/my.cnf
-
末尾に追加します。
my.cnfcharacter-set-server=utf8mb4 #[mysqld]セクション [client] default-character-set=utf8mb4
-
MySQLを再起動します。
# systemctl restart mysqld
-
もう一度、文字コードの設定を確認します。
変更されてますねmysql> SHOW VARIABLES LIKE 'chara%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
-
-
Railsアプリ用のDBアカウントを作成します。
現在はどこからでもアクセス出来る状態にしています。本番環境では変更すると思います。GRANT ALL ON *.* TO 'rails'@'%' IDENTIFIED BY 'Hogehoge123!';
-
DBアカウント「rails」でテストログインしてみます。
# mysql -urails -p Enter password: # Hogehoge123! mysql>
-
余談です。
パスワードを変更しないとログイン不能になるオプションですが、MySQL 5.7.11でデフォルト値が変わったので、以下の追記は割愛しました。またデフォルト値が変わったら再考しましょう!my.cnfdefault_password_lifetime=0
Rails向けにセットアップする
このままrails new hoge -d mysql
を実行しても、mysql2が無くエラーになります。
セットアップの記事や数年前に買っていた書籍(何年も前からやろうと思っていたことを、今やっているので現在は古い書籍ですね。)では「エラーになったら入れる」「それでもエラーになったら、これも入れる」というような紹介が多かったです。仕方ない部分もありますが、初学者(私とかね)の精神衛生上、よろしく無いので、予めインストールしておきます。
# yum -y install mysql-devel
# gem install mysql2 -v '0.5.1'
終わりに
前回の記事でお伝えしたとおり、ほぼMySQLのインストールの記事になりました。良い記事をリンクさせて頂き「Rails向けにセットアップする」部分だけ書けば良いとも思いましたが、私が実施したとおりの内容で記事にしてみました。
冗長ですみません
次回はRailsでプロジェクトを新規構築します。