環境
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では不要です。
参考:
まず、文字コードの変更を行います。
/etc/my.cnf.d/server.cnf を以下のように書き換えます。デフォルトではutf8(=utf8mb3)になっていますが、将来的にutf8mb4にエイリアスが変更される予定となっているため変えておきます。
クライアントの文字コードを変更している方も居ますが、クライアントとして使用しないのであれば不要です。基本的にはサーバーとして使う方がほとんどだと思います。
/etc/my.cnf.d/server.cnf
[mariadb]
character-set-server=utf8mb4
次にサービスの有効化・起動しておきます。
$ 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'}
このように出力されれば成功しています。
後処理
テストデータベースやユーザーを削除していきます。
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)
以上で終了です。
本番データベースも同様の手順で作成できます。
コメント