MariaDBで使えるコマンド


On this page

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)がある。

  • 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には、データ型、デフォルトの値等を設定できる。

  • データ型
    • datetime: PC上のDatetime形式
    • tinyint(n): n桁の整数 -128 ~ 127 (unsigned: 0 ~ 255)
    • bool: true or false
    • int(n): n桁の整数 -2147483648 ~ 2147483647 (unsigned: 0 ~ 4294967295)
    • bit(n): n個のbitデータ (例: bit(3) 0b101)
    • binary(n): n byteのデータ
  • Option
    • DEFAULT <値>: データを追加する際に、特にデータを入力しない場合に入る値
    • NOT NULL: データなしを許さない
    • PRIMARY KEY: 重複するデータを許さない、NULL値(データなし)を許さない、Tableに一つのみ
    • UNIQUE: 重複するデータを許さない、NULL値(データなし)でもok
    • AUTO_INCREMENT: データを追加時に自動的前の値に+1される
    • CURRENT_TIMESTAMP: 現在の時間を入力
    • CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP: 現在の時間に更新
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   #(どこからでもアクセス可能)