Mysql操作マニュアル


#Mysqlの基本操作

##1.Mysql起動
・mysql.server start = Mysqlが起動します

・mysql -u root = Mysqlが起動した状態であればサーバーに入ることが出来ます。

Mysqlが起動出ていないとエラー：
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
（socketが動いてないよ？みたいなエラーになるので注意）

##2.簡単な操作
・help;  :[help;]コマンドで利用できるコマンドの一覧が表示される

・control + L  :画面のログをクリア

・select user();  :こちらのコマンドで現在のユーザー情報を表示

・\q 又は　quit;   :この２つのコマンドでサーバーから抜けることが可能


mysqlはセミコロン(;)で区切られている為、セミコロンを忘れると、この様に続きを書いてねと表示される

```Mysql
select user()
  ->
  
  こう追加すればselect user();として認識してくれる
  ->;
```
ちなみに最初から描き直したい場合は\cを利用する

```mysql

mysql> select user()
    -> \c
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

```
てな感じになる


##3.データベースの操作
DBの作成コマンド
・create database DB名;

DBの削除コマンド
・drop database DB名;

アクセスできるDB名を確認するコマンド
・show databases;
こんな感じに出てくる（rootユーザーで実行している為全て出てきている）

```
+--------------------------+
| Database                 |
+--------------------------+
| information_schema       |
| e_sample_app_development |
| e_sample_app_production  |
| e_sample_app_test        |
| music_app_development    |
| music_app_test           |
| myapp_development        |
| myapp_production         |
| myapp_test               |
| myblog_development       |
| myblog_test              |
| mydb01                   |
| mydb02                   |
```


操作対象になっているDBの確認コマンド
・select database();    

```
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)
```
NULLになっているので操作対象のDBが今は存在していない事を示している

実際に操作対象にするコマンドがこちら
・use DB名;

例：use mydb02;

```
mysql> use mydb02;
Database changed
```
mydb02を操作対象にしたので操作対象になっているか確認
select database();

```
mysql> select database();
+------------+
| database() |
+------------+
| mydb02     |
+------------+
1 row in set (0.00 sec)
```

##4.作業用ユーザーの作成
rootユーザーの場合作業できる範囲が広い(すべてに権限がある)のでDB毎に作業用ユーザーを作成することが推奨されています

ユーザー作成コマンド

```
create user ユーザー名@localhost identified by 'パスワード';
```

今回はテストでこんな感じのユーザーを作成

```
create user dbuser01@localhost identified by '66a66b66c';
```

###【作成したユーザーに作成したDBのテーブルを操作する権限を与える】

```コマンド：
grant all on DB名.* to ユーザー名@localhost;
```
実際に作成したユーザーとDBで実行してみる：grant all on mydb01.* to dbuser01@localhost;

```Mysql
#コマンド実行
grant all on mydb01.* to dbuser01@localhost;

#権限付与できた
Query OK, 0 rows affected (0.01 sec)

権限の付与に成功した！
```

このコマンドで、dbuser01ユーザーに対してmydb01データベースのすべてのテーブルに関する全ての権限を与えるという意味になる

##rootから権限付与したユーザーに切り替え
現在はrootユーザーでログインしているので\qで一旦抜け出す


mysql -u dbuser01 -p mydb01
パスワードが聞かれるので、create userで作成したパスワードを入力
うまくいけば下記のような表示がされる

```
#これが表示されていればOK
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22 Homebrew
```

念のためユーザーとDBが操作対象に変更されているか確認
・select user(); 実行

```
+--------------------+
| user()             |
+--------------------+
| dbuser01@localhost |
+--------------------+
1 row in set (0.00 sec)
```
dbuser01になっていることを確認

・続いてshow databases; 実行

```
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb01             |
+--------------------+
2 rows in set (0.00 sec)
```

mydb01が表示されていることを確認






#用語　
##クエリとは？
Mysqlでのコマンドの事をクエリと呼ぶらしい
・select database();とか
・use mydb02;とか
をクエリらしいという解釈した。

あとMysqlのクエリでは大文字、小文字の区別がないので
SElecT DaTabase();とかでも同じ結果が返ってくる

##終わり
とりあえず基本的な操作はこんな感じ？
何か追加があれば追加していきます