mysql Riails 設定関係 忘備録

$ mysql -u root -p

これでmysqlに入る

別サーバーからの接続を許可する

mysql> grant all privileges on DB名.* to 'user名'@'接続元サーバーのIPアドレス' identified by 'パスワード' with grant option;

参考サイト

qiita.com

どれを利用するのか

use 利用するDB名;

mysql57-libs.x86_64

yum installの際、libraryを入れないとgccとかもインストールされないので大変大切!

ソケットファイルはここ webサーバー

/var/lib/mysql/mysql.sock

Rails migrate エラー

環境変数を確認 printenv コマンドを利用する

(master) $ printenv | grep DBUSER

//==
PROMPT_COMMAND=history -a;
NVM_IOJS_ORG_MIRROR=https://iojs.org/dist
PORT=8080
install_flag=1
IP=127.0.0.1
C9_HOSTNAME=13.115.129.196
RUBY_VERSION=ruby-2.6.2
rvm_user_install_flag=1
LESS_TERMCAP_se=

database.yml の値がセットされていない

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  socket: /var/lib/mysql/mysql.sock

bash_profileを編集

= はくっつけておかないといけない。

export DB_USERNAME=dbuser
export DB_PASSWORD=password

設定を反映する。

$ source ~/.bash_profile

ユーザー登録エラー

dbuserが2人いたので登録できない。
ちなみに%はどこからでも接続可能。
railsはlocalhostを利用するので、 dbuser%を削除する。

mysql> select Host, User, Password from mysql.user;
+------------------+--------+-------------------------------------------+
| Host             | User   | Password                                  |
+------------------+--------+-------------------------------------------+
| localhost        | root   |                                           |
| ip-172-31-40-136 | root   |                                           |
| 127.0.0.1        | root   |                                           |
| ::1              | root   |                                           |
| localhost        |        |                                           |
| ip-172-31-40-136 |        |                                           |
| localhost        | dbuser |                                           |
| %                | dbuser | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------+--------+-------------------------------------------+

パスワードの設定はpssword関数を利用すること ハッシュにしないと駄目のよう
41桁の16進数にしなさいと言われる

mysql> set password for dbuser ='password';
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

ココを参照して dev.mysql.com

//これで良い @の前後も' 'で囲むこと!
SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

userを削除

@の前後をで囲むのを忘れないこと!

mysql> drop user 'dbuser'@'%';

//==
Query OK, 0 rows affected (0.00 sec)

確認すると成功

mysql> select Host, User, Password from mysql.user;
+------------------+--------+-------------------------------------------+
| Host             | User   | Password                                  |
+------------------+--------+-------------------------------------------+
| localhost        | root   |                                           |
| ip-172-31-40-136 | root   |                                           |
| 127.0.0.1        | root   |                                           |
| ::1              | root   |                                           |
| localhost        |        |                                           |
| ip-172-31-40-136 |        |                                           |
| localhost        | dbuser | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------+--------+-------------------------------------------+
7 rows in set (0.00 sec)

パスワードも設定されている。