MySQLコマンドはユーザー名に「@localhost」を追加します

MySQLコマンドはユーザー名に「@localhost」を追加します

これについては、どうも理解できないようです。

コマンドラインを使用して、別のサーバーにある MySQL データベースに接続したいと考えています。 先に進み、ユーザーのユーザー名とパスワードを作成しました。 また、そのデータベースに対するすべての権限をそのユーザーに付与しました。

コマンドを使用するとmysql -h <hostname> -u <username> -p、次のエラーが発生します。

ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)

問題は、現在のマシンのホスト名がユーザー名に追加され続けることです。明らかに、これはuser@<local_machine_hostname>正しくありません。

何を入力するかは問題ではありません。たとえば、次のように入力するとします。

mysql -h <hostname> -u '<username>'@'<hostname>' -p

同じことを行いますが、エラー出力では次のように表示されます。

Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'

設定ファイル内に、このような状況を引き起こす設定があるのでしょうか? 本当に困っています。Tikiwiki サーバーをセットアップする必要があるのですが、mysql をセットアップする手順で、ローカル マシンのホスト名が mysql ログイン名に追加され続けるため、接続できません。

答え1

MySQL の権限はホストに基づいています。ユーザーを作成する (または GRANT) ときに、ホスト名を指定します。ホスト名は '%' または 'localhost' または他の IP またはホスト名にすることができます。これはセキュリティ機能です。これが行われるようにする必要があります。アクセスが拒否されたと通知されるときに、ユーザー名にホスト名が「追加」されるわけではありません。それぞれが mysql.users テーブルの異なる列に保存されます。そのユーザーとして自分のマシンから MySQL にログインできるようにするには、自分のマシンからそのユーザーにアクセスを許可する必要があります...

からCREATE USER に関する MySQL ドキュメント:

各アカウントの名前は、GRANT ステートメントと同じ形式 (例: 'jeffrey'@'localhost') で付けられます。アカウント名のユーザー名部分のみを指定すると、ホスト名部分として '%' が使用されます。アカウント名の指定に関する詳細については、セクション 12.4.1.3「GRANT 構文」を参照してください。

答え2

mysql wworkbannchにアクセスしてコードを入力します

ALTER USER ALTER USER 'root'@'localhost' は '123' によって mysql_native_password で識別されます。

関連情報