MySQL は権限管理をユーザー@接続元ホストで識別します。

以下はユーザー名は同じですが異なるアカウントです。

  • sample@192.168.11.1
  • sample@192.168.12.1

以下も異なるアカウントです。

  • sample@localhost
  • sample@127.0.0.1

mysql コマンドでログインする際に接続元

ワイルドカード

接続元ホストの指定で使用できる文字です。

  • _: 任意の1文字
  • %: 0以上の任意の文字

mysql クライアントで接続

接続先ホスト( -h )オプションを省略した場合は接続元ホストが localhost になります。
接続先ホスト( -h )オプションを指定した場合は接続元ホストが IP アドレス または ホスト名になります。

接続先ホストを省略

$ mysql -u sample -p

接続先ホスト( -h オプション)を省略した場合は接続元ホストは localhost が指定されます。
アカウントは sample@localhost です。

また MySQL サーバーとの通信は UNIX ドメインソケットファイル( mysql.socket ファイル )で同一物理ホストのプロセス間通信を使用します。 UNIX ドメインソケットファイル( mysql.socket ファイル ) も参照。

接続先ホストを指定

例として 127.0.0.1 を指定します。

$ mysql -h 127.0.0.1 -u sample -p

接続先ホスト( -h オプション)を指定した場合は接続元ホストはクライアントの IP アドレスになります。 例ではアカウントが sample@127.0.0.1 になります。

ユーザー

ユーザー一覧

mysql > select host, user from mysql.user;

ユーザー作成

CREATE USER 'example'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'example'@'127.0.0.1' IDENTIFIED BY 'password';
CREATE USER 'example' IDENTIFIED BY 'password'; -- ホストがワイルドカード(%)でユーザーが作成される

接続元ホストを省略したときはすべてのホストからアクセスできるワイルドカード % が指定されます。

ユーザー作成はできる限りホストを指定してください(例 開発環境 localhost, 127.0.0.1)。
ホストを指定せず作成したユーザーではlocalhostでアクセスできません。
詳しくは下記記事を参照ください。

ワイルドカード%の詳細と注意点は下記記事を参照してください。
MySQL ユーザのホストをワイルドカードで指定してもlocalhostは含まれない - b.l0g.jp

ユーザー削除

DROP USER 'example'; // ホストがワイルドカードのexampleユーザー削除
DROP USER 'example'@'localhost'; ホストがlocalhostexampleユーザー削除
DROP USER 'example'@'127.0.0.1'; ホストが127.0.0.1exampleユーザー削除

パスワード変更

13.7.1.1 ALTER USER ステートメント

mysql> alter user 'sample'@'localhost' identified by '<password>';