Rails Mysql DBサーバ WEBサーバーから接続

se##前提として、DBサーバーとWEBサーバーがある

DBサーバー =>mysqlでリモートの接続を許可する

mysqld.cnfファイルに設定する。 ところがこれがくせ者で、たくさんある。 それでどれが優先されるか知る必要がある。環境により当然違う。

mysql --help | grep my.cnf
//この行は表示されるが無視  order of preference, my.cnf, $MYSQL_TCP_PORT,

//ここの左から優先して読み込まれる
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

よってetc/my.cnf を編集する。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
bind-address= ここがDBサーバーのIP 

これでWEBサーバーから下記コマンドで疎通確認ができる。

mysql -h IPアドレス -u user名 -p

しかし、このユーザーをDBサーバーのIPを指定して作成しておかないといけない。 よって

DBサーバーでuserを作成

ユーザ作成

create user {user名}@WEBサーバーの内向きIPアドレス identified by {パスワード};

権限設定

grant all on DB名.* to {user名}@WEBサーバーの内向きIPアドレス identified by {パスワード上記と同じ};

DB名の後の .* はすべてのテーブルの意味

間違ってuser作成したときのuserの削除方法

drop user 'user'@'IP アドレス';

//userの表示
mysql> select user ,host from mysql.user
    -> ;
+---------------+----------------+
| user          | host           |
+---------------+----------------+
| rails_user    | 10.0.21.216    |
| rails_user    | 54.199.164.155 |
| mysql.session | localhost      |
| mysql.sys     | localhost      |
| root          | localhost      |
+---------------+----------------+

secret_key_baseの作成

rails>configフォルダに移動して secrets.yml ファイルを新規作成

$ bundle exec rails secret

RailsにてDB作成

rails db:create RAILS_ENV=production