環境
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では不要です。
参考:
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9JUUzJTgxJTlEJUUzJTgxJUFFJTIwbXlzcWxfc2VjdXJlX2luc3RhbGxhdGlvbiUyMCVFNiU5QyVBQyVFNSVCRCU5MyVFMyU4MSVBQiVFNSVCRiU4NSVFOCVBNiU4MSVFMyU4MSVBNyVFMyU4MSU5OSVFMyU4MSU4QiVFRiVCQyU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NjA5YTJhODQ0MmM5YjBkNTgzMTM4MmIzYWIzYjUwNGI&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGF0b19wb3BwbyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MDM1MTJjNzY4MTUzY2MxZDNlMzA0YmY5MGNlZjI2Mjc&blend-x=142&blend-y=491&blend-mode=normal&s=2723fde05feff7b4ae611a3bb21f48d9)
まず、文字コードの変更を行います。
/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'}
このように出力されれば成功しています。
![](https://ryuden.org/wp-content/uploads/cocoon-resources/blog-card-cache/5122c9835b41c5362d57a18befc299d8.jpg)
後処理
テストデータベースやユーザーを削除していきます。
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)
以上で終了です。
本番データベースも同様の手順で作成できます。
コメント