(同じ利用者による、間の44版が非表示)
1行目: 1行目:
< [[MariaDB]]
==システム情報==
==システム情報==
{| class="wikitable" summary="システム情報"
{| class="wikitable" summary="システム情報"
|-
|-
!コマンド
!説明
!説明
!コマンド
|-
|-
|システム変数の表示 || <code>SHOW STATUS</code>
|<code>¥?</code> || サーバステータス、クライアントコマンド一覧
|-
|<code>SHOW STATUS</code> || システム変数の表示
|-
|-
|システム変数の変更 || <code>SET</code>
|<code>SET</code> || システム変数の変更
|}
|}


==ユーザ管理==
==起動==
{| class="wikitable" summary="ユーザ管理"
{| class="wikitable" summary="スタート"
|-
|-
!コマンド
!コマンド
!説明
!説明
|-
|-
|hoge || moge
|<code>mysql_secure_installation</code> || 初期化。10.4以降は必要なし
|-
|<code>mysql -u user -p db_name</code> || ログイン
|-
|<code>¥s, status</code> || セッション情報を表示
|-
|<code>SHOW TABLE STATUS¥G</code> || auto_increment値の確認
|-
|<code>ALTER TABLE hoge AUTO_INCREMENT=3;</code> || auto_increment値のセット
|}
|}
===auto_increment値の初期化===
mysql > CREATE TABLE tmp LIKE hoge;    ← カラム定義だけ同じテーブルを作成
mysql > CREATE TABLE tmp AS SELECT * FROM hoge WHERE 1=2;    ← この書き方もできる
mysql > SET @a = 0;
mysql > INSERT INTO tmp SELECT @a := @a + 1 AS id, name FROM hoge
* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる


==ユーザ管理==
==ユーザ管理==
{| class="wikitable" summary="ユーザ管理"
{| class="wikitable" summary="ユーザ管理"
|-
|-
!ユーザリストを表示
!コマンド
|<code>SELECT user, host FROM mysql.user;</code>
!説明
|-
|<code>SELECT user, host FROM mysql.user;</code> || ユーザリストを表示
|-
|-
!ユーザの追加
|<code>GRANT ALL ON sampledb.* TO user@localhost IDENTIFIED BY 'passwd'; </code> || ユーザの追加・権限付与
|<code>GRANT ALL ON sampledb.* TO user@localhost IDENTIFIED BY 'passwd'; </code>
|-
|-
!権限の付与
|<code>GRANT INSERT, DELETE ON sampledb.* TO user@localhost;</code> || 権限付与
|<code>GRANT INSERT, DELETE ON sampledb.* TO user@192.168.1.%;</code>
|-
|-
!権限の取り消し
|<code>REVOKE INSERT, DELETE ON sampledb.* FROM user@localhost;</code> || 権限の取り消し
|<code>REVOKE INSERT, DELETE ON sampledb.* FROM user@domain.com;</code>
|-
|-
!権限を表示
|<code>SHOW GRANTS FOR user@localhost¥G</code> || 権限を表示
|<code>SHOW GRANTS FOR user@localhost¥G</code>
|-
|-
!ユーザを作成|削除
|<code>FLUSH PRIVILEGES;</code> || 権限の更新
|<code>CREATE|DROP USER</code>
|-
|-
!ユーザ名の変更
|<code>[CREATE/DROP] USER user@localhost;</code> || ユーザを作成/削除
|<code>RENAME USER old TO new</code>
|-
|-
!ユーザの削除
|<code>RENAME USER old_name TO new_name;</code> || ユーザ名の変更
|<code>DROP USER user@localhost;</code>
|-
|-
!権限の更新
|<code>DROP USER user@localhost;</code> || ユーザの削除
|<code>FLUSH PRIVILEGES;</code>
|-
|-
!root でパスワード変更
|<code>SET PASSWORD FOR user@localhost = password('new_passwd');</code> || パスワード変更(rootで操作)
|<code>SET PASSWORD FOR user@localhost = password('new_passwd');</code>
|-
|-
!ユーザでパスワード変更
|<code>SET PASSWORD = password('new_passwd');</code> || パスワード変更(ユーザで操作)
|<code>SET PASSWORD = password('new_passwd');</code>
|}
|}


==スタート・アップ==
==データベース操作==
{| class="wikitable" summary="スタート・アップ"
{| class="wikitable" summary="データベース"
|-
|-
!初期化
!コマンド
|<code>mysql_secure_installation</code>
!説明
|-
!ログイン
|<code>mysql -u user -p sampledb</code>
|-
|-
!セッション情報を表示
|<code>[CREATE/ALTER/DROP] DATABASE db_name;</code> || データベースを作成/属性変更/削除
|<code>status</code>
|-
|-
!auto_increment値の確認
|<code>SHOW DATABAES;</code> || データベースをリスト表示
|<code>SHOW TABLE STATUS¥G</code>
|-
|-
!auto_increment値のセット
|<code>USE db_name</code> || データベースを選択
|<code>ALTER TABLE hoge AUTO_INCREMENT=3;</code>
|}
|}


===auto_increment値の初期化===
==テーブル操作==
mysql > CREATE TABLE tmp LIKE hoge;   ← カラム定義だけ同じテーブルを作成
{| class="wikitable" summary="テーブル操作"
mysql > CREATE TABLE tmp AS SELECT * FROM hoge WHERE 1=2;   ← この書き方もできる
|-
mysql > SET @a = 0;
!コマンド !! 説明
mysql > INSERT INTO tmp SELECT @a := @a + 1 AS id, name FROM hoge
|-
 
|<code>SHOW TABLES;</code> || テーブルをリスト表示
* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる
|-
 
|<code>CREATE TABLE hoge (id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name char(10) DEFAULT 'hoge' NOT NULL, birth date NOT NULL);</code> || テーブルの作成
==データベース==
|-
{| class="wikitable" summary="データベース"
|<code>CREATE TALBE new_tb LIKE org_tb</code><br> → <code>INSERT INTO new_tb SELECT * FROM org_ot</code> || テーブルのコピー
|-
|<code>RENAME TABLE old_name TO new_name;</code> || テーブル/ビューの名前変更
|-
|<code>ALTER TABLE hoge CHANGE old_row new_row int NOT NULL;</code> || 列の名前変更
|-
|-
!<nowiki>データベースを作成 | リスト表示(S) | 属性変更 | 削除</nowiki>
|<code>ALTER TABLE hoge MODIFY row_name char(50) NOT NULL;</code> || 列の属性変更
|<code><nowiki>CREATE | SHOW | ALTER | DROP DATABAE(S)</nowiki></code>
|-
|-
!データベースを選択
|<code>ALTER TABLE hoge ADD new_row char(50) NOT NULL;</code> || 列の追加
|<code>USE</code>
|}
 
==テーブル操作==
{| class="wikitable" summary="テーブル操作"
|-
|-
!テーブルの作成
|<code>ALTER TABLE hoge DROP row_name;</code> || 列の削除
|<code>CREATE TABLE user (u_id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name char(10) DEFAULT 'hoge' NOT NULL, birth date NOT NULL);</code>
|-
|-
!<nowiki>テーブルを作成 | リスト表示(S) | 変更 | 削除</nowiki>
|<code>ALTER TABLE customerlist ADD FOREIGN KEY (companycode) REFERENCES companylist (companycode);</code> || 外部キーの追加(参照先フィールドには一意性が必要)
|<code><nowiki>CREATE | SHOW | ALTER | DROP TABLE(S)</nowiki></code>
|-
|-
!列名の変更
|<code>ALTER TABLE customerlist DROP FOREIGN KEY customerlist_ibfk_1;</code> || 外部キーの削除(制約名は SHOW CREATE TABLE で別途参照)
|<code>ALTER TABLE hoge CHANGE old_name new_name int NOT NULL;</code>
|-
|-
!テーブル名の変更
|<code>CREATE/ALTER/DROP VIEW v_name;</code> || ビューを作成/属性変更/削除
|<code>ALTER TALBE old RENAME new</code>
|-
|-
!列属性の変更
|<code>SHOW CREATE VIEW v_name;</code> || 作成したビューを表示
|<code>ALTER TABLE hoge MODIFY name date NOT NULL;</code>
|}
 
==データ操作==
{| class="wikitable" summary="データ操作"
|-
|-
!外部キーの追加・削除
!コマンド
|<code>ALTER TABLE foo ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES bar (b);</code>
!説明
|-
|-
!<nowiki>データを挿入|更新|削除</nowiki>
|<code>[INSERT/UPDATE/DELETE]</code> || データを挿入/更新/削除
|<code><nowiki>INSERT | UPDATE | DELETE</nowiki></code>
|-
|-
!データを取得
|<code>SELECT</code> || データを取得
|<code>SELECT</code>
|-
|-
!SELECTした結果を挿入
|<code>SELECT DISTINCT</code> || 重複は1つにまとめてデータを取得
|<code>INSERT INTO SELECT</code>
|-
|-
!<nowiki>テーブルをロック | ロック解除</nowiki>
|<code>INSERT INTO SELECT</code> || SELECTした結果を挿入
|<code><nowiki>LOCK | UNLOCK TABLES</nowiki></code>
|-
|-
!ビューを作成|属性変更|削除
|<code>[LOCK/UNLOCK] TABLES</code> || テーブルをロック/ロック解除
|<code>CREATE|ALTER|DROP VIEW</code>
|-
|-
!作成したビューを表示
|<code>[CREATE/SHOW/DROP] INDEX</code> || インデックスを作成/リスト表示/削除
|<code>SHOW CREATE VIEW</code>
|-
|-
!インデックスを作成 | リスト表示 | 削除
|<code>CREATE FUNCTION</code> || ストアドファンクションを作成
|<code>CREATE | SHOW | DROP INDEX</code>
|-
|-
!ストアドファンクションを作成
|<code>SHOW CREATE FUNCTION</code> || ストアドファンクションを表示
|<code>CREATE FUNCTION</code>
|-
|-
!ストアドファンクションを表示
|<code>SHOW FUNCTION STATUS</code> || ストアドファンクションの状態を表示
|<code>SHOW CREATE FUNCTION</code>
|-
|-
!ストアドファンクションの状態を表示
|<code>[CREATE/DROP] TRIGGER</code> || トリガを作成/削除
|<code>SHOW FUNCTION STATUS</code>
|-
|-
!トリガを作成|リスト表示(S)|削除
|<code>SHOW TRIGGERS</code> || トリガのリスト表示
|<code>CREATE|SHOW|DROP TRIGGER(S)</code>
|-
|-
!スレーブ機能を開始|停止
|<code>[START/STOP] SLAVE</code> || スレーブ機能を開始/停止
|<code>START|STOP SLAVE</code>
|-
|-
!トランザクション機能を開始
|<code>START TRANSACTION</code> || トランザクション機能を開始
|<code>START TRANSACTION</code>
|}
|}


165行目: 155行目:


mysqldump の例:
mysqldump の例:
  $ mysqldump -u root sampledb > dump.sql    ← ダンプ
  # mysqldump -u root -B sampledb > dump.sql    ← ダンプ(-Bオプションを付けると同じデータベース名になる。代わりに -p)
  $ mysql -u root -p -D sampledb < dump.sql    ← リストア
  # mysql -u root -D sampledb < dump.sql    ← リストア


==Mysqlクライアント==
==Mysqlクライアント==

2025年3月17日 (月) 14:55時点における最新版

< MariaDB

システム情報

コマンド 説明
¥? サーバステータス、クライアントコマンド一覧
SHOW STATUS システム変数の表示
SET システム変数の変更

起動

コマンド 説明
mysql_secure_installation 初期化。10.4以降は必要なし
mysql -u user -p db_name ログイン
¥s, status セッション情報を表示
SHOW TABLE STATUS¥G auto_increment値の確認
ALTER TABLE hoge AUTO_INCREMENT=3; auto_increment値のセット

auto_increment値の初期化

mysql > CREATE TABLE tmp LIKE hoge;    ← カラム定義だけ同じテーブルを作成
mysql > CREATE TABLE tmp AS SELECT * FROM hoge WHERE 1=2;    ← この書き方もできる
mysql > SET @a = 0;
mysql > INSERT INTO tmp SELECT @a := @a + 1 AS id, name FROM hoge

* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる

ユーザ管理

コマンド 説明
SELECT user, host FROM mysql.user; ユーザリストを表示
GRANT ALL ON sampledb.* TO user@localhost IDENTIFIED BY 'passwd'; ユーザの追加・権限付与
GRANT INSERT, DELETE ON sampledb.* TO user@localhost; 権限付与
REVOKE INSERT, DELETE ON sampledb.* FROM user@localhost; 権限の取り消し
SHOW GRANTS FOR user@localhost¥G 権限を表示
FLUSH PRIVILEGES; 権限の更新
[CREATE/DROP] USER user@localhost; ユーザを作成/削除
RENAME USER old_name TO new_name; ユーザ名の変更
DROP USER user@localhost; ユーザの削除
SET PASSWORD FOR user@localhost = password('new_passwd'); パスワード変更(rootで操作)
SET PASSWORD = password('new_passwd'); パスワード変更(ユーザで操作)

データベース操作

コマンド 説明
[CREATE/ALTER/DROP] DATABASE db_name; データベースを作成/属性変更/削除
SHOW DATABAES; データベースをリスト表示
USE db_name データベースを選択

テーブル操作

コマンド 説明
SHOW TABLES; テーブルをリスト表示
CREATE TABLE hoge (id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name char(10) DEFAULT 'hoge' NOT NULL, birth date NOT NULL); テーブルの作成
CREATE TALBE new_tb LIKE org_tb
INSERT INTO new_tb SELECT * FROM org_ot
テーブルのコピー
RENAME TABLE old_name TO new_name; テーブル/ビューの名前変更
ALTER TABLE hoge CHANGE old_row new_row int NOT NULL; 列の名前変更
ALTER TABLE hoge MODIFY row_name char(50) NOT NULL; 列の属性変更
ALTER TABLE hoge ADD new_row char(50) NOT NULL; 列の追加
ALTER TABLE hoge DROP row_name; 列の削除
ALTER TABLE customerlist ADD FOREIGN KEY (companycode) REFERENCES companylist (companycode); 外部キーの追加(参照先フィールドには一意性が必要)
ALTER TABLE customerlist DROP FOREIGN KEY customerlist_ibfk_1; 外部キーの削除(制約名は SHOW CREATE TABLE で別途参照)
CREATE/ALTER/DROP VIEW v_name; ビューを作成/属性変更/削除
SHOW CREATE VIEW v_name; 作成したビューを表示

データ操作

コマンド 説明
[INSERT/UPDATE/DELETE] データを挿入/更新/削除
SELECT データを取得
SELECT DISTINCT 重複は1つにまとめてデータを取得
INSERT INTO SELECT SELECTした結果を挿入
[LOCK/UNLOCK] TABLES テーブルをロック/ロック解除
[CREATE/SHOW/DROP] INDEX インデックスを作成/リスト表示/削除
CREATE FUNCTION ストアドファンクションを作成
SHOW CREATE FUNCTION ストアドファンクションを表示
SHOW FUNCTION STATUS ストアドファンクションの状態を表示
[CREATE/DROP] TRIGGER トリガを作成/削除
SHOW TRIGGERS トリガのリスト表示
[START/STOP] SLAVE  スレーブ機能を開始/停止
START TRANSACTION トランザクション機能を開始

*外部キーを追加するときは結びつけるカラムが相互に同じ型である事、挿入データが既にある場合は値が全て一致している必要がある

ダンプとリストア

ダンプとリストアには4つの方法がある。

  1. データファイル群のコピー - 古いディレクトリを tar で圧縮してから新しいディレクトリで展開
  2. mysqldump による論理バックアップとリストア - テーブル生成とデータ挿入の SQL文の塊として
  3. XtraBackup による物理バックアップとリストア - Percona社が提供しているオンライン物理バックアップツール。無料ながら非常に高機能
  4. LVM によるスナップショットとリストア - Linux の LVM機能を利用してバックアップを取る。fdisk や pvcreate などを利用

mysqldump の例:

# mysqldump -u root -B sampledb > dump.sql    ← ダンプ(-Bオプションを付けると同じデータベース名になる。代わりに -p)
# mysql -u root -D sampledb < dump.sql    ← リストア

Mysqlクライアント

説明 コマンド
データベースの作成 mysqladmin -u root -p create sampledb
ステータスの表示 mysqladmin -u root -p status
稼働状況の表示 mysqladmin -u root -p status
スレッドリストの表示 mysqladmin -u root -p processlist
スレッド番号3を kill mysqladmin -u root -p kill 3
パスワードを変更 mysqladmin -u root -p password 'new-password'
スレーブ機能を開始 mysqladmin -u root -p start-slave