最近、環境を用意する時はMAASをよく使うのですが、MAAS 2.6.0でCentOS 7をデプロイしてそのCentOSにMariaDBをインストールしたところ、MariaDBデーモンがどうしても起動しない問題にはまりました。
バージョンを下げたり、MariaDB本家のリポジトリーを追加してより新しいパッケージを入れてもダメ、MySQLコミュニティ版のリポジトリーを追加してMySQL Serverをインストールしてもダメです。
MySQLをインストールした後、いつものようにmysql_secure_installation
コマンドを実行したら次のように表示されました。
socket '/var/lib/mysql/mysql.sock'
に接続できないと。ああいけない、サービスの起動を忘れていました。
# mysql_secure_installation 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): ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
と言うわけで実行
# systemctl start mariadb.service
再びmysql_secure_installation
を実行したら同じ結果。systemctl status mysqld
を実行したらそもそもサービスがFailedしていました。そこでMySQLのログを確認しました。すると次のようなメッセージが出ていました。
/usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: Permission denied loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
共有ライブラリーを読み込めないですと!そんなバカな。
rpm -q libaio
とか実行するとバージョンが表示されるのでインストール済みなのですがなんかおかしいのでしょうね。
と言うわけで、試しにyum reinstall libaio
を実行して、再インストールしてみました。
# yum reinstall libaio -y # systemctl start mariadb.service Redirecting to /bin/systemctl start mysqld.service
きちんと起動したところのログを撮り忘れたのですが、MAASでデプロイしたCentOS 7できちんとMySQL Serverが起動できるようになりました。
ちなみにMariaDBについても同じ問題が発生しましたが、libaio
パッケージの再インストールできちんと動作するようになったのを確認しています。ちなみにこの問題、CentOS 7をISOイメージからインストールした場合は起きませんのでご安心を。
# yum reinstall libaio # systemctl start mariadb.service # systemctl status mariadb.service ● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: active (running) since 水 2019-09-11 04:57:08 UTC; 3s ago ...
MariaDBの場合は、デーモンの起動後は次のようなコマンドでルートユーザーのパスワードを設定してからmysql_secure_installationを実行する模様です。
# mysqladmin -u root password 'new-password' # mysql_secure_installation