MySQLは、データベースに保持されているデータの管理に使用されるプログラミング言語である構造化照会言語(SQL)に基づく、最も一般的なオープンソースのリレーショナルデータベース管理システム(RDBMS)の1つです。
バックエンド開発を始めたばかりの初心者でもすばやく簡単に使用でき、Xampp、Lampp、Wampなどのさまざまなスタックパッケージに統合されています。
この特定の投稿では、UbuntuシステムにMySQLサーバーをインストールする方法を紹介します。追加情報には、セキュリティオプションの構成、認証方法の調整、および新しいユーザーの作成が含まれます。このチュートリアルで選択したUbuntuリリースはUbuntu20.04LTSです。これは、この記事を書いている時点での最新リリースです。
UbuntuへのMySQLのインストール
要件
システムで昇格された特権(root)が必要になります。これを行うには、以下のコマンドを実行します。
sudo su
手順
この投稿を書いている時点で、現在のMySQLLinuxリリースはバージョン5.7です。インストールを開始するには、以下の手順に従ってください:
手順1)システム内のすべてのパッケージとリポジトリが最新であることを確認します。以下のコマンドを実行することでこれを行うことができます:
sudo apt update


ステップ2)次に、aptパッケージマネージャーを介してMySQLをインストールします。以下のコマンドを実行します。
sudo apt install mysql-server


ステップ3)インストールが正常に完了すると、mysql-serviceが自動的に開始されます。以下のコマンドを実行することで確認できます:
sudo systemctl status mysql
下の画像のような出力が得られるはずです。


サービスが実行されていない場合は、次のコマンドを実行してください。
sudo /etc/init.d/mysql start
MySQLのインストールを確認する(オプション)
以下のコマンドを実行してインストールを確認できます。これにより、システムにインストールされているMySQLのバージョンとディストリビューションが出力されます。
mysql --version


MySQLサーバーを保護する
MySQLサーバーが正常にインストールされたので、将来構成するサーバーとデータベースのセキュリティを確保するために、いくつかのパラメーターを設定する必要があります。
それ以外の場合は、MySQLサーバーパッケージのインストールが完了した後、mysql-secure-installationユーティリティが自動的に起動します。ただし、これが当てはまらない場合は、次のコマンドを実行してください。
sudo mysql_secure_installation
パスワードプラグインを検証するかどうかを尋ねるプロンプトが表示されます。ユーザーパスワードの強度をチェックして、ユーザーが強力なパスワードのみを設定できるようにすることで、MySQLサーバーのセキュリティを強化します。 Yを押してVALIDATIONを受け入れるか、RETURNキーを押してスキップします。


次に、rootパスワードを設定するためのプロンプトが表示されます。パスワードを入力してEnterキーを押します。セキュリティ上の理由から、コンソールに入力した内容は表示されないことに注意してください。


次に、すべての匿名ユーザーを削除するかどうかを尋ねるプロンプトが表示されます。[はい]にYを入力します。ここからのその他のプロンプトについては、「はい」にYを入力してください。


rootとしてログインし、ユーザー認証を調整します
MySQLサーバーには、Linuxターミナルからデータベースにアクセスして対話できるクライアント側ユーティリティが付属しています。
通常、構成を実行せずにUbuntuにMySQLを新規インストールした後、サーバーにアクセスするユーザーは、認証ソケット(auth_socket)プラグインを使用して認証されます。
auth_socketを使用すると、サーバーがパスワードを使用してユーザーを認証できなくなります。セキュリティ上の懸念が生じるだけでなく、ユーザーがphpMyAdminなどの外部プログラムを使用してデータベースにアクセスするのを防ぎます。認証方法をauth_socketからmysql_native_passwordの使用に変更する必要があります。
これを行うには、MySQLコンソールを開く必要があります。 Linuxターミナルで次のコマンドを実行します。
sudo mysql


次に、さまざまなユーザーのデータベースで使用されている認証方法を確認する必要があります。以下のコマンドを実行することでこれを行うことができます。
SELECT user,authentication_string,plugin,host FROM mysql.user;


