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; :この2つのコマンドでサーバーから抜けることが可能

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

select user()
  ->

  こう追加すればselect user();として認識してくれる
  ->;

ちなみに最初から描き直したい場合は\cを利用する

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;

#コマンド実行
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();とかでも同じ結果が返ってくる

終わり

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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.