MySQLをターミナルから操作するコマンドまとめ
備忘録を兼ねてターミナルからMySQLを操作するコマンドをまとめます。
MySQLをターミナルから操作するコマンド一覧
MySQLをインストールする(Mac)
$ brew install mysql
MySQLのバージョンを確認する
$ mysqld --version
MySQLを起動する
$ mysql.server start Starting MySQL SUCCESS!
MySQLの状態を確認する(ちゃんと動いているか)
$ mysql.server status SUCCESS! MySQL running (19648)
MySQLを終了する
$ mysql.server stop Shutting down MySQL
ログインする
事前にMySQLを起動して、以下を入力。
$ mysql -u root -p Enter password: //空でenter Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.12 Homebrew mysql > //MySQLを起動していない時のエラー $ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Macではデフォルトでrootユーザーにはパスワードが設定されていないので特に変更してなければそのまま空の状態でenterを押してOKです。
久しぶりにMySQLにログインしようとした時に、エラーが出まくってどうしようかと悩んでいたら「そもそもMySQL起動していなかった」ということがよくあったので、皆様もご注意ください。
$ mysql.server status SUCCESS! MySQL running (19648)
稼働状況は上記コマンドで確認できます。
データベースを作成する
以下ではroot権限でMySQLにログインした後の状態で説明します。ターミナルに mysql > と表示されているか確認してください。
mysql> CREATE DATABASE your_db; Query OK, 1 row affected (0.00 sec)
mydbの箇所はデータベース名です。任意の名前を割り当てます。上記、コマンドでは「your_db」というデータベースが作成されます。
ユーザーを作成する
mysql> CREATE USER user_name@localhost IDENTIFIED BY 'user_password'; Query OK, 0 rows affected (0.01 sec)
次にデータベースにアクセスできるユーザーを作成するコマンドです。
上記ではローカルホストから接続可能なユーザー「user_name」を作成しています。
なお、認証時に必要なパスワードは「user_password」と設定しています。
ここは、BY ‘1234’;など自由に設定して構いません。が、単純なパスワードは避けましょう。
ユーザーに権限を付与する
作成しただけのユーザーではデータベースにアクセスできません。
このままの状態で、マイグレーションしようものならエラーが返ってきます。
なので、作成したユーザーに権限を付与してあげます。
grant all on your_db.* to 'user_name'@'host_name' identified by 'user_password';
最後に、変更を反映させます。
flush privileges;
ここで少し脱線しますが、MacでMySQLを直感的に操作できるSequel PROという便利なアプリケーションがあります。
しかし、MySQLのバージョンが8になり、Sequel PROに接続できないケースがあります。
Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found
これはSequel PROが最新のバージョンに対応していないため起こるエラーで、解決策としては
- MySQLをダウングレードする
- ユーザー作成時の認証プラグインを変更する
主にこの二つがありますが、MySQLをダウングレードしてもバージョン8のファイルをしっかり削除してなければエラーは起こります。
そこで、ユーザー作成時にSequel PROでも接続できるようにデフォルトの認証プラグインを変更します。(Sequel PROを使わない人は飛ばしてください)
mysql> ALTER USER mydbuser@localhost IDENTIFIED WITH mysql_native_password BY 'password';
変更点は、WITH mysql_native_passwordの部分です。
変更を反映させます。
mysql> FLUSH PRIVILEGES;
これでMySQLのバージョン8でもSequle PROにログインできるようになります。
作成しているデータベースを一覧で確認する
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysite | | sys | +--------------------+ 4 rows in set (0.02 sec)
databasesの箇所は複数形です。タイプミスしないように注意。
特定のデータベースに切り替える
上記一覧にあるデータベースで特定のデータベースに切り替えます。
mysql> use mydb; Database changed
use以下は特定のデータベース名を入力します。
データベースのテーブルを確認する
mysql> show tables;
目的のデータベースに切り替えていることが前提です。
特定テーブルの特定カラムを見る
describe user;
userの箇所に特定カラムの名称を入力。