WordPressやRedmineなど、オープンソースのソフトウェアにデータベースとしてよく使われているMySQLのインストール方法をまとます。サーバOSは実績のあるCentOS8を初期インストール後の標準の状態を前提として使います。
WordPressのインストールについては、wordpressは簡単にインストールできるでまとめています。

MySQLをCentOS8にインストールするポイントは以下です。
- MySQLサーバをインストールする
- 初期設定する
- MySQLサーバを起動する
- データベースを作る
- バックアップ設定する
目次
MySQLのインストールと起動
MySQLをインストール
CentOS8では名称がMariaDBとなっています。まずはrootでCentOSサーバにログインします。
インストールするパッケージはmariadbとmariadb-serverです。dnf install mariadb mariadb-server とコマンドで入力します。

上の図のように、dnfコマンドでインストールします。ソフトウェアをインストールする作業はこれで完了です。
MySQLの初期設定
インストールが終わったら、文字化けが起きないように文字コードを設定します。そのために/etc/my.cnf.d/mariadb-server.cnfを編集します。

上の図のように、[mysqld]の直下に行を挿入し、character-set-server=utf8と入力します。文字コードを設定したら保存して閉じます。
次にMariaDBサーバを起動します。systemctlコマンドを使います。systemctlコマンドを使って起動状態を確認します。systemctlコマンドを使うと自動起動するかどうか、今起動中か停止しているかの2点を確認できます。

上の図のように、①systemctl status mariadbとと入力すると、mariadbの状態が表示されます。②自動起動するかについてはdisabled(無効)なので、自動起動しません。③現在の起動状態かどうかについては、inactive(dead)のため停止中です。
MySQLを起動
MySQLを起動には2種類あります。1つが起動時に自動的に起動させることです。2つ目が今手動で起動させることの2点があります。
まずは1点目の起動時に自動で起動するように設定します。systemctl enable mariadbと入力します。

上の図のように、MariaDBがシステム起動時に自動で立ち上がるようにする設定コマンドです。赤線部分で入力しています。
コマンドの入力が終わったら、もう一度systemctl status mariadbコマンドで状態を確認します。

上の図のように自動起動を設定したら、②の部分がdisabled(無効)からenabled(有効)に変わりました。
次に2点目の今停止しているMySQLを起動状態に変更します。上の図でMariaDBが停止している③の状態を起動状態にします。systemctl start mariadbでMySQLサーバを起動します。

上の図のように、①MySQLサーバを手動で起動します。②の自動起動状態は変わりません。③今の起動状態はactive(動作中)に変わりました。

上の図のように、赤枠で囲った部分のcharacterの文字コードがすべて同じであれば文字化けは起こりません。MariaDBが起動していないと上の内容は表示されません。
以上でMySQLサーバの起動と確認は完了です。
MySQLデータベースの作成
データベースを作成するには、今MySQLの状態を確認しないと作ることができません。
MySQLの現在の状態を確認
具体的にデータベースを作成するにあたり、既存のデータベース名とユーザー名が重複しないようにします。
意図的にデータベース名やユーザー名を重複させることはありますが、新たなソフトウェアのデータを保管するデータベースの領域は分けて作ることが一般的です。
MySQLの作成済みデータベース名を確認
まずはデータベース名が重複していないか確認します。今のMySQLに登録してあるデータベース名を表示します。
rootでログインしてmysqlshowコマンドを実行します。

上の図では、初期設定直後のMySQLデータベースサーバに対して実行しました。information_schema、mysql、performance_schemaの3つのデータベースしかありません。
MySQLの作成済みユーザー名を確認
次にMySQLコマンドでデータベースに接続できる登録済みユーザーの一覧を表示します。

上の図のように、MySQLに登録しているユーザーを表示します。①mysqlコマンドでmysqlデータベースに接続します。②select分でuserテーブルからuser列とhost列を表示します。③ユーザーアカウントrootしかありません。ホストはlocalhostからのみ接続を許可されています。
password列は表示していないですが、デフォルトのrootはパスワード無しで登録されていますので、空欄です。パスワードを登録すると暗号化されたパスワードが入ります。
MySQLデータベースの設計
MySQLに登録しているデータベースとユーザー名が判明しましたので、重複しないようデータベースを設計します。設計に当たっては、最低でも以下3つの情報が必要です。
項番 | 項目 | 設定値 |
---|---|---|
1 | データベース名 | testdb |
2 | ユーザー名 | testuser |
3 | パスワード | teStP@ss |
MySQLの設定値は大文字小文字は区別されます。ただし、OSはユーザー名の大文字小文字は区別しないので、大文字と小文字の区別はしないという制約をデータベース設計に課します。つまり、Userとuserは同じとします。
MySQLデータベースの構築
前項で設計した、testuserが全権限を持ったMySQLデータベースtestdbを作ります。

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースtestdbを作ります。③testuserユーザーをパスワードteStP@ssで作成します。④testuserユーザーにtestdbデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合もあると思います)。⑥MySQLコマンドの入力を終了します。
上の図のコマンド実行結果のように、「Query OK」と表示されれば正常に処理されています。
作成したユーザー、データベースを削除する場合はdropコマンドを使います。drop user testuser、drop database testdbで削除できます。
作成したMySQLデータベースとユーザーの確認
mysqlコマンドを使います。ユーザー名とデータベース名を指定しパスワードを端末から入力します。

上の図のように、-uオプションを指定するユーザー名を指定できます。-pはパスワードを端末から入力する指示です。最後のtestdbはデータベース名です。
パスワードを正しく入力するとtestdbのtestuserで接続できていることが確認できます。statusコマンドでどのユーザーでどのデータベースに接続しているか表示することもできます。
MySQLデータベースのバックアップ
一番簡単な方法はrootでサーバへログインした後、mysqldumpコマンドを使います。引数に–all-databasesを付けるとMySQLデータベースを初期構築した後にmysqldump –all-dataabsesで出力したSQLをmysqlコマンドで流し込むだけで復旧できます。
データベースはメモリ上でデータの更新を行いますので、ディスク上のファイルをコピーしても復元できません。必ずmysqladminを使って復元用のSQLコマンドをバックアップとして取得してください。
なお、mysqladminで取得したバックアップデータはSQL文が記載してあるテキスト文書のため、圧縮して保管することをお勧めします。
簡単ですが、MySQLデータベースを構築する際の参考にしていただけると幸いです。