UbuntuServer 20.04な環境にmariaDB10.5をインストールする
筆者環境のUbuntuServer20.04ですが、標準のままですと、mariaDBのバージョンは10.3となっています。
これを今回はmariaDB10.5へバージョンアップしたのでその手順を紹介します。
software-properties-commonを追加
$ sudo apt -y install software-properties-common
$ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
$ sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
$ sudo apt update
$ sudo apt upgrade
上記でインストール自体は完了です。
これまで稼働していた10.3を削除することなく、そのままアップデートを実施で
既存テーブルも含めて問題なく更新されました。
以下のようにログイン時にバージョンが10.5.8になっていました。
$ mysql -uroot -pxxxxxxx
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
(追記)バージョンアップしても反映されない場合?
別環境でバージョンアップできないケースがあり以下、追記です。
上記手順を別の環境で試したところ、ログインしてもバージョンアップされませんでした。
そこでコマンドラインで「systemctl status mariadb」を叩くとなにやら以下のようなメッセージが出ていました。
/etc/mysql/debian-start[1918762]: Version check failed. Got the following error when calling the 'mysql' command line client
/etc/mysql/debian-start[1918762]: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
/etc/mysql/debian-start[1918762]: FATAL ERROR: Upgrade failed
debian-start[1918775]: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
と言うことなので、「/etc/mysql/debian-start」ファイルを確認してみたところ、以下のようになっていました。
#!/bin/bash
#
# This script is executed by "/etc/init.d/mysql" on every (re)start.
#
# Changes to this file will be preserved when updating the Debian package.
#
# NOTE: This file is read only by the traditional SysV init script, not systemd.
#
source /usr/share/mysql/debian-start.inc.sh
if [ -f /etc/default/mysql ]; then
. /etc/default/mysql
fi
MYSQL="/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
# Don't run full mysql_upgrade on every server restart, use --version-check to do it only once
MYUPGRADE="/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf --version-check"
MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
MYCHECK_PARAMS="--all-databases --fast --silent"
MYCHECK_RCPT="${MYCHECK_RCPT:-root}"
## Checking for corrupt, not cleanly closed (only for MyISAM and Aria engines) and upgrade needing tables.
# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that
# they run sequentially. They are supposed not to echo anything to stdout.
# If you want to disable the check for crashed tables comment
# "check_for_crashed_tables" out.
# (There may be no output to stdout inside the background process!)
# Need to ignore SIGHUP, as otherwise a SIGHUP can sometimes abort the upgrade
# process in the middle.
trap "" SIGHUP
(
upgrade_system_tables_if_necessary;
check_root_accounts;
check_for_crashed_tables;
) >&2 &
exit 0
ここで「MYSQL=”/usr/bin/mysql –defaults-file=/etc/mysql/debian.cnf”」を読んでいるようなので、そこも確認しますと以下のようにパスワードが空欄となっていました。
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
上記にパスワードを入れて「systemctl status mariadb」を叩いてみたところエラーメッセージは出ず、以下のようなメッセージに変わりました。
This installation of MySQL is already upgraded to 10.3.25-MariaDB, use --force if you still need to run mysql_upgrade
しかし、「mysql_upgrade」を実行してもバージョンアップされたのを確認できませんでした。
「apt remove mariadb-server」で一旦削除し、「apt install mariadb-server」で再インストールでバージョンアップ成功しました。
参考まで