環境:
centos 7
django 3.2
ステージング環境を作成して、そこにdjangoを置こうとしました。
どうやら、サーバーを立てようとしたところエラーになってしまいました。
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
https://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server
こちらの状況と同じ感じになりました。
なので、結果として
900以上の支援がついている
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
を実行しました。
中身を見ていきます。
中身
エラー内容は、Host xxxx に 繋がりません。とのこと。allow(許可)がありませんてきなことなので、dbに権限が渡っていないことが考えられます。
dbに権限を与えてあげましょう。
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'some_pass';
create userで、まずはlocalhostに、ユーザー作成しパスワードを設定する。
grant all(https://dev.mysql.com/doc/refman/8.0/en/grant.html)
は、grant権限を持たせるステートメント(文章)で、権限を付与できるらしい。PRIVILEGESは"特権"という意味。
GRANT ALL PRIVILEDGES ON データベース.* TO ユーザー名@localhost IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
と書く。 *(アスタリスク)なので、ワイルドカードの意味ですね。特定のdbとhostに権限を与えてあげる。そういうものらしい。
その次に、ステージングのdbに権限を与える。
CREATE USER 'user_name'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' WITH GRANT OPTION;
にて、ステージング環境のhostに権限を与える感じ。
host名には、ワイルドカードであると%が使用できる。は任意の1文字、%は任意の長さの文字列に一致する。
user名にはワイルドカードは使用できないとのこと。
localhostとステージングの2つに権限を与えるのは、appがdbに接続するため + mysql -u user_name -p でアクセスするための2通りの意味合いがあるかもしれない。(わからない)
そして自分は、dbのパスワードを設定する時に、エラーというか警告が出てきた。
パスワードもっと強固にしてくださいの警告でした。なので、より強固に大文字や記号を用いて設定しました。
https://qiita.com/keisukeYamagishi/items/d897e5c52fe9fd8d9273
参考:
https://qiita.com/ritukiii/items/afdc91e68d0cf3e0f383
https://www.dbonline.jp/mysql/user/index1.html