GNU/Linux >> Linux の 問題 >  >> Linux

RubyOnRailsアプリケーションでMySQLを使用する方法

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の環境変数を使用してデータベース接続を構成する

Linux
  1. MySQLWorkbenchを使用してMySQLでデータベースを作成する方法

  2. Ubuntu 22.04 に MySQL をインストールする方法

  3. Linuxでパスワードを確認するには?

  1. libvirtでVagrantを使用する方法

  2. MySQLまたはMariaDBのルートパスワードをリセットする方法

  3. Ubuntu20.04にMySQLをインストールして使用する方法

  1. RubyでLinuxデスクトップアプリケーションを作成する

  2. LinuxでWindowsパスワードをリセットする方法

  3. CentOS 7.xにMySQLをインストールする方法は?