CentOS8にMariaDBをインストール・初期設定・動作確認

環境

RockyLinux8.6 (CentOS8系)

インストール

リポジトリの登録を行います。これを行わないとかなり古いバージョンがインストールされてしまいます。手元の環境だと、最新はv10.9ですがv3.10が候補となっていました。

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

mariadbのインストール

sudo yum install mariadb-server

初期設定

mysql_secure_installation を使用する方法が様々な場所で書かれていますが、最新のmariadbでは不要です。

参考:

その mysql_secure_installation 本当に必要ですか? - Qiita
この記事を書いた背景MySQL 8.0 や MariaDB 10.3 の初期状態を見て、mysql_secure_installationを実行せずに rootユーザーのパスワード設定をするだけで…

まず、文字コードの変更を行います。

/etc/my.cnf.d/server.cnf を以下のように書き換えます。デフォルトではutf8(=utf8mb3)になっていますが、将来的にutf8mb4にエイリアスが変更される予定となっているため変えておきます。

クライアントの文字コードを変更している方も居ますが、クライアントとして使用しないのであれば不要です。基本的にはサーバーとして使う方がほとんどだと思います。

/etc/my.cnf.d/server.cnf

[mariadb]
character-set-server=utf8mb4
MySQL :: MySQL 8.0 リファレンスマニュアル :: 10.9.3 utf8 文字セット (utf8mb3 のエイリアス)

次にサービスの有効化・起動しておきます。

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

rootのパスワードを変更します。
データベースにログインして、パスワードを変更します。

$ sudo mysql -u root -p
>  ALTER USER root@localhost IDENTIFIED BY 'NewPassword';

以上でサーバーのセットアップは終了です。

動作確認用のデータベース作成

動作確認のためテスト用のデータベースを作成していきます。

動作しないことはそうそうないので、面倒な人はやらなくても良いです。

ログイン

mysql -u root -p

データベースの作成

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS testdb;
Query OK, 1 row affected (0.00 sec)

ユーザーの作成

MariaDB [(none)]> CREATE USER 'testuser'@'localhost'  IDENTIFIED BY 'passwd';
Query OK, 0 rows affected (0.00 sec)

ユーザへの権限付与

MariaDB [(none)]> GRANT ALL ON testdb.* TO "testuser"@"localhost";
Query OK, 0 rows affected (0.00 sec)

テーブルの作成

MariaDB [(none)]> USE testdb
MariaDB [testdb]> CREATE TABLE account (id int(10) NOT NULL AUTO_INCREMENT, email varchar(255), passwd varchar(255), PRIMARY KEY (id));
Query OK, 0 rows affected (0.021 sec)

MariaDB [testdb]> show tables from testdb;
+------------------+
| Tables_in_testdb |
+------------------+
| account          |
+------------------+
3 rows in set (0.001 sec)

抜ける

MariaDB [testdb]> quit
Bye

動作確認

pipでMariaDB(MySQL)を実行するためのモジュールをインストール

pip3 install PyMySQL

適当なファイルに以下をコピペしてファイルを作成します。ここではpytest.pyとしました。

import pymysql.cursors

# Connect to the database
connection = pymysql.connect(host='localhost',
                             user='testuser',
                             password='passwd',
                             database='testdb',
                             cursorclass=pymysql.cursors.DictCursor)

with connection:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)

実行

$ python3 pytest.py 
{'id': 1, 'password': 'very-secret'}

このように出力されれば成功しています。

【PyMySQL】PythonでMySQL(MariaDB)に接続する
PythonでMySQL(MariaDB)に接続するために、PyMySQLライブラリを利用します。PyMySQLを使えば、簡単にデータベースに接続できます。この記事では、PyMySQLに関して解説しています。インストールから動作確認(INSERT文でのデータ登録)まで、コピペで実践できます。

後処理

テストデータベースやユーザーを削除していきます。

Rootログイン

mysql -u root -p

データベースの削除

MariaDB [(none)]> DROP DATABASE testdb;
Query OK, 3 rows affected, 3 warnings (0.034 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

ユーザーの削除

MariaDB [(none)]> drop user testuser@localhost;
Query OK, 0 rows affected (0.051 sec)

MariaDB [(none)]> select user, host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
| user | localhost |
+------+-----------+
4 rows in set (0.001 sec)

以上で終了です。

本番データベースも同様の手順で作成できます。

コメント

タイトルとURLをコピーしました