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();とかでも同じ結果が返ってくる
終わり
とりあえず基本的な操作はこんな感じ?
何か追加があれば追加していきます