文系データサイエンティストの備忘録

英語できないのに外資系で働くデータ分析屋。

mysqlをUbuntuに導入して外付けHDDにデータ格納、外部クライアントのMacから接続してみる(ローカルネットワーク上)

気まぐれで3TBの外付けHDDを購入したので、びっぐでーた(棒)で遊びたい。というわけで、まずはMySQLから。

  1. mysqlをインストール

  2. 外部クライアントから接続用のユーザ設定

  3. 外部クライアントのアドレスを許可

  4. HDDをext4でフォーマット

  5. HDDをmysqlのデータ格納場所にマウント

環境は

ローカルネットワーク上です。

1. mysqlをインストール

sshUbuntuに入って、

sudo apt-get install mysql-server

2. 外部クライアントから接続用のユーザ設定

rootユーザにローカルネットワークからのアクセスができるようにします。 <pass>は自分の好きなパスワードを設定。

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"192.168.%" IDENTIFIED BY '<pass>' WITH GRANT OPTION;

rootユーザがローカルネットワーク(192.168.XX.XX)から接続できる登録がされたことを確認します。

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 192.168.% |

3. 外部クライアントのアドレスを許可

mysqlの設定ファイルにbind-addressを外部クライアント用に追加する。192.168.XX.XXには外部クライアントでifconfigして確認できたアドレスを入れてください。

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 192.168.XX.XX

/etc/mysql/my.cnfとか/etc/mysql/my.cnfをいじれとか言う人達もいますが。要確認。

mysqlを再起動して設定を反映させます。

sudo /etc/init.d/mysql restart

ポートが開かれているか確認しましょう。

netstat -tlpn

Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       PID/Program name
tcp        0      0 192.168.<ナイショ>:3306       0.0.0.0:*               LISTEN      -               

外部クライアントのMacから

mysql -h 192.168.<ナイショ> -u root -p <DB名>

で入れるか確認。適当に遊ぶようDBをCREATE DATABASEしとくといいかも。

ちなみに、mysql再起動時に、 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)みたいなのがでたら結構闇が深いです。自分の場合は、mysqld.sockを作って権限与えて、システム再起動して、、、みたいな感じになりました。とりあえずシステム再起動して深呼吸してみるのがいいかと思います。

4. HDDをext4でフォーマット

やっとHDD触れます。

まずは接続されている外付けHDDを確認しましょう。

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       2.7T   73M  2.6T   1% /media/<ナイショ>/b84f80c4-e756-4353-90fc-cab59d936fe0

おぉ、、いる。 パーティションテーブルを作成して、ディスクラベル/ファイルシステム/開始終了位置を決めます。

sudo parted /dev/sdb1

GNU Parted 3.1
/dev/sdb1 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) mklabel                                        
新しいディスクラベル? gpt                                                 
警告: いま存在している /dev/sdb1 のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? Y
(parted) mkpart                                                           
パーティションの名前?  []?                                                
ファイルシステムの種類?  [ext2]? ext4
開始? 0%                                                                  
終了? 100%
(parted) quit

ext4が無難だと思います。

ファイルシステム作成でHDDがext4で使えるようになります。

sudo mkfs -t ext4 /dev/sdb1

5. HDDをmysqlのデータ格納場所にマウント

mysqlのデータ格納場所にマウントします。

sudo mount /dev/sdb1 /var/lib/mysql

確認。

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       2.7T   73M  2.6T   1% /var/lib/mysql

まだちゃんと動作確認はできてないので、びっぐでーた(棒)が無事mysqlに入ったら追記しようかと思います。