Ruby on Rails デフォルトのデータベースとしてSQLite3を使用します。 SqliteはRailsでうまく機能しますが、Railsアプリケーションには不十分な場合があります。スケーラビリティ、同時実行性、集中化、および制御が必要な場合は、MySQLやPostgreSQLなどのより堅牢なデータベースを試してみることをお勧めします。このガイドでは、UbuntuLinuxのRubyonRailsアプリケーションでMySQLを使用する方法を説明します。
1。 UbuntuにMySQLをインストールする
MySQLは、ほとんどのLinuxおよびUnixライクなディストリビューションのデフォルトのリポジトリで利用できます。
MySQLをDebian、Ubuntu、およびその派生物にインストールするには、次のコマンドを実行します:
$ sudo apt install mysql-server mysql-client libmysqlclient-dev
libmysqlclient-dev
パッケージは、mysql2
をコンパイルするために必要なファイルを提供します 宝石。 RubyonRailsはmysql2
を使用します RailsアプリケーションをセットアップするときにMySQLに接続するためのgem。
1.1。 MySQLルートパスワードを設定する
次に、次のコマンドを実行してMySQLrootユーザーのパスワードを設定します。
$ sudo mysql_secure_installation
"y"と入力します VALIDATE PASSWORDコンポーネントを設定するには:
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
パスワード検証のレベルを選択します。利用可能なパスワード検証は低です 、中 および強い 。ここでは、ゼロ(0)を入力して低レベルのパスワード検証を選択します。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
次に、MySQLルートパスワードを2回入力します。パスワードは強力で、8文字以上である必要があります。 Yを押します 続行するには:
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
次に、一連の質問があります。 yと入力します 質問ごとにEnterキーを押します。これにより、匿名ユーザーが削除され、rootユーザーのリモートログインが禁止され、テストデータベースが削除されます。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
終わり! MySQLrootユーザーのパスワードを設定しました。
1.2。 MySQLドライバーをインストールする
mysql2
という名前のMySQLドライバーをインストールします RailsアプリケーションがMySQLデータベースに接続できるようにするgem。
$ gem install mysql2
全部終わった!これで、RailsアプリケーションはMySQLデータベースサーバーに接続できます。
先に進み、MySQLデータベースを使用して新しいRailsアプリケーションを作成しましょう。
2。 MySQLをRubyonRailsアプリケーションで使用する
ostechnixapp
という新しいRailsアプリケーションを作成するには MySQLデータベースをデフォルトのデータベースとして使用し、次を実行します:
$ rails new ostechnixapp -d mysql
これにより、ostechnixapp
という名前のディレクトリにostechnixappというRailsアプリケーションが作成されます。 Gemfile
ですでに言及されているgem依存関係をインストールします bundle install
を使用する 。
ostechnixapp
を作成した後 アプリケーション、そのディレクトリに切り替えます:
$ cd ostechnixapp/
アプリケーションのデータベース構成ファイルを編集します:
$ vi config/database.yml
デフォルトのセクションで、MySQL root
を置き換えます 以前に作成したもののユーザーパスワード:
[...] default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: Password123#@! socket: /var/run/mysqld/mysqld.sock [...]

ファイルを保存して閉じます。
次に、コマンドを使用してRailsアプリケーションの新しいデータベースを作成します。
$ rake db:create
これにより、Railsアプリケーションの名前で2つのデータベースが作成されます。たとえば、アプリケーション名がostechnixappの場合、ostechnixapp_development
が作成されます。 およびostechnixapp_test
。
データベースがMySQLから正常に作成されているかどうかも確認できます。
root
としてMySQLにログインします ユーザー:
$ mysql -u root -p
次のコマンドを入力して、データベースが作成されているかどうかを確認します。
mysql> show databases;
出力例:
+--------------------------+ | Database | +--------------------------+ | information_schema | | mysql | | ostechnixapp_development | | ostechnixapp_test | | performance_schema | | sys | +--------------------------+ 6 rows in set (0.01 sec) mysql>

MySQLプロンプトを終了します。
次に、コマンドを使用してRailsWebサーバーを起動します。
$ rails server -b 0.0.0.0
これにより、デフォルトのポート3000
でRailsアプリケーションが起動します 。ここでは、引数-b 0.0.0.0
を渡しました。 ローカルエリアネットワーク上の任意のマシンからRailsアプリケーションにアクセスするため。
次のURLに移動すると、WebブラウザでRailsテストページにアクセスできます:http://ip-address:3000

別のポートを使用する場合は、 -pを渡します 以下のようにポート番号とともにフラグを立てます:
$ rails server -b 0.0.0.0 -p 8080
これで、次のURLを使用してRailsアプリケーションにアクセスできます:http://ip-address:8080
3。 Railsアプリケーションを削除する
デフォルトのデータベースであるSQLiteを使用している場合は、アプリディレクトリを削除するだけでRailsアプリケーションを削除できます。
$ rm -fr ostechnixapp
MySQLを使用したことがある場合は、最初にコマンドを使用してアプリケーションの関連データベースを削除する必要があります:
$ rake db:drop
次に、アプリケーションディレクトリを削除します:
$ rm -fr ostechnixapp
結論
このチュートリアルでは、Railsアプリケーションにクライアント/サーバーモデルデータベースを使用する必要がある理由と、MySQLデータベースを使用してRailsアプリケーションを作成する方法について説明しました。 Railsアプリケーションを削除する方法も見てきました。
Railsアプリケーションの複数のコピーが同時に実行され、複数のアプリケーションとユーザーが同じデータベースを使用している場合は、Sqliteから離れて、MySQLなどのクライアント/サーバーモデルデータベースを試す必要があります。個々のアプリケーション用のローカルデータストレージが必要な場合は、Sqliteで十分です。
関連記事:
- RubyOnRailsアプリケーションでPostgreSQLを使用する方法
- Railsの環境変数を使用してデータベース接続を構成する