リモートアクセス可能なMySQL 8データベースユーザーを作成する方法

リモートアクセス可能なMySQL 8データベースユーザーを作成する方法

最近、クライアント向けにMySQLデータベースGUIを追加するというタスクを任されたのですが、データベースサーバーがリモート接続を受け入れるように適切に設定されていないという問題に直面しました。これは実現するのが少し難しいですが、不可能ではありません。

MySQL 8 を、すべてのデータベースにアクセスできるユーザーとしてリモート接続するための設定手順を解説します。これは重大なセキュリティリスクとなるため、LAN のセキュリティを確保するだけでなく、MySQL ユーザーには非常に強力なパスワードを使用していることを必ず確認してください。これは、本来であれば実行すべきことです。

それでは、この構成を実際に実行してみましょう。

必要なもの

この接続を行うには、MySQL の実行インスタンスと、接続をテストするための Linux マシン、またはリモート接続設定を可能にする任意の数の MySQL クライアントが必要です。また、MySQL サーバー上で sudo 権限を持つユーザーも必要です。

参照: MySQL ルート パスワードの設定方法の復習はここです。

以上です。データベースマジックをしてみましょう。

1. リモート接続用にMySQLを構成する

まず最初に、MySQLをリモート接続用に設定する必要があります。設定は以下のとおりです。

  1. MySQL データベース サーバーにログインし、次のコマンドで構成ファイルを開きます。
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. そのファイルで、次の行を探します。
    bind-address = 127.0.0.1
  3. その行を次のように変更します。
    bind-address = 0.0.0.0
  4. ファイルを保存して閉じます。
  5. 次のコマンドで MySQL サービスを再起動します。
    sudo systemctl restart mysql

この時点で、MySQL はリモート接続用に開かれていますが、アクセス用のユーザーはまだ作成されていません。

2. リモートアクセス用のユーザーを作成する

次に、新しいMySQLユーザーを作成します。このユーザーをdbadminと呼びます。MySQLサーバーの設定によっては、「root」という名前のリモートアクセス権限を持つアカウントを追加できない可能性があるため、このユーザーを「root」と呼ぶことはできません。

新しい MySQL ユーザーを作成するには:

  1. まず、次のコマンドを使用して、MySQL をホストしているサーバーから MySQL コンソールにアクセスします。
    sudo mysql -u root -p
  2. MySQL コンソールで、次のコマンドを使用して新しいユーザーを作成します。
    create user 'dbadmin'@'%' identified by 'PASSWORD';
    ここで、PASSWORD は強力で一意のパスワードです。
  3. 次のようにして、ユーザーに新しいユーザーを作成する権限とグローバル権限を再ロードする権限を付与します。
    grant create user, reload on *.* to 'dbadmin'@'%';
  4. 新しいユーザーにすべての追加権限を付与するとともに、他のユーザーに新しい権限を付与する権限も付与します。
    grant all on *.* to 'dbadmin'@'%' with grant option;
  5. データベースの作成権限と選択権限を付与します。
    grant create, select on *.* to 'dbadmin'@'%';
  6. 権限をフラッシュし、次のコマンドでコンソールを終了します。
    FLUSH PRIVILEGES;
    exit

コマンド シーケンスは、以下に示すものと同様になります (図 A )。

新しい MySQL ユーザーを設定するときに、特定の権限を付与または拒否できます。
図A:新しいMySQLユーザーを設定する際に、特定の権限を付与または拒否できます。画像:Phil Hajjar/TechRepublic

3. 接続をテストする

MySQL がインストールされている別の Linux マシンにアクセスできる場合は、2 番目のマシンで次のコマンドを実行して接続をテストできます。

mysql -u dbadmin -h サーバー -p

ここで、SERVER は MySQL ホスティング サーバーの IP アドレスまたはドメインです。

パスワードの入力を求められたら、新しい dbadmin ユーザー用に作成した強力なパスワードを入力します。2台目のLinuxマシンからテストしている場合は、図Bのような画面が表示されるはずです。

別のマシンからの接続をテストして、リモート アクセスが正しく設定されていることを確認します。
図B:別のマシンから接続をテストし、リモートアクセスが正しく設定されていることを確認します。画像:Phil Hajjar/TechRepublic

システム上の任意のデータベースを管理できる MySQL コンソールへのアクセス権が付与される必要があります。

4. GUIツールを使用してデータベースサーバーにアクセスする

システムが正常にテストされたら、Beekeeper Studio や Adminer などのグラフィカル ユーザー インターフェイス ツールを使用してそのデータベース サーバーに接続できます。

Beekeeper スタジオで新しい接続を作成し、接続タイプとして MySQL を選択し、次の詳細を入力します (図 C )。

  • ホスト: MySQL サーバーの IP アドレスまたはドメイン。
  • ポート: 3306。
  • ユーザー: dbadmin。
  • パスワード:新しく作成した dbadmin ユーザーに設定したパスワード。
  • デフォルト データベース (オプション): MySQL サーバー上で見つかったデータベースの名前。これは、クエリを使用して MySQL コンソールから一覧表示できますSHOW DATABASES;
Beekeeper Studio で新しい接続を作成するには、接続タイプ、接続モード、ホスト IP などの情報が必要になります。
図C:Beekeeper Studioで新しい接続を作成するには、接続タイプ、接続モード、ホストIPなどの情報が必要です。画像:Phil Hajjar/TechRepublic

詳細を入力したら、「テスト」をクリックして接続が機能することを確認します。「OK」が表示されたら、接続名を入力し、「保存」をクリックします。最後に「接続」をクリックすると、GUIがリモートデータベースに正常に接続されます(図D)。

Beekeeper Studio はリモート データベースに正常に接続しました。
図 D: Beekeeper Studio はリモート データベースに正常に接続しました。

追加の接続を設定する

おめでとうございます!MySQL 8をリモート接続用に設定しただけでなく、すべてのデータベースにアクセスできるユーザーを作成し、コマンドラインとGUIの両方を使ってリモートサーバーに接続できました。さあ、データベース管理者として作業に取り掛かりましょう。

プレミアム: このバックエンド開発者採用キットを活用してください。

MySQL 8 のリモート接続を設定する方法を学習したので、次は LibreOffice、DBeaver、Grafana を使用して MySQL データベースを接続する方法を説明します。

Tagged: