上記のライアンが指摘したように、必要なコマンドは
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
ただし、ドキュメントには、これを機能させるlocalhost
には、同じユーザーに対して別のユーザー アカウントを作成する必要があることが示されていることに注意してください。それ以外の場合は、より具体的なホスト列があるため、によって自動的に作成された匿名アカウントmysql_install_db
が優先されます。
言い換えると; ユーザーuser
が任意のサーバーから接続できるようにするため。次のように 2 つのアカウントを作成する必要があります。
GRANT ALL ON *.* to user@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
ここで完全なドキュメントを読んでください。
そして、ここに参考のための関連部分があります:
root としてサーバーに接続した後、新しいアカウントを追加できます。次のステートメントは、GRANT を使用して 4 つの新しいアカウントを設定します。
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
mysql> CREATE USER 'admin'@'localhost';
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> CREATE USER 'dummy'@'localhost';
これらのステートメントによって作成されたアカウントには、次のプロパティがあります。
2 つのアカウントのユーザー名は monty で、パスワードは some_pass です。どちらのアカウントも、何でもできる完全な権限を持つスーパーユーザー アカウントです。'monty'@'localhost' アカウントは、ローカル ホストから接続する場合にのみ使用できます。'monty'@'%' アカウントは、ホスト部分に '%' ワイルドカードを使用するため、任意のホストからの接続に使用できます。
monty としてどこからでも接続できるようにするには、 monty の両方のアカウントが必要です。localhost アカウントがない場合、monty がローカル ホストから接続するときに、mysql_install_db によって作成される localhost の匿名ユーザー アカウントが優先されます。その結果、monty は匿名ユーザーとして扱われます。この理由は、匿名ユーザー アカウントが 'monty'@'%' アカウントよりも具体的な Host 列の値を持っているため、ユーザー テーブルの並べ替え順で先に来るためです。(ユーザーテーブルの並べ替えについては、セクション6.2.4「アクセス制御、ステージ 1: 接続の検証」で説明しています。)