MariaDBで使えるコマンド
On this page
MariaDBインストール
Debian, Rasbianの場合(apt)
$ sudo apt install -y mariadb
MacOSの場合(homebrew)
$ brew install mariadb
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 #(どこからでもアクセス可能)