MySQL 8.0 リファレンスマニュアル


2.10.4 初期 MySQL アカウントの保護

MySQL のインストールプロセスには、MySQL アカウントを定義する mysql システムスキーマの付与テーブルを含む、データディレクトリの初期化が含まれます。 詳細は、セクション2.10.1「データディレクトリの初期化」を参照してください。

このセクションでは、MySQL のインストール手順中に作成された初期 root アカウントにパスワードを割り当てる方法について説明します (まだ行っていない場合)。

注記

このセクションで説明するプロセスを実行する別の方法:

  • Windows では、MySQL Installer を使用したインストール中にこのプロセスを実行できます (セクション2.3.3「MySQL Installer for Windows」 を参照)。

  • すべてのプラットフォームで、MySQL 配布には、MySQL インストールをセキュアにするプロセスの大部分を自動化するコマンド行ユーティリティー mysql_secure_installation が含まれます。

  • すべてのプラットフォームで、MySQL Workbench を使用でき、ユーザーアカウントを管理できます (第31章「MySQL Workbench を参照)。

次の状況では、初期アカウントにパスワードがすでに割り当てられている可能性があります:

  • Windows では、MySQL Installer を使用してインストールを実行すると、パスワードを割り当てることができます。

  • macOS インストーラを使用したインストールでは、初期ランダムパスワードが生成されます。このパスワードは、インストーラによってダイアログボックスに表示されます。

  • RPM パッケージを使用したインストールでは、サーバーエラーログに書き込まれる初期ランダムパスワードが生成されます。

  • Debian パッケージを使用したインストールでは、パスワードを割り当てるオプションが提供されます。

  • mysqld --initialize を使用して手動で実行されるデータディレクトリの初期化の場合、mysqld は初期ランダムパスワードを生成し、期限切れとマークして、サーバーエラーログに書き込みます。 セクション2.10.1「データディレクトリの初期化」を参照してください。

mysql.user 付与テーブルは、初期 MySQL ユーザーアカウントとそのアクセス権限を定義します。 MySQL をインストールすると、すべての権限を持ち、何でも実行できる'root'@'localhost'スーパーユーザーアカウントのみが作成されます。 root アカウントのパスワードが空の場合、MySQL のインストールは保護されません: 誰でも root パスワードなしとして MySQL サーバーに接続でき、すべての権限を付与できます。

'root'@'localhost'アカウントの mysql.proxies_priv テーブルには、''@''PROXY 権限 (すべてのユーザーおよびすべてのホスト) の付与を可能にする行もあります。 これにより、root はプロキシユーザーを設定したり、プロキシユーザーを設定するための権限をほかのアカウントに委任したりできます。 セクション6.2.18「プロキシユーザー」を参照してください。

初期 MySQL root アカウントのパスワードを割り当てるには、次の手順を使用します。 例の root-password を、使用するパスワードに置き換えます。

サーバーが実行されていない場合は起動します。 その手順は、セクション2.10.2「サーバーの起動」を参照してください。

初期 root アカウントには、パスワードがある場合とない場合があります。 次の手順のいずれかを選択します:

  • 期限切れの初期ランダムパスワードを持つ root アカウントが存在する場合は、そのパスワードを使用して root としてサーバーに接続し、新しいパスワードを選択します。 これは、データディレクトリが手動で、またはインストール操作中にパスワードを指定できないインストーラを使用して mysqld --initialize を使用して初期化された場合です。 パスワードは存在するため、サーバーへの接続に使用する必要があります。 ただし、パスワードの有効期限が切れているため、新しいパスワードを選択する以外の目的でアカウントを使用することはできません。

    1. 初期ランダムパスワードがわからない場合は、サーバーエラーログを参照してください。

    2. パスワードを使用して root としてサーバーに接続します:

      shell> mysql -u root -p
      Enter password: (enter the random root password here)
    3. ランダムパスワードを置き換える新しいパスワードを選択します:

      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
  • root アカウントは存在するがパスワードがない場合は、パスワードを使用せずに root としてサーバーに接続し、パスワードを割り当てます。 これは、mysqld --initialize-insecure を使用してデータディレクトリを初期化した場合です。

    1. パスワードを使用せずに root としてサーバーに接続します:

      shell> mysql -u root --skip-password
    2. パスワードを割り当てます:

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

root アカウントにパスワードを割り当てた後、そのアカウントを使用してサーバーに接続するたびにそのパスワードを指定する必要があります。 たとえば、mysql クライアントを使用してサーバーに接続するには、次のコマンドを使用します:

shell> mysql -u root -p
Enter password: (enter root password here)

mysqladmin でサーバーを停止するには、次のコマンドを使用します:

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)
注記

パスワード設定の詳細は、セクション6.2.14「アカウントパスワードの割り当て」を参照してください。 root パスワードを設定したあとでそれを忘れた場合は、セクションB.3.3.2「root のパスワードをリセットする方法」を参照してください。

追加のアカウントをセットアップするには、セクション6.2.8「アカウントの追加、権限の割当ておよびアカウントの削除」を参照してください。


関連キーワード:  インストール, パスワード, アカウント, サーバー, 初期, セクション, 参照, 起動, パッケージ, Installer