上の画像から、rootユーザーがauth_socketプラグインを使用して実際に認証されていることを確認できます。以下の「ALTERUSER」コマンドを使用して、「パスワード認証」の使用に切り替える必要があります。上記のコマンド「sudomysql_secure_installation」を実行するときに設定したパスワードが置き換えられるため、安全なパスワード(数字、文字列、特殊記号を組み合わせた8文字以上にする必要があります)を使用してください。以下のコマンドを実行します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';


上の画像で強調表示されているテキストは、安全なパスワードを入力する場所であることに注意してください。単一のタグで囲みます。次に、許可テーブルをリロードし、MySQLサーバーへの変更を更新する必要があります。以下のコマンドを実行してこれを行います。
FLUSH PRIVILEGES;


完了したら、rootの使用が認証にauth_socketを使用しなくなったことを確認する必要があります。以下のコマンドをもう一度実行してください。
SELECT user,authentication_string,plugin,host FROM mysql.user;


上の画像から、ルート認証方法が「auth_socket」から「password」に変更されていることがわかります。
rootの認証方法を変更したため、MySQLコンソールを開くために以前に使用したのと同じコマンドを使用することはできません。つまり、「sudomysql」です。以下に示すように、ユーザー名とパスワードのパラメータを含める必要があります。
mysql -u root -p
「-u」はユーザーを示し、この場合は「root」であり、「-p」は「password」を表し、Enterキーを押すとサーバーから入力を求められます。


新しいユーザーの作成
すべての設定が完了したら、適切な権限を付与する新しいユーザーを作成できます。この例では、ユーザー「tuts_fosslinux」を作成し、すべてのデータベーステーブルに対する権限と、ユーザー権限を変更、削除、および追加する権限を割り当てます。下のコマンドを1行ずつ実行します。
CREATE USER 'tuts_fosslinux'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'tuts_fosslinux'@'localhost' WITH GRANT OPTION;
最初のコマンドは新しいユーザーを作成し、2番目のコマンドは必要な特権を割り当てます。


これで、以下のコマンドを実行して、新しいユーザーをテストできます。
mysql -u tuts_fosslinux -p


UbuntuサーバーにMySQL-Serverをインストールする
MySQLサーバーをUbuntuサーバーにインストールすることは、上記の手順と大差ありません。ただし、サーバーにはリモートアクセスするため、サーバーのリモートアクセスも有効にする必要があります。
データベースをインストールしてセキュリティオプションを設定するには、ターミナルで次のコマンドを1行ずつ実行します。
sudo apt update sudo apt install mysql-server sudo mysql_secure_installation
インストールが正常に完了したら、リモートアクセスを有効にする必要があります。論理的には、MySQLサーバーが通信するためにUbuntuサーバーファイアウォールのポートを開くだけです。デフォルトでは、MySQLサービスはポート3306で実行されます。以下のコマンドを実行してください。
sudo ufw enable
sudo ufw allow mysql


MySQLデータベースの信頼性とアクセシビリティを強化するために、起動時に実行を開始するようにMySQLサーバーサービスを構成できます。これを行うには、以下のコマンドを実行します。
sudo systemctl enable mysql


次に、サーバーのインターフェースを構成する必要があります。これにより、サーバーはリモートでアクセス可能なインターフェイスをリッスンできるようになります。 「mysqld.cnf」ファイルを編集する必要があります。以下のコマンドを実行します。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf


デフォルトでは、バインドアドレスは「127.0.0.1」です。パブリックネットインターフェイス用にバインドアドレスを追加し、サービスネットインターフェイス用に別のバインドアドレスを追加します。すべてのIPアドレスに対してバインドアドレスを「0.0.0.0」として構成できます。
結論
UbuntuシステムでのMySQLサーバーのセットアップに関するこのチュートリアルを楽しんでいただけたでしょうか。 MySQLを使い始めたばかりで、必要なのが単純なデータベースとユーザーを作成することだけである場合は、上記の手順が非常に役立ちます。この記事が参考になった場合は、お気軽にリンクを友達と共有してください。