MySQLコマンドの備忘録

以前作成した、PostgreSQLコマンドの基本的な所をまとめ中の記事が下記だが、今回はMySQLについて。

インストールやサーバ、MySQLの起動、Node.jsとの接続関連、データベースとテーブルの初期設定についての、Webアプリケーションを新規で作成する際に知っておきたいコマンドは下記記事にまとめた。

今回はMySQLを普段運用する際に使用するコマンドを自分なりに整理。
通常のCREATE、SELECT、INSERT文はいわゆるSQL文なので、ここではMySQL固有のものを。

MySQLサーバの起動、終了

まずはこのサーバを起動させないと始まらない。
終了は2行目のコマンド。

% brew services start mysql
% brew services stop mysql 

MySQL monitorの起動

MySQLサーバの起動後
user=”root”、localhost、パスワードありでMySQL monitor(mysql)の起動。

% mysql -u root -p                                                 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 Homebrew
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

MySQL monitorについて

MySQL monitor(以降mysqlと表記)とはコマンドラインでMySQLを操作する為に作られたプログラム。
コマンドはSQL文と同様にセミコロン”;”で終わるか、もしくは”\g”で終わらせる必要がある。

因みにcreatedbやdropdbをターミナル(zsh等)で行うPostgreSQLと異なり、
MySQLにおいては、サーバの起動/終了以外のほとんどの処理は、このmysqlで行うというのが現時点の理解。

MySQL monitorの終了。
“exit”や”quit”でも構わない。

mysql> \q
Bye

User設定の確認

Host、 User、authentication_string(MySQL8の前までのPassword)の状況を確認。

PasswordコラムはMySQL 5.7.6で削除されたとの事で、今までPasswordコラムに入っていたデータを含む全てのcredentials(資格情報)は、MySQL8からはこのauthentication_stringに保存される。
このコラムはブログ上では”*”で隠したが、パスワードを設定したrootとその他の内容が異なっている。

mysql> SELECT HOST, USER, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| HOST      | USER             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | ********************************************************************** |
| localhost | mysql.session    | ********************************************************************** |
| localhost | mysql.sys        | ********************************************************************** |
| localhost | root             | ********************************************************************** |
+-----------+------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

SHOW DATABASES:全てのデータベースを見る

どんなデータベースがあるのか確認。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| item_list          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

USE データベース名:データベースを選択

例えばデータベース”item_list”を選択。選択して初めてそのデータベースにSQL文での指示ができる。

mysql> USE item_list;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

STATUS:ステータス情報の表示

使用中の接続とサーバーに関するステータス情報を表示

mysql> status;
--------------
mysql  Ver 8.0.27 for macos11.6 on x86_64 (Homebrew)
Connection id:		10
Current database:	item_list
Current user:		root@localhost
SSL:			**********
Current pager:		less
(中略)
Uptime:			3 hours 25 min 39 sec
Threads: 2  Questions: 49  Slow queries: 0  Opens: 168  Flush tables: 3  Open tables: 89  Queries per second avg: 0.003

新規データベースの作成

例えばCREATE DATABASEで”test”の名でデータベースを作り、SHOWでみる。

mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| item_list          |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.01 sec)
mysql> 

データベースの削除

データベース”test”を削除し、SHOWで削除を確認。

mysql> DROP DATABASE test;
Query OK, 0 rows affected (0.02 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| item_list          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

clear “\c”:入力途中のstatementのキャンセル

記述途中だとこの印”->”で次の入力を待つが、”\c”でその状況をキャンセルする。

mysql> SELECT * from
    -> /* 記述途中だとこの印"->"で次の入力を待っている */
    -> \c
mysql> 

helpまたは”\h”:ヘルプの表示(mysql:クライアント用)

ysql> \h;
For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...) for the next query to pick up.
For server side help, type 'help contents'

サーバーサイドのヘルプ一覧

mysql> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
   Administration
   Components
   Compound Statements
   Contents
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Geographic Features
   Help Metadata
   Language Structure
   Loadable Functions
   Plugins
   Prepared Statements
   Replication Statements
   Storage Engines
   Table Maintenance
   Transactions
   Utility

この項目をhelpの後に繋げたコマンドを打つと、ヘルプの詳細を読める。

mysql> help Data Definition;
You asked for help about help category: "Data Definition"
For more information, type 'help <item>', where <item> is one of the following
topics:
   ALTER DATABASE
   ALTER EVENT
   ALTER FUNCTION
   ALTER INSTANCE
   ALTER LOGFILE GROUP
   ALTER PROCEDURE
   ALTER SCHEMA
   ALTER SERVER
   ALTER TABLE
   ALTER TABLESPACE
   ALTER VIEW
   CREATE DATABASE
   CREATE EVENT
   CREATE FUNCTION
   CREATE INDEX
   CREATE LOGFILE GROUP
   CREATE PROCEDURE
   CREATE SCHEMA
   CREATE SERVER
   CREATE SPATIAL REFERENCE SYSTEM
   CREATE TABLE
   CREATE TABLESPACE
   CREATE TRIGGER
   CREATE VIEW
   DROP DATABASE
   DROP EVENT
   DROP FUNCTION
   DROP INDEX
   DROP PROCEDURE
   DROP SCHEMA
   DROP SERVER
   DROP SPATIAL REFERENCE SYSTEM
   DROP TABLE
   DROP TABLESPACE
   DROP TRIGGER
   DROP VIEW
   FOREIGN KEY
   RENAME TABLE
   TRUNCATE TABLE

今後も分かった事を更新していく。

スポンサーリンク