LinuxにMySQLをインストールする方法

Oracle LinuxにMySQLのリポジトリがあるようだったので、MySQLをインストールしようとしたがエラーになってインストール出来ませんでした。

$ sudo dnf install mysql-community-server
Last metadata expiration check: 3:44:41 ago on Mon 29 Jan 2024 01:20:33 PM GMT.
All matches were filtered out by modular filtering for argument: mysql-community-server
Error: Unable to find a match: mysql-community-server

MySQL 8.0のRPMファイルをインストールします。最新版RPMファイルはこちらで確認できます。

$ sudo rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm

既存のモジュールを無効にするようメッセージが出たので無効にします。

$ sudo yum module -y disable mysql

この状態でMySQLをインストールすると、どのバージョンがインストールされるか確認しOKであればインストールします。

$ sudo dnf info mysql-community-server
$ sudo dnf install mysql-community-server

これでインストール完了です。

$ mysql --version
mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)

サービスを起動します。

$ sudo systemctl start mysqld

状態を確認します。

$ systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-01-29 17:33:42 GMT; 6s ago
...

初回起動時のログに初期パスワードが記載されているので確認します。

$ vi /var/log/mysqld.log

初期パスワードを使用してログインします。

$ mysql -u root -p

パスワードを再設定します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

MySQLを再起動します。

$ sudo systemctl restart mysqld

ユーザーを作成します。

mysql> create user '<user name>'@'%' identified by '<password>';

外部からの接続可能な権限付与します。

mysql> grant all on *.* to '<user name>'@'%' with grant option;
mysql> flush privileges;

穴あけ

# sudo firewall-cmd --add-service=mysql --zone=public --permanent
# sudo firewall-cmd --add-port=3306/tcp --permanent

再起動

# sudo firewall-cmd --reload

状態確認

# sudo firewall-cmd --list-services