回答編集履歴

2

Add third answer

2020/08/16 12:38

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -85,3 +85,75 @@
85
85
  ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ > データベースを追加しようとしたところ接続エラーが発生してしまいました。
92
+
93
+
94
+
95
+ ```console
96
+
97
+ ~@yk golfour_aws % docker-compose run web bundle exec rake db:create
98
+
99
+ Starting golfour_aws_db_1 ... done
100
+
101
+ Database 'golfour_development' already exists
102
+
103
+ Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
104
+
105
+ Couldn't create 'golfour_test' database. Please check your configuration.
106
+
107
+ rake aborted!
108
+
109
+ Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
110
+
111
+ ```
112
+
113
+
114
+
115
+ 上記のエラーメッセージは、
116
+
117
+ 「golfour_development は作成済ですが、golfour_test を作ろうとして
118
+
119
+  ローカルの MySQL にアクセスしようとしましたが、接続用 socket がみつかりませんでした」
120
+
121
+ という内容です
122
+
123
+
124
+
125
+ web コンテナーのローカルには MySQL はないので
126
+
127
+ db サービスに接続する必要がありますが、
128
+
129
+ database.yml の設定が、host の設定が `development` にしかありませんので、
130
+
131
+ `test` にも追加しましょう:
132
+
133
+
134
+
135
+ ```diff
136
+
137
+ development:
138
+
139
+ <<: *default
140
+
141
+ database: golfour_development
142
+
143
+ username: root
144
+
145
+ password: password
146
+
147
+ host: db
148
+
149
+
150
+
151
+ test:
152
+
153
+ <<: *default
154
+
155
+ database: golfour_test
156
+
157
+ + host: db
158
+
159
+ ```

1

Add second answer

2020/08/16 12:38

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -1,3 +1,7 @@
1
+ ## 元の回答
2
+
3
+
4
+
1
5
  db サービスのコンテナーが停止していませんでしょうか?
2
6
 
3
7
 
@@ -39,3 +43,45 @@
39
43
 
40
44
 
41
45
  参考: [docker-compose logs | Docker Documentation](https://docs.docker.com/compose/reference/logs/)
46
+
47
+
48
+
49
+ ## 追記
50
+
51
+
52
+
53
+ 根本原因は `docker-compose.yml` で `MYSQL_USER` に `root` を指定していることです
54
+
55
+
56
+
57
+ `root` は指定しなくても作成されるので
58
+
59
+ ここでは別のユーザー名を指定するか、
60
+
61
+ もしくは別のユーザーが必要ないのであれば
62
+
63
+ `MYSQL_PASSWORD` とともに環境変数を削除し、
64
+
65
+ ユーザーの作成をやめます
66
+
67
+
68
+
69
+ ログが表示されないのは、再起動を繰り返したため
70
+
71
+ 過去のログが流れて最初のエラーが消えてしまっている可能性があります
72
+
73
+
74
+
75
+ ./mysql/mysql_data を削除して再起動すると
76
+
77
+ 次のようなエラーが表示されます:
78
+
79
+
80
+
81
+ ```console
82
+
83
+ 2020-08-16 13:28:46+09:00 [Note] [Entrypoint]: Creating user root
84
+
85
+ ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
86
+
87
+ ```