MariaDBで使えるコマンド

MariaDBは無料で使えるデータベースの管理システムで、MariaDBの動いているサーバーに他のPCからデータを蓄積できる。 ここではMySQL(MariaDB)を操作する上でよく使うコマンドをまとめた。




MariaDBインストール


Debian, Rasbianの場合(apt)

$ sudo apt install -y mariadb

MacOSの場合(homebrew)

$ brew install mariadb

MariaDB初期化


以下のコマンドで初期設定開始

$ sudo mysql_secure_installation

MariaDBへの入り方


$ mysql -u <user名> -h <host名> -p <パスワード>

-uでユーザー指定、-hで接続先 (MariaDBが動いているサーバー)、
-pのみでパスワード有効化、後ろにパスワードを入力するとパスワードを聞かれずに入れる
-e "<コマンド>"でmysqlコマンドを実行できる

MySQLユーザー関連


ユーザー作成

host名はIPかURL。%を用いればワイルドカードにできる。
%を使う場合はクォート等で囲う。
例えばあるデータベースを作成し、`<user名>`@`192.168.0.%`でユーザーを作ると%の部分が異なるhostからデータベースを触れる。`<user名>`@`%`だと、どこからでも接続できる。

create user `<user名>`@`<host名>` identified by '<パスワード>';

ユーザー一覧表示

select host,user from mysql.user;

権限の付与

ユーザーごとにデータベースの権限を設定できる。defaultではなんの権限もない。
権限の種類はselect, insert, update, create, delete, all (privileges)がある。

grant <権限の種類> on <DBの名前>.<TABLEの名前> to `<user名>`@`<host名>`;

付加されている権限確認

自分の権限を見る際はfor以下はいらない。

show grants for `<user名>`@`<host名>`;

Database, Table操作


Database一覧

show databases;

Table一覧

show tables form <Database名>;

Column一覧

以下のコマンドでテーブルのカラムの型、オプションが確認できる。
show columns from <Table名>;
実際にtableに入っている値を見るなら以下のコマンド。
select * from <Database名>.<Table名>;

※Tableに何か値がないと正しく表示されない。


Database作成

create database <Database名>;

Table, column作成

Excelで例えると、Tableはシート、Columnは列を意味している。 後のinsertという操作をすることで、新しい行にデータが入っていくイメージ。 Columnには、データ型、デフォルトの値等を設定できる。

create table <Database名>.<Table名> (<Column名> <データ型> <Option>, ・・・);

Table 編集

Table名の変更

rename table <変更前Table名> to <変更後Table名>;

columnを今あるTableに追加する場合

alter table <Table名> add <追加Column名> <型> <オプション>;

columnをTableから削除する場合

alter table <Table名> drop <削除Column名>;

columnの型、オプション等を変更する場合

alter table <Table名> modify <Column名> <変更後の型とオプション>;

データの挿入

新しいデータ(行)を追加する場合、普通はデータの挿入(insert)を行う。

insert into <Table名> (<Column名1> <Column名2> ...) values (<データ1>, <データ2>, ...);

ここで()の中のColumn名は追加したいColumn名を全て入れる。 二個目の()のデータの数は必ず1個目の()の中のColumn名の数と一致させる。 挿入するデータは1個めのColumnに対応させるように順番を揃えて、","区切りで入力する。


データの変更

すでにあるデータに対して、修正したいときはデータの変更(update)を行う。

update <Table名> set <Column名>=<変更後データ> (where <条件>);

このときwhereで条件付をしてあげないと、全ての行のデータが書き換わるので注意。

外部からの接続を有効化する


まずはサーバー側のfirewallを3306/tcpまたはmariadbでポートを開ける
次にdebian (raspbian)であれば/etc/mysql/mariadb.conf.d/50-server.cnfを編集

[mysqld]
- bind-address = 127.0.0.1 #これを削除かコメントアウト (localhostのみ許可)
+ bind-address = 0.0.0.0   #(どこからでもアクセス可能)