MySQLのこと。

MySQLのことについてまとめているブログ。他人に見せる用でもなく、自分の勉強備忘録。検索インデックスも外してるので、辿りついた方・・・ようこそ。そんな大した情報ないですよ?!たまにアルゴリズムの練習も

WindowsでMySQL環境構築~データベース構築からダミーデータベース作成まで~

はじめに

ここではMySQLの環境構築の内容をまとめておく。環境はWindowsMySQLのバージョンは8.0を想定している。

MySQLのインストールをダウンロード

"MySQL Community Downloads"からインストーラーをダウンロードする。

f:id:AZUMINO:20191117014857p:plain

左下の「No thank, just start my download」をクリックすると、ダウンロードが始まる。

f:id:AZUMINO:20191117014901p:plain

インストールのダウンロードが終わったら、インストーラーをクリックし、インストールを進める。ポップアップで色々聞かれるので、「はい」を選択。

「Choosing a Setup Type」は「Developer Default」を選択する。

f:id:AZUMINO:20191117015250p:plain

「Check Requirment」は「Next」を選択すると、ポップアップで要件がうんたらと言われるので「Yes」を選択。

f:id:AZUMINO:20191117015823p:plain

「Installation」は「Excute」を選択する。ライセンスの同意を求めるポップアップがでてくるので、同意しておく。これで必要な関連ソフトがインストールされる。

f:id:AZUMINO:20191117015652p:plain

インストールが完了すると、「Next」が押せるようになるので、押す。

f:id:AZUMINO:20191117020029p:plain

「Product Configuration」は「Next」を押す。

f:id:AZUMINO:20191117022613p:plain

ここではレプリケーションは必要ないので「High Availabilty」も「Next」を押す。

f:id:AZUMINO:20191117022737p:plain

「Type and Networking」はPortが3306かどうか確認しておく。「Next」を押す。

f:id:AZUMINO:20191117022920p:plain

「Authentication Method」は「Use Strong Password ****」にチェックを入れ、「Next」を押す。

f:id:AZUMINO:20191117022956p:plain

「Accounts and Roles」でMySQLのrootユーザーのパスワードを設定する。ユーザーも必要であらば、作成しておく。

f:id:AZUMINO:20191117023053p:plain

Windows Service」もそのままで、「Next」を押す。

f:id:AZUMINO:20191117023158p:plain

「Apply Configuration」もそのままで、「Execute」を押す。

f:id:AZUMINO:20191117023237p:plain

終わったら「Finish」を押す。

f:id:AZUMINO:20191117023256p:plain

「Product Configuration」もそのままで、「Next」を押す。

f:id:AZUMINO:20191117023331p:plain

MySQL Router Configuration」もそのままで、「Next」を押す。

f:id:AZUMINO:20191117023409p:plain

「Product Configuration」もそのままで、「Next」を押す。

f:id:AZUMINO:20191117023424p:plain

「Connect To Server」では、先ほどの設定したrootユーザーのパスワードを入力し、テスト接続する。

f:id:AZUMINO:20191117023454p:plain

「Apply Configuration」もそのままで、「Execute」を押す。

f:id:AZUMINO:20191117023545p:plain

終わったら「Finish」を押す。

f:id:AZUMINO:20191117023615p:plain

「Product Configuration」もそのままで、「Next」を押す。

f:id:AZUMINO:20191117023627p:plain

「Installation Complete」では、このままMySQL Workbenchで再度アクセスできるかどうかを確認するために上のチェックは付けておく。

f:id:AZUMINO:20191117023706p:plain

MySQL WorkBench」が起動したら、rootでアクセスできるかどうか、先ほどのパスワードで試しておく。

f:id:AZUMINO:20191117023831p:plain

コマンドプロンプトからMySQLを起動

コマンドプロンプトからMySQLを起動させるためには、PATHを設定する必要がある。左下Windosボタン右クリック >> システム >> システムの詳細設定 >> 環境変数で「新規」を選択し、下記を入力して保存して、PCを再起動。

  • 変数名 : Path
  • 変数値 : C:¥Program Files¥MySQL¥MySQL Server 8.0¥bin

