如何在Ruby On Rails应用程序中使用MySQL

Ruby on Rails 使用SQLite3作为其默认数据库。 虽然Sqlite在Rails上运行良好,但有时对于您的Rails应用程序可能还不够。 如果需要可伸缩性,并发性,集中化和控制性,则可能需要尝试使用更强大的数据库,例如MySQL或PostgreSQL。 在本指南中,我们将了解如何在Ubuntu Linux中将MySQL与Ruby on Rails应用程序结合使用。

1.在Ubuntu中安装MySQL

大多数Linux和类Unix发行版的默认存储库中都提供MySQL。

要在Debian,Ubuntu及其衍生版本上安装MySQL,请运行:

$ sudo apt install mysql-server mysql-client libmysqlclient-dev

libmysqlclient-dev 软件包提供了必要的文件进行编译 mysql2 宝石。 Ruby on Rails的用途 mysql2 当您设置Rails应用程序时,gem将连接到MySQL。

1.1。 设置MySQL根密码

接下来,通过运行以下命令来设置MySQL root用户密码:

$ sudo mysql_secure_installation

进入 “ y” 设置“验证密码”组件:

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 Root密码。 密码应为强密码,并且至少应包含8个字符。 按 ÿ 接着说:

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

接下来,将询问您一系列问题。 类型 ÿ 并为每个问题按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!

完毕! 我们已经设置了MySQL root用户的密码。

1.2。 安装MySQL驱动程序

安装名为MySQL的驱动程序 mysql2 gem,允许Rails应用程序连接到MySQL数据库。

$ gem install mysql2

全部做完! Rails应用程序现在可以连接到MySQL数据库服务器。

让我们继续前进,并使用MySQL数据库创建一个新的Rails应用程序。

2.将MySQL与Ruby on Rails应用程序一起使用

创建一个名为的新Rails应用程序 ostechnixapp 并将MySQL数据库用作其默认数据库,运行:

$ rails new ostechnixapp -d mysql

这将在一个名为ostechnixapp的目录中创建一个Rails应用程序 ostechnixapp 并安装已经在中提到的gem依赖项 Gemfile 使用 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应用程序数据库配置文件中设置MySQL根密码

保存并关闭文件。

现在,使用以下命令为您的Rails应用程序创建新的数据库:

$ rake db:create

这将使用Rails应用程序的名称创建两个数据库。 例如,如果应用程序名称为ostechnixapp,则它将创建 ostechnixapp_developmentostechnixapp_test

您也可以验证是否从MySQL成功创建了数据库。

以以下身份登录到MySQL root 用户:

$ 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与Ruby on Rails应用程序结合使用将MySQL与Ruby on Rails应用程序结合使用

从MySQL提示符退出。

现在,使用以下命令启动Rails Web服务器:

$ rails server -b 0.0.0.0

这将在默认端口上启动您的Rails应用程序 3000。 在这里,我们通过了论点 -b 0.0.0.0 为了从局域网上的任何机器访问Rails应用程序。

您可以通过导航到URL在Web浏览器上访问Rails测试页: http://ip-address:3000

Ruby on Rails测试页Ruby on Rails测试页

如果要使用其他端口,请通过 -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绰绰有余。

相关阅读:

  • 如何在Ruby On Rails应用程序中使用PostgreSQL

数据库LinuxMySQLRuby on RailsS​​qlite

Sidebar