【Ubuntu】MariaDBをインストールする:初期設定(セキュリティ、データベース)
2022.04.02 /
本記事ではUbuntuにMariaDBをインストールする方法について解説していきます。
MariaDBはMySQLから派生したデータベースであり、とても人気の高いデータベースの一つです。それをLinux系OSのUbuntuにインストールしていきます。
インストール後のセキュリティ設定やデータベース作成などの初期設定についても解説しています。
本記事を通して、UbuntuとMariaDBについて理解を深めましょう。
MariaDB
MariaDBとは
mariaDBは2009年にリリースされた、MySQLから派生したデータベースです。mariaDBはMySQLの元開発メンバーが開発を行っています。
mariaDBはMySQLと同様の機能をサポートしており、使用方法も大きな違いはないです。またスペックや機能面でもmariaDBの方が優れています。
そこで本記事ではデータベースソフトウェアとしてmariaDBをインストールします。
データベースについて詳しくは以下記事をご参照ください。
データベースとは?機能と特徴(SQLite、MySQL、TinyDB)
mariaDBのインストール
以下コマンドを実行してUbuntuにMariaDBをインストールします。
$ sudo apt update
$ sudo apt install mariadb-server mariadb-client
上記コマンドでMariaDBはインストールされましたがセキュリティ面では安全ではないです。必ずこの後で紹介するセキュリティスクリプトを実行するようにしましょう。
本記事でのMariaDBのバージョンは次の通りです。
$ mysql --version
mysql Ver 15.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu (aarch64) using readline 5.2
またPythonからmariaDBにアクセスするために以下のライブラリもインストールしておきます。
$ sudo apt install libmysqlclient-dev
ステータスの確認
以下コマンドを実行することでMariaDBのステータスを確認できます。
$ sudo systemctl status mariadb
すでにMariaDBは起動されているはずです。もし実行されていない場合は以下コマンドで起動できます。
$ sudo systemctl start mariadb
MariaDBの設定
照会順序(collation)の変更:utf8mb4_bin
照会順序(collation)を変更するために、設定ファイル50-server.cnfを編集します。
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
照会順序(collation)とは、データの文字を比較するときのルールです。「文字コード_言語名_比較方法」という形で表記します
MySQLは文字コードと照会順序(collation)を持っていて、文字コードはutf8mb4が設定されています。
照会順序には次の値が指定可能です。
- utf8mb4_general_ci(デフォルト値)
- utf8mb4_unicode_ci
- utf8mb4_unicode_520_ci
- utf8mb4_bin
デフォルトの「utf8mb4_general_ci」では大文字と小文字を区別しませんので、セキュリティホールになる可能性があります。
ここでは大文字と小文字を区別可能なutf8mb4_binを設定します。
設定ファイル(50-server.cnf)では文字コードと照会順序は次の設定値に指定します。
character-set-server = 文字コード
collation-server = 照会順序
これより50-server.cnfを次のように変更します。
character-set-server = utf8mb4
collation-server = utf8mb4_bin
セキュリティスクリプトの実行
MariaDBはデフォルト設定(インストール直後)では管理パスワードなどが設定されていないため安全ではないです。
以下コマンドを実行しセキュリティスクリプトを実行します。
$ sudo mysql_secure_installation
セキュリティスクリプトを実行すると一連のプロンプトが表示され、各種設定を変更できます。
最初のプロンプトではMariaDBのroot(管理者ユーザー)パスワードの入力を求められます。まだrootパスワードは設定していないため「Enter」キーを押します。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
Enterキーを押すと、次にrootのパスワード設定をするか確認が入ります。
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n]
パスワードを設定するために「Y」を入力し、root用のパスワードを設定してください。
その後はanonymousユーザーの削除や、リモートからのruootログインの拒否といった一連のプロンプトが表示されます。
その都度、「Y」または「n」で答えてください。基本的にはすべて「Y」で問題ないです。
ファイヤウォールの設定
MariaDBを外部から接続する場合、ファイヤウォールでポート3306を解放しておく必要があります。
以下コマンドでポート3306を解放しましょう。
$ sudo ufw allow 3306
Rule added
Rule added(v6)
データベースの作成
MySQLにログインしてデータベースを作成します。
sudo mysql -u root -p
上記コマンドを実行したら、先ほど設定したrootパスワードを入力してログインをします。
データベースの作成にはコマンドCREATE DATABASEを使用します。
CREATE DATABASE データベース名 CHARACTER SET UTF8;
ここではweb_appというデータベースを作成してみます。
MariaDB> CREATE DATABASE web_app CHARACTER SET UTF8
ユーザーの追加
以下のようにコマンドCREATE USERを利用して、新しいユーザーを作成します。
CREATE USER "ユーザー名"@"localhost" IDENTIFIED BY "パスワード"
次に作成したユーザーに対してデータベースへのアクセス権限を与えます。
GRANT ALL ON データベース名.* TO "ユーザー名"@"localhost";
文字コードの設定
MySQLの文字コードを設定するために、my.cnfファイルを編集します。
my.cnfファイルとはMySQLの設定ファイルであり、様々なパラメータの設定を指定できます。ここでは日本語の文字化けをなくすためにすべてUTF-8に統一します。
my.cnfは/etc/mysql内にあり、vimコマンドを利用して以下の設定を追記します。
[mysqld]
character-set-server=utf8
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
再起動して設定を反映させます。
$ service mysql restart
MySQLに再度ログインを行い、文字コードの設定を以下コマンドで確認します。
$ show variables like “chara%”;
これで基本的なMariaDBの設定は完了です。あとはUbuntuサーバーで動くWebアプリケーションなどとMariaDBを連携させて使ってみてください。
MariaDBとDjangoの連携
本サイトOFFICE54ではPythonやDjangoを主に解説している技術サイトです。
そこでUbuntuにインストールしたMariaDBとDjangoを連携させる方法を本項では解説していきます。
MariaDBの接続ドライバ
DjangoでMariaDBを利用するためにはドライバをインストールする必要があります。
MariaDB(MySQL)を利用するためのドライバには以下4種類があります。
- PyMySQL
- mysql-connector-python
- MySQL-Python
- mysqlclient
DjangoではPython3に対応しているmysqlclientが推奨されています。mysqlclientは以下pipコマンドでインストールできます。
(venv) $ pip3 install mysqlclient
Djangoのsettings.pyを変更
ドライバをインストールしたら次にDjangoの設定ファイルであるsettings.pyにMariaDBに接続する設定を記述します。
settings.pyについて詳しくは以下記事をご参照ください。
【Django】settings.py:各設定値の解説(まとめ・一覧)
デフォルトではsqlite3と接続する設定になっています。MariaDB(MySQL)と接続するためには以下のように設定を変更します。
# MariaDBの接続設定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': データベース名,
'USER': ユーザー名,
'PASSWORD': パスワード,
'HOST': 'localhost',
'PORT': '',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
},
}
}
上記によってDjangoのデータベースとしてMariaDBが利用できるようになります。