コマンドプロンプトを起動し、下記を入力。Welcome hogeがでれば問題なくMySQLにはいれている。

>mysql -u root -p
>Enter password: ****************

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.18 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

LOAD DATA INFILEするために

まずはデータベースとテーブルを作る

mysql> create database ec;
mysql> use ec;

mysql> CREATE TABLE orders (
    order_id INT NOT NULL,
    order_datetime DATETIME NOT NULL,
    user_id INT NOT NULL,
    branch_num INT NOT NULL,
    price INT NOT NULL,
    product_id INT NOT NULL,
    INDEX ind_id(user_id),
    INDEX ind_ord(order_id)
);

mysql> CREATE TABLE users (
    user_id INT,
    gender VARCHAR(255),
    area VARCHAR(255),
    age INT,
    INDEX id_index (user_id)
);

--secure-file-priv optionを外す

C:\ProgramData\MySQL\MySQL Server 8.0に移動する。my.iniを開き、修正する。213行目あたりにある# Secure File Priv.を修正して保存。

# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"

↓

# Secure File Priv.
secure-file-priv=""

local_infileの設定を修正

--local-infileのデフォルトが0になっているので1を指定する。

mysql> SELECT @@local_infile;
+----------------+
| @@local_infile |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

mysql> SET PERSIST local_infile= 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@local_infile;
+----------------+
| @@local_infile |
+----------------+
|              1 |
+----------------+
1 row in set (0.00 sec)

そして、MySQL--local_infile=1オプションをつけてログインする。

>mysql -u root -p --local_infile=1
Enter password: ****************

これで行けるはずなんだが、なぜかファイルが見つからないエラーが返ってくるので、stackoverflowにあったように、ファイルを\から\\に変更したらいけた。

mysql> LOAD DATA LOCAL INFILE 'C:\\Users\\akisu\\Desktop\\cust_mst_1m.csv' INTO TABLE ec.users FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 1 LINES;
Query OK, 959676 rows affected (1 min 22.92 sec)
Records: 959676  Deleted: 0  Skipped: 0  Warnings: 0

mysql> LOAD DATA LOCAL INFILE 'C:\\Users\\akisu\\Desktop\\orders_30m.csv' INTO TABLE ec.orders FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 1 LINES;
Query OK, 32434489 rows affected (1 hour 21 min 13.46 sec)
Records: 32434489  Deleted: 0  Skipped: 0  Warnings: 0

内容を確認しておく。

mysql> select count(1) from users;
+----------+
| count(1) |
+----------+
|   959676 |
+----------+
1 row in set (1.49 sec)

mysql> select * from users limit 5;
+---------+--------+--------+------+
| user_id | gender | area   | age  |
+---------+--------+--------+------+
|   53605 | Male   | area_A |   39 |
|  561254 | Female | area_G |   40 |
|  971141 | Female | area_C |   24 |
|  431258 | Female | area_B |   34 |
|  826277 | Male   | area_D |   45 |
+---------+--------+--------+------+
5 rows in set (0.00 sec)


mysql> select count(1) from orders;
+----------+
| count(1) |
+----------+
| 32434489 |
+----------+
1 row in set (42.01 sec)


mysql> select * from orders limit 5;
+----------+---------------------+---------+------------+-------+------------+
| order_id | order_datetime      | user_id | branch_num | price | product_id |
+----------+---------------------+---------+------------+-------+------------+
|        2 | 2003-12-20 09:10:59 |   53605 |          1 |   200 |      33120 |
|        2 | 2003-12-20 09:10:59 |   53605 |          2 |   110 |      28985 |
|        2 | 2003-12-20 09:10:59 |   53605 |          3 |   410 |       9327 |
|        2 | 2003-12-20 09:10:59 |   53605 |          4 |   230 |      45918 |
|        2 | 2003-12-20 09:10:59 |   53605 |          5 |   330 |      30035 |
+----------+---------------------+---------+------------+-------+------------+
5 rows in set (0.01 sec)