11行目: 11行目:
* [[MySQLチューニング]]
* [[MySQLチューニング]]


==インストール==
==セットアップ==
基本的にはパッケージ管理からインストール。<br>例えば、CentOS の場合は /etc/yum.repos.d/MariaDB.repo に公式レポジトリを追加。
 
[https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university YUM Repository Configuration Generator]
 
===セットアップ===
# 設定ファイル etc/my.cnf のモードや所有者を確認
# 設定ファイル etc/my.cnf のモードや所有者を確認
# 設定ファイル etc/my.cnf のシステム変数などを確認
# 設定ファイル etc/my.cnf のシステム変数などを確認

2025年3月17日 (月) 15:04時点における版

MariaDB
Library

MariaDB とはデータベース倉庫を管理するためのApp。C言語製。倉庫にあるデータを高速に参照/更新/計算したりできる。アプリは基本的にこのデータベース倉庫と連携しながら動くので SQL には十分に精通しておく必要がある。

当然ながら、MariaDB の公式の説明書公式チュートリアル は一通り読んでおく。

クイックメモ

セットアップ

  1. 設定ファイル etc/my.cnf のモードや所有者を確認
  2. 設定ファイル etc/my.cnf のシステム変数などを確認
  3. /var/lib/mysqlディレクトリの所有者を mysql に変更
  4. ローカル利用ならリモート接続を禁止
  5. 日本語入力のズレを解消
$ mysqladmin -u root -p status
$ ss -tan
SHOW VARIABLES LIKE 'char%';
$ vi /etc/my.cnf

[mysqld]
skip-networking
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
  • character_set_system は MariaDB の内部システム用の設定 だから、utf8mb3 のままでOK

データベースの本質

データベースの本質は「実世界のデータ構造」のパラレルワールドをマシンの中に創造すること。ゆえに、データベースとは人間の認識を反映する鏡だと言える。

実世界(やその状態)を「パラレルワールド」としてマシンの中に複製すると、遠隔マシンにバックアップしたり、自作アプリと連携させたり、AIと抱き合わせて情報分析したりと、色々なことができるようになる。

RDB の場合、主にリレーション(2次元表)という表現手法に沿って実世界(やその状態)をパラレルワールド化していくことになる。ちなみに、他の表現手法には NoSQL や DIT などがある。

データベースの設計

データベース設計においては特に、以下2点を強く意識すべき。

  1. マシンパワーの活用を大前提としたデータベース設計
  2. 目的から逆算した実世界データ構造のパラレルワールド化

マシンパワーが大前提

データを管理するだけであれば別に紙やノートを使っても良いはず。わざわざマシンにデータ管理を任せるのだから「マシンにしかできない何か」を強く期待しているはず。

つまり、マシンパワーの活用と目的の実現とのバランスをしっかり前提とした上でテーブル設計やチューニングすることが大切。

実世界の「本質」を適切に表現

データベースの活用とはつまり実世界データ構造のパラレルワールド化。ゆえに、実世界を適切に認識し、その本質的な状態を適切にデータベースにアップロードしていく必要がある。

しかし、実世界の本質的な状態とは流動的で常に変化していくもの。この性質をしっかりと踏まえ、将来を見越したデータベース設計をする必要がある。

ゆえに、データ構造パラレルワールド化の際には以下3点が特に大切。

  1. 実世界の状態や本質を適切に認識する能力
  2. 目的から逆算してデータを整理する能力
  3. その状態を適切に表現する能力

以上3点があれば、その人は適切にデータベースを設計できる。そのような人は自分の部屋と同様にデータたちのお部屋も綺麗に整理することができるはず。

セキュリティ

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost');

リモートから root で MariaDB にログインできると危険なので削除。

rootのパスワードをリセットする

一旦MariaDBのプロセスを落としてからセーフモードで起動、パスワードを設定してMariaDBのプロセスを再度起動させてやるだけ。

# systemctl stop mariadb
# mysqld_safe --skip-grant-tables &
alter user 'root'@'localhost' identified by 'new_passwd';
# systemctl stop mariadb
# systemctl start mariadb

以上。できなかったら「flush privileges」してから。