20211202のMySQLに関する記事は2件です。

django centos7にて mysqlのエラー

環境: 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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQL SELECT文

以前SQL コマンド 備忘録でSQLについて軽く投稿しました。 今回はSELECT文について少し掘り下げます。 用意したデータ1(Shohin Table) 商品ID(shohin_id) 商品名(shohin_mei) 商品分類(shohin_bunrui) 販売単価(hanbai_tanka) 仕入れ単価(shiire_tanka) 登録日(torokubi) 0001 トレーナー 衣類 2000 1000 2021-01-20 0002 シャーペン 文房具 200 100 2021-03-20 0003 Yシャツ 衣類 1500 800 2021-03-23 0004 眼鏡 装飾品 5000 2500 2021-05-04 0005 ボールペン 文房具 500 250 2021-05-06 0006 マグカップ 食器 1500 700 2021-04-05 0007 お皿 食器 400 250 2021-07-31 0008 マーカーペン 文房具 150 100 2021-05-28 0009 ネックレス 装飾品 8000 6000 2021-06-20 用意したデータ2(TenpoShohin Table) 店舗ID(tenpo_id) 店舗名(tenpo_mei) 商品ID(shohin_id) 数量(suryo) 000A 東京 0001 20 000A 東京 0002 15 000B 名古屋 0003 60 000B 名古屋 0006 50 000B 名古屋 0009 90 000C 大阪 0002 100 000C 大阪 0005 40 000C 大阪 0007 30 000D 福岡 0004 80 000D 福岡 0008 120 基本例 SELECT 列名[表示用列名] FROM テーブル名; --テーブルから列を抜き出す。表示用の列名は省略可能 SELECT * FROM テーブル名; --テーブルから全て選んで表示する --Shohinテーブルから商品ID、商品名、仕入れ単価を出力 SELECT shohin_id, shohin_mei, shiire_tanka FROM Shohin; --実行結果 shohin_id|shohin_mei|shiire_tanka ---------+----------+------------ 0001 |トレーナー | 1000 0002 |シャーペン | 100 0003 |Yシャツ | 800 0004 |眼鏡 | 2500 0005 |ボールペン | 250 0006 |マグカップ | 700 0007 |お皿 | 250 0008 |マーカーペン | 100 0009 |ネックレス | 6000 条件指定 SELECT 列名 FROM テーブル名 WHERE 条件式; --Shohinテーブルから条件「商品分類が文房具のものだけを出力」 SELECT shohin_mei, shohin_bunrui FROM Shohin WHERE shohin_bunrui = '文房具'; --実行結果 shohin_mei|shohin_bunrui ----------+------------ シャーペン |文房具 ボールペン |文房具 マーカーペン |文房具 重複を排除 SELECT DISTINCT 列名 FROM テーブル名; --Shohinテーブルからshohin_bunrui列の重複を排除して出力 shohin_bunrui ------------- 衣類 文房具 装飾品 食器 ここまでは基本的なSELECT文の使い方ですが、2つの(複数の)テーブルからデータを取得したい場合もあります。 結合 結合とは別のテーブルから列を持ってきて「列を増やす」操作です。 この操作が役立つのは欲しいデータ(列)が1つのテーブルだけからでは選択できない場合。 データ1「Shohin」とデータ2「TenpoShohin」を結合してみたいと思います。 内部結合(INNER JOIN) TenpoShohinからは東京店(000A)が商品ID「0001」「0002」を取り扱っていることがわかるが、これらの商品名や販売単価はTenpoShohinテーブルからはわからない。これらはShohinテーブルにしか存在していない列です。 ここでShohinテーブルから商品名(shohin_mei)、販売単価(hanbai_tanka)の列をTenpoShohinにくっつけてみます。 2つのテーブルを内部結合する SELECT TS.tenpo.id, TS.tenpo_mei, TS.shohin_mei, S.shohin_mei, S.hanbai_tanka FROM TenpoShohin AS TS INNER JOIN Shohin AS S ON TS.shohin_id = S.shohin_id; --実行結果 tenpo_id|tenpo_mei|shohin_id|shohin_mei|hanbai_tanka 000A |東京 |0001 |トレーナー | 2000 000A |東京 |0002 |シャーペン | 200 000B |名古屋 |0003 |Yシャツ | 1500 000B |名古屋 |0006 |マグカップ | 1500 000B |名古屋 |0009 |ネックレス | 8000 000C |大阪    |0002 |シャーペン | 200 000C |大阪    |0005 |ボールペン | 500 000C |大阪    |0007 |お皿 | 400 000D |福岡    |0004 |眼鏡 | 2500 000D |福岡    |0008 |マーカーペン | 150 FROM句 FROM TenpoShohin AS TS INNER JOIN Shohin AS S 結合を行うときはFROM句に複数のテーブルを記述する。 TS,Sはテーブルの別名です。オリジナルのテーブル名のままでも使えるが、テーブル名が長くなるとSQL文が読みにくくなるため、別名をつけることが一般的です。 ON句 ON TS.shohin_id = S.shohin_id 2つのテーブルを結びつける列(結合キー)を指定する。 今回の例でいうと商品ID(shohin_id)。 内部結合を行う場合は記述が必須(ないとエラーになる)。 SELECT句 SELECT TS.tenpo.id, TS.tenpo_mei, TS.shohin_mei, S.shohin_mei, S.hanbai_tanka 結合をつかった場合のSELECT句は全て<テーブルの別名>.<列名>の書式で書く。 参考文献 SQL ゼロからはじめるデータベース操作 著/ミック
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む