データベースをインストールする (MariaDB / MySQL)
Webサイトやボットで使うデータベースを、Ubuntuサーバーにインストールする方法です。MariaDBはMySQLと使い方がほぼ同じなので、ほとんどのMySQLの資料をそのまま使えます。
1. インストール
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
2. 基本のセキュリティ設定
sudo mariadb-secure-installation
質問が表示されたら、次のように答えれば問題ありません。
- 匿名ユーザーの削除(Remove anonymous users)→
Y - rootのリモートログインの禁止(Disallow root login remotely)→
Y - テストDBの削除(Remove test database)→
Y
3. アプリ専用のDBとアカウントを作る
アプリでは、rootの代わりにそのアプリ専用のアカウントを使うのが安全です。
sudo mariadb
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'long-complex-password';
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp'@'localhost';
FLUSH PRIVILEGES;
EXIT;
アプリの設定には、次の値を入れます。
- ホスト:
localhost(または127.0.0.1)/ ポート:3306 - DB名:
myapp/ アカウント:myapp/ パスワード: 上で決めた値
⚠️ DBをインターネットに公開しないでください
DBのポート(3306)が外部に開いていると、世界中から自動化されたログイン試行が一日中届きます。特にrootアカウントに短いパスワードを使っていると、すぐに突破されます。
- アプリとDBが同じサーバーにあるなら、外部からの接続は必要ありません。 UbuntuのMariaDBはデフォルトでサーバー内(
127.0.0.1)からの接続だけを受け付けるので、そのままにしておいてください。 - 自分のPCのDB管理プログラム(HeidiSQL、DBeaverなど)で接続したい場合は、ポートを開けずにSSHトンネルを使ってください。ほとんどのプログラムに「SSHトンネル」の設定欄があり、SSHの接続情報を入れるだけで使えます。
- DockerでDBを立ち上げた場合は、Dockerガイドのファイアウォールに関する注意を必ず確認してください。
4. バックアップ
sudo mysqldump myapp > myapp-$(date +%F).sql
定期バックアップとダウンロードの方法は、サーバーのデータをバックアップするを参考にしてください。