MariaDB を管理するための基本操作コマンドについて

MariaDB の管理コマンドは、MySQL と同じです。 今回は MariaDB を管理するために必要な最低限のコマンド操作方法についてご紹介します。

  • データベースへログイン
  • ユーザ登録、及び削除
  • データベース作成、及び削除
  • テーブル作成、及び削除
  • レコードの挿入、更新、削除
  • 全データベースのバックアップ、及びリストア
  • 特定データベースのバックアップ、及びリストア

MariaDB へログイン

まずは、root ユーザでデータベースへログインします。

mysql -u<ユーザ名> -p

データベースへログインRaw Code(S)Raw Code(T)
# mysql -uroot -p
Enter password:    #### パスワードを入力
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.14-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]>
MariaDB [(none)]>

ユーザ登録、及び削除

ユーザ登録

データベースユーザは、ユーザ名ホスト名 で管理されます。

この例では、以下の作業を実施し、my_db データベースに対して管理者権限を持つ db_user を新規で作成します。

grant all on <接続を許可するデーベース名>.* to <ユーザ名@ホスト名> identified by 'パスワード';

ユーザ名ホストパスワード接続 DB権限備考
db_userlocalhostdb_user123my_db管理者db_user@localhost

ちなみに、データベース my_db が存在しなくてもユーザ自体は作成することができます。

MariaDB 新規ユーザ登録Raw Code(S)Raw Code(T)
MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+

MariaDB [(none)]> grant all on my_db.* to db_user@localhost identified by 'db_user123';

MariaDB [(none)]> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | 127.0.0.1 |
| root    | ::1       |
| db_user | localhost |
| root    | localhost |
+---------+-----------+

作成したユーザで DB へログイン

新規作成したユーザで MariaDB へ接続するには以下のようにします。

# mysql -udb_user -p

ユーザ削除

以下の例では、先ほど作成したユーザ db_user@localhost を削除します。

delete from mysql.user where user like 'ユーザ名' and host like 'ホスト名';

MariaDB ユーザ削除Raw Code(S)Raw Code(T)
MariaDB [(none)]> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | 127.0.0.1 |
| root    | ::1       |
| db_user | localhost |
| root    | localhost |
+---------+-----------+

MariaDB [(none)]> delete from mysql.user where user like 'db_user' and host like 'localhost';

MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+

データベース・テーベル操作

データベース作成

以下の例では、新しいデータベース my_db を新規作成します。

create database <データベース名>;

MariaDB データベース作成Raw Code(S)Raw Code(T)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

MariaDB [(none)]> create database my_db;

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_db              |
| mysql              |
| performance_schema |
+--------------------+

テーブル作成

以下の例では、新しいテーブル my_table を新規作成します。

create table <テーブル名>(フィールド名,データタイプ ・・・);

テーブル名フィールド名データタイプ備考
my_tablenumint数字
namevarchar(20)文字列
MariaDB テーブル作成Raw Code(S)Raw Code(T)
MariaDB [(none)]> use my_db
Database changed;

MariaDB [my_db]> create table my_table(num int,name varchar(20));

MariaDB [my_db]> show tables;
+-----------------+
| Tables_in_my_db |
+-----------------+
| my_table        |
+-----------------+

テーブルにデータ追加

テーブル作成が終わったところで、今度は作成した my_table に実際にデータを挿入 (レコード登録) します。

以下の例では、おなじみの foo、bar、baz、qux を挿入します。

insert into <テーブル名> values(フィールド1の値,フィールド2の値,・・・);

また、この後テーブル更新を実施するため、テスト用として zzz を追加で挿入します。

MariaDB レコード挿入Raw Code(S)Raw Code(T)
MariaDB [my_db]> insert into my_table values(1,'foo');
MariaDB [my_db]> insert into my_table values(2,'bar');
MariaDB [my_db]> insert into my_table values(3,'baz');
MariaDB [my_db]> insert into my_table values(4,'qux');
MariaDB [my_db]> insert into my_table values(5,'zzz');

MariaDB [my_db]> select * from my_table;
+------+------+
| num  | name |
+------+------+
|    1 | foo  |
|    2 | bar  |
|    3 | baz  |
|    4 | qux  |
|    5 | zzz  |
+------+------+

テーブルのデータ更新・アップデート

以下の例では、my_table の登録されているレコード zzzquux に変更します。

update <テーブル名> set <設定値> where <条件>;

MariaDB レコード更新Raw Code(S)Raw Code(T)
MariaDB [my_db]> select * from my_table;
+------+------+
| num  | name |
+------+------+
|    1 | foo  |
|    2 | bar  |
|    3 | baz  |
|    4 | qux  |
|    5 | zzz  |
+------+------+

MariaDB [my_db]> update my_table set name='quux' where num=5;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [my_db]> select * from my_table;
+------+------+
| num  | name |
+------+------+
|    1 | foo  |
|    2 | bar  |
|    3 | baz  |
|    4 | qux  |
|    5 | quux |
+------+------+

テーブルのデータ削除

以下の例では、my_table の登録されているレコード quux を削除します。

delete from <テーブル名> where <条件>;

MariaDB レコード削除Raw Code(S)Raw Code(T)
MariaDB [my_db]> select * from my_table;
+------+------+
| num  | name |
+------+------+
|    1 | foo  |
|    2 | bar  |
|    3 | baz  |
|    4 | qux  |
|    5 | quux |
+------+------+

MariaDB [my_db]> delete from my_table where num=5;

MariaDB [my_db]> select * from my_table;
+------+------+
| num  | name |
+------+------+
|    1 | foo  |
|    2 | bar  |
|    3 | baz  |
|    4 | qux  |
+------+------+

テーブル削除

テーブルを削除する前に、テーブルが登録されているデータベース自体を削除すると中のテーブルまで全部削除されますが、この例では、my_table を先に削除します。

drop table <テーブル名>;

MariaDB テーブル削除Raw Code(S)Raw Code(T)
MariaDB [my_db]> drop table my_table;

MariaDB [my_db]> show tables;
Empty set (0.00 sec)

データベース削除

以下の例では、データベースである my_db を削除します。

drop database <データベース名>;

MariaDB データベース削除Raw Code(S)Raw Code(T)
MariaDB [my_db]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_db              |
| mysql              |
| performance_schema |
+--------------------+

MariaDB [my_db]> drop database my_db;

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

データベースバックアップ、及びリストア

データベースのバックアップ・リストアコマンドは、MySQL と同じように mysqldumpmysql コマンドを使います。

データベースバックアップ

データベースのバックアップは、mysqldump の実行結果をファイルに保存します。

mysqldump -uroot -p [オプション] --all-databases > 保存するファイル名

全てのデータベースをバックアップする際によく使われるオプションとして以下があります。

  • --lock-all-tables (-x) : 全データベースのテーブルをロックした状態でバックアップ
  • --events (-E) : Event Scheduler のイベントを含めてバックアップ

全てのデータベースをバックアップ

データベースのバックアップ・リストア操作は、データベース内ではなく、OS の root ユーザで実施します。

MariaDB 全データベースのバックアップRaw Code(S)Raw Code(T)
MariaDB [(none)]> exit
Bye

# mysqldump -uroot -p --lock-all-tables --events --all-databases > all_db.sql
Enter password:

# ls -l
合計 468
-rw-r--r-- 1 root root 475956  6月  7 17:01 all_db.sql

特定のデータベースのみバックアップ

また、特定のデータベースだけをバックアップすることも可能です。

mysqldump -uroot -p 特定データベース名 > 保存するファイル名

MariaDB 特定データベースのバックアップRaw Code(S)Raw Code(T)
# mysqldump -uroot -p my_db > my_db.sql
Enter password:

# ls -l
合計 4
-rw-r--r-- 1 root root 1906  6月  7 17:13 my_db.sql

参考 : パスワードを付けて、非対話形式でバックアップ

ちなみに、非対話形式でバックアップしたい場合には、-pパスワード オプションを付けます。

MariaDB データベースのバックアップ(非対話型)Raw Code(S)Raw Code(T)
# mysqldump -uroot -pMyRootPassword --lock-all-tables --events --all-databases > all_db.sql
# mysqldump -uroot -pMyRootPassword my_db > my_db.sql

# ls -l
合計 472
-rw-r--r-- 1 root root 477150  6月  7 17:15 all_db.sql
-rw-r--r-- 1 root root   1906  6月  7 17:15 my_db.sql

データベースリストア

データベースのリストアは、バックアップのダンプファイルを mysql に読込ませるだけで良いです。

全てのデータベースをリストア

mysql -uroot -p < リストアする全データベースのファイル名

MariaDB 全データベースのリストアRaw Code(S)Raw Code(T)
# ls -l
合計 472
-rw-r--r-- 1 root root 477150  6月  7 17:15 all_db.sql
-rw-r--r-- 1 root root   1906  6月  7 17:15 my_db.sql

# mysql -uroot -p < all_db.sql

特定のデータベースのみリストア

mysql -uroot -p 特定データベース名 < リストアする特定データベースのファイル名

MariaDB 特定データベースのリストアRaw Code(S)Raw Code(T)
# ls -l
合計 472
-rw-r--r-- 1 root root 477150  6月  7 17:15 all_db.sql
-rw-r--r-- 1 root root   1906  6月  7 17:15 my_db.sql

# mysql -uroot -p my_db < my_db.sql

以上、MariaDB テーブル管理、バックアップ等の基本操作コマンド でした。