Skip to Content

データベース

26.10 バージョンの違い

26.10 は、MySQL を 8.4 LTS から 9.7 LTS (リリースノートでは 9.7.2) に移動し、Valkey を含みます。 9.1.2。以下の 26.04 手順は、メジャー バージョンの移行手順ではありません。最初に、独立したバックアップ復元、アプリケーション ドライバー、および SQL の互換性をテストします。 公式リリースノート 

Note

この記事は、最初に Ubuntu 26.04 LTS 2026 年 4 月リリース ノートと照合してチェックされました。データベースのバージョンとアップグレードに関するメモは、引き続きページごとの検証が必要です。

データベースは、事実上すべての Web アプリケーションおよびサービスの中核コンポーネントです。 Ubuntu 公式リポジトリは、多くの一般的なデータベースのインストール パッケージを提供します。この記事では、最も一般的に使用されるデータベース (Ubuntu、26.04: MySQL/MariaDB、PostgreSQL、Redis、SQLite) をインストールして構成する方法について説明します。

MySQL / MariaDB

MySQL は世界で最も人気のあるオープンソース リレーショナル データベースの 1 つであり、MariaDB は MySQL の元の開発者によって保守されている MySQL のコミュニティ フォークです。両者は使用上非常に互換性があります。

Tip

Ubuntu 26.04 公式リポジトリは、MySQL と MariaDB の両方を提供します。 MariaDB は、パフォーマンスの最適化が向上し、よりオープンなコミュニティ ガバナンスを備えた、MySQL の完全互換性のあるドロップイン代替品です。特別な要件がない場合は、MariaDB をお勧めします。コマンドライン ツールと SQL 構文はほぼ同じです。

MySQL のインストール

# Install MySQL Server sudo apt update sudo apt install mysql-server # Check service status sudo systemctl status mysql # Enable auto-start on boot sudo systemctl enable mysql

MariaDB のインストール

# Install MariaDB Server sudo apt update sudo apt install mariadb-server # Check service status sudo systemctl status mariadb # Enable auto-start on boot sudo systemctl enable mariadb

セキュリティの初期化

インストール後、必ずセキュリティ初期化スクリプトを実行してデータベースを強化してください。

# Both MySQL and MariaDB use the same command sudo mysql_secure_installation

スクリプトは次の操作をガイドします。

  1. root パスワードを設定します (まだ設定されていない場合)
  2. 匿名ユーザーを削除 (強く推奨)
  3. root リモート ログインを禁止します (強く推奨)
  4. テスト データベースを削除 (推奨)
  5. 特権テーブルをリロード

基本操作

# Log in to MySQL/MariaDB (Ubuntu defaults to unix_socket authentication) sudo mysql # Or log in with a password mysql -u root -p

一般的な SQL 操作:

-- List all databases SHOW DATABASES; -- Create a database CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Use a database USE myapp; -- Create a user and set password CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!'; -- Grant privileges (limited to a specific database) GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost'; -- Flush privileges FLUSH PRIVILEGES; -- View user privileges SHOW GRANTS FOR 'appuser'@'localhost'; -- Create a table CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Insert data INSERT INTO users (username, email) VALUES ('zhang', 'zhang@example.com'); -- Query data SELECT * FROM users; -- View table structure DESCRIBE users; -- Drop a user DROP USER 'appuser'@'localhost'; -- Drop a database DROP DATABASE myapp; -- Exit EXIT;

リモートアクセス構成

デフォルトでは、MySQL/MariaDB はローカルホスト (127.0.0.1) でのみリッスンします。リモート アクセスを有効にするには:

# Edit MySQL configuration sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # Or MariaDB configuration sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address 行を見つけて、次のように変更します。

# Allow connections from all IPs (in production, bind to a specific IP) bind-address = 0.0.0.0

次に、リモート接続を許可するユーザーを作成します。

-- Create a user that can connect from any IP CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON myapp.* TO 'remoteuser'@'%'; FLUSH PRIVILEGES; -- Or restrict to a specific IP CREATE USER 'remoteuser'@'192.168.1.100' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON myapp.* TO 'remoteuser'@'192.168.1.100'; FLUSH PRIVILEGES;
# Restart the service for changes to take effect sudo systemctl restart mysql # Or sudo systemctl restart mariadb # If the firewall is enabled, allow the port sudo ufw allow 3306/tcp
Warning

データベースを公共のインターネット (0.0.0.0) に公開することは非常に危険です。リモート アクセスが必要な場合は、強力なパスワードを使用し、許可される接続 IP を制限し、ファイアウォール ルールを構成し、ポートを直接公開する代わりに SSH トンネルまたは VPN の使用を検討してください。

一般的な構成の最適化

/etc/mysql/mysql.conf.d/mysqld.cnf (または対応する MariaDB 構成ファイル) を編集します。

[mysqld] # Character set (utf8mb4 recommended to support emoji and other characters) character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # InnoDB buffer pool (recommended: 50%-70% of physical memory) innodb_buffer_pool_size = 1G # Maximum connections max_connections = 200 # Slow query log slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2
# Restart the service after changes sudo systemctl restart mysql

PostgreSQL

PostgreSQL (一般に PG と略される) は、SQL 標準への厳格な準拠、豊富なデータ型、強力な拡張性で知られる強力なオープンソース オブジェクト リレーショナル データベースです。これは、複雑なクエリ、地理空間データ (PostGIS)、および JSON データに最適です。

PostgreSQL のインストール

# Install PostgreSQL sudo apt update sudo apt install postgresql postgresql-client # Check service status sudo systemctl status postgresql # Check installed version psql --version

ユーザーとデータベースの作成

PostgreSQL は独自のユーザー認証システムを使用します。インストール後、postgres という名前のシステム ユーザーとデータベース スーパーユーザーが自動的に作成されます。

# Switch to the postgres user sudo -u postgres psql
-- Create a new database user CREATE USER appuser WITH PASSWORD 'StrongPassword123!'; -- Create a database and assign an owner CREATE DATABASE myapp OWNER appuser; -- Grant connection privileges GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser; -- List all databases \l -- List all users \du -- Switch database \c myapp -- Exit \q

コマンドライン ツールを使用することもできます。

# Create a new user using the postgres account sudo -u postgres createuser --interactive appuser # Create a database sudo -u postgres createdb -O appuser myapp # Connect with the new user psql -U appuser -d myapp -h localhost

基本操作

# Connect to a database psql -U appuser -d myapp -h localhost
-- Create a table CREATE TABLE articles ( id SERIAL PRIMARY KEY, title VARCHAR(200) NOT NULL, content TEXT, tags TEXT[], metadata JSONB, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Insert data (note: PostgreSQL supports array and JSON types) INSERT INTO articles (title, content, tags, metadata) VALUES ( 'Ubuntu 26.04 Released', 'The new version brings many improvements...', ARRAY['ubuntu', 'linux', 'release'], '{"author": "admin", "views": 0}'::jsonb ); -- Query data SELECT * FROM articles; -- JSON query SELECT title FROM articles WHERE metadata->>'author' = 'admin'; -- Array query SELECT title FROM articles WHERE 'ubuntu' = ANY(tags); -- View table structure \d articles -- List all tables \dt -- View table sizes \dt+

一般的な psql コマンド

指示説明
\lすべてのデータベースをリストする
\c dbname特定のデータベースに切り替える
\dt現在のデータベース内のすべてのテーブルを一覧表示します
\d tablenameテーブル構造を表示する
\duすべてのユーザー/ロールをリストする
\diすべてのインデックスをリストする
\dfすべての関数をリストする
\timingクエリタイミングのオン/オフを切り替えます
\x拡張表示モードを切り替える
\q出口

リモートアクセス構成

# Edit the main configuration file sudo nano /etc/postgresql/18/main/postgresql.conf
# Change the listen address listen_addresses = '*'
# Edit the client authentication configuration sudo nano /etc/postgresql/18/main/pg_hba.conf

ファイルの末尾に以下を追加します。

# Allow a specific subnet via password authentication host all all 192.168.1.0/24 scram-sha-256 # Or allow all IPs (not recommended for production) host all all 0.0.0.0/0 scram-sha-256
# Restart PostgreSQL sudo systemctl restart postgresql # Allow through firewall sudo ufw allow 5432/tcp

レディス / ヴァルキー

Redis / Valkey は、データベース、キャッシュ、メッセージ ブローカーとして使用できるオープンソースのメモリ内データ構造ストアです。文字列、ハッシュ、リスト、セットなどのさまざまなデータ構造をサポートしており、読み取り/書き込み速度が非常に速いことで知られています。

Note

Ubuntu 26.04 公式リポジトリは Valkey 9.0 (Redis プロトコルと互換性のある Redis のコミュニティ フォーク) を促進し、それを main コンポーネントに移動しました。 Valkey をお勧めします。 Redis は引き続き個別にインストールできます。valkey-server と redis-server はリポジトリ内に共存します。以下の例では、valkey-server / valkey-cli コマンドで Valkey を使用しています。古い redis-cli は互換性エイリアスとして引き続き使用できます。

Valkeyのインストール

# Install Valkey (recommended on 26.04) sudo apt update sudo apt install valkey-server # If you need Redis, you can install it separately (coexists with Valkey; swap the redis prefix into the commands) # sudo apt install redis-server # Check service status sudo systemctl status valkey-server # Verify it is working properly valkey-cli ping # Should output: PONG

基本操作

# Connect to the Valkey CLI (redis-cli is also available as a compatibility alias) valkey-cli
# String operations SET name "Ubuntu Fan" GET name # Set a key with expiration (60 seconds) SET session:abc123 "user_data" EX 60 # Check remaining TTL TTL session:abc123 # Hash operations (similar to objects) HSET user:1 name "John" email "john@example.com" age "30" HGET user:1 name HGETALL user:1 # List operations LPUSH tasks "task1" "task2" "task3" LRANGE tasks 0 -1 RPOP tasks # Set operations SADD online_users "user1" "user2" "user3" SMEMBERS online_users SISMEMBER online_users "user1" # Sorted set (leaderboard scenario) ZADD leaderboard 100 "player1" 200 "player2" 150 "player3" ZREVRANGE leaderboard 0 -1 WITHSCORES # List all keys KEYS * # Delete a key DEL name # Check key type TYPE user:1 # View server info INFO # View memory usage INFO memory # Exit QUIT

永続化構成

データはデフォルトでメモリに保存され、再起動すると失われます。 Valkey は 2 つの永続化メソッドを提供します。

RDB (Snapshots) — メモリ内のデータをスナップショット ファイルとして定期的に保存します。

# Edit Valkey configuration (the Redis-compatible package uses /etc/redis/redis.conf) sudo nano /etc/valkey/valkey.conf
# RDB persistence rules (enabled by default) # Save if at least 1 change in 3600 seconds save 3600 1 # Save if at least 100 changes in 300 seconds save 300 100 # Save if at least 10000 changes in 60 seconds save 60 10000 # RDB file location dir /var/lib/valkey dbfilename dump.rdb

AOF (追加専用ファイル) — すべての書き込み操作を記録します。

# Enable AOF appendonly yes # AOF sync policy # always: Sync on every write (safest, but slowest) # everysec: Sync once per second (recommended, balances safety and performance) # no: Let the OS decide (fastest, but may lose data) appendfsync everysec # AOF filename appendfilename "appendonly.aof"
# Restart Valkey for changes to take effect sudo systemctl restart valkey-server

Valkey セキュリティ構成

sudo nano /etc/valkey/valkey.conf
# Set password requirepass YourStrongRedisPassword # Bind address (defaults to local access only) bind 127.0.0.1 ::1 # Disable dangerous commands rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command CONFIG ""
# Connect with password valkey-cli -a YourStrongRedisPassword # Or authenticate after connecting valkey-cli AUTH YourStrongRedisPassword

SQLite

SQLite は、軽量の組み込みリレーショナル データベースです。個別のサーバープロセスは必要なく、すべてのデータは単一のファイルに保存されます。 SQLite は、小規模なアプリケーション、プロトタイピング、モバイル アプリ、組み込みシステムに最適です。

インストールと使用方法

# Install SQLite sudo apt install sqlite3 # Create/open a database file sqlite3 mydb.sqlite # Operate within the SQLite prompt
-- Create a table CREATE TABLE notes ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, content TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- Insert data INSERT INTO notes (title, content) VALUES ('Test Note', 'This is a test entry'); -- Query SELECT * FROM notes; -- List all tables .tables -- View table structure .schema notes -- Display results with column names .headers on .mode column -- Export as SQL .dump -- Export as CSV .mode csv .output notes.csv SELECT * FROM notes; .output stdout -- Exit .quit

SQLite の強みは、構成やメンテナンスが不要な点にあります。以下に適しています:

  • 小規模な Web アプリケーション (個人のブログなど)
  • 開発およびテスト環境
  • デスクトップ アプリケーション用のローカル データ ストレージ
  • データ分析 (Python の sqlite3 モジュールと組み合わせて)

データベースのバックアップ戦略

データのバックアップは、データベース管理において最も重要なタスクの 1 つです。各データベースのバックアップ方法は次のとおりです。

MySQL / MariaDB バックアップ

# Back up a single database mysqldump -u root -p myapp > myapp_backup_$(date +%Y%m%d).sql # Back up all databases mysqldump -u root -p --all-databases > all_databases_$(date +%Y%m%d).sql # Compressed backup mysqldump -u root -p myapp | gzip > myapp_backup_$(date +%Y%m%d).sql.gz # Restore a database mysql -u root -p myapp < myapp_backup_20260324.sql # Restore a compressed backup gunzip < myapp_backup_20260324.sql.gz | mysql -u root -p myapp

PostgreSQL バックアップ

# Back up a single database sudo -u postgres pg_dump myapp > myapp_backup_$(date +%Y%m%d).sql # Back up all databases sudo -u postgres pg_dumpall > all_databases_$(date +%Y%m%d).sql # Custom format backup (supports parallel restore) sudo -u postgres pg_dump -Fc myapp > myapp_backup_$(date +%Y%m%d).dump # Restore SQL format backup sudo -u postgres psql myapp < myapp_backup_20260324.sql # Restore custom format backup sudo -u postgres pg_restore -d myapp myapp_backup_20260324.dump

ヴァルキーバックアップ

# Manually trigger RDB snapshot valkey-cli BGSAVE # Copy the RDB file sudo cp /var/lib/valkey/dump.rdb /backup/valkey_$(date +%Y%m%d).rdb # Restore: stop Valkey, replace dump.rdb, restart sudo systemctl stop valkey-server sudo cp /backup/valkey_20260324.rdb /var/lib/valkey/dump.rdb sudo chown valkey:valkey /var/lib/valkey/dump.rdb sudo systemctl start valkey-server

自動バックアップスクリプト

自動バックアップ用の cron ジョブを作成します。

# Create backup script sudo nano /usr/local/bin/db-backup.sh
#!/bin/bash BACKUP_DIR="/backup/databases" DATE=$(date +%Y%m%d_%H%M%S) mkdir -p "$BACKUP_DIR" # MySQL/MariaDB backup mysqldump -u root --all-databases | gzip > "$BACKUP_DIR/mysql_$DATE.sql.gz" # PostgreSQL backup sudo -u postgres pg_dumpall | gzip > "$BACKUP_DIR/postgres_$DATE.sql.gz" # Valkey backup valkey-cli BGSAVE sleep 5 cp /var/lib/valkey/dump.rdb "$BACKUP_DIR/valkey_$DATE.rdb" # Delete backups older than 30 days find "$BACKUP_DIR" -type f -mtime +30 -delete echo "Backup complete: $DATE"
# Set execute permission sudo chmod +x /usr/local/bin/db-backup.sh # Add cron job (runs daily at 3 AM) sudo crontab -e # Add the following line: # 0 3 * * * /usr/local/bin/db-backup.sh >> /var/log/db-backup.log 2>&1

データベースの比較: MySQL 対 PostgreSQL 対 MariaDB

特徴MySQLPostgreSQLMariaDB
開発者オラクルUbuntufanplaceholder0000 コミ​​ュニティMariaDB財団
ライセンスGPL v2 (デュアルライセンス)PostgreSQL ライセンス (MIT 類似)GPL v2
デフォルトのポート330654323306
ACID 準拠InnoDB エンジンのサポートフルサポートInnoDB/Aria エンジンをサポート
JSON のサポートJSONタイプJSONB タイプ (より強力)JSONタイプ
全文検索サポートされていますサポート済み (より強力)サポートされています
地理空間基本サポートPostGIS 拡張機能 (業界をリード)基本サポート
レプリケーションプライマリレプリカ、グループレプリケーションストリーミングレプリケーション、論理レプリケーションプライマリ レプリカ、Galera クラスター
ストレージ エンジン複数 (InnoDB、MyISAM など)シングルエンジン複数 (InnoDB、Aria、ColumnStore など)
SQL 標準への準拠良い最高良い
使用例Web アプリ、読み取り負荷の高いワークロード複雑なクエリ、データ分析、GISWeb アプリ、MySQL の置き換え
学習曲線低い中くらい低 (MySQL 互換)

おすすめガイド

  • MySQL: 最大のエコシステムとほとんどのコミュニティ リソース。ほとんどの Web アプリケーションに適しています
  • PostgreSQL: 最も強力な機能。複雑なクエリ、JSON 操作、地理空間データに最適
  • MariaDB: より積極的なパフォーマンスの最適化とよりオープンなコミュニティを備えたオープンソースの MySQL の代替品

共通の管理コマンドの概要

# --- MySQL / MariaDB --- sudo systemctl start mysql # Start sudo systemctl stop mysql # Stop sudo systemctl restart mysql # Restart sudo systemctl status mysql # Check status sudo mysql # Log in # --- PostgreSQL --- sudo systemctl start postgresql # Start sudo systemctl stop postgresql # Stop sudo systemctl restart postgresql # Restart sudo systemctl status postgresql # Check status sudo -u postgres psql # Log in # --- Valkey --- sudo systemctl start valkey-server # Start sudo systemctl stop valkey-server # Stop sudo systemctl restart valkey-server # Restart sudo systemctl status valkey-server # Check status valkey-cli # Log in valkey-cli INFO # View info valkey-cli DBSIZE # View key count

適切なデータベースを選択して構成することは、信頼性の高い Web アプリケーションを構築するための基本です。プロジェクトのニーズに最適なものを見つけるために、開発環境でさまざまなデータベースを試してみることをお勧めします。