web-dev-qa-db-ja.com

ホストが%に設定されているローカルホストからMySQLにログインできません

XAMPP 5.5.24をインストールし、アプリケーションとそれに接続するMySQLユーザー用のDBを作成しました。しかし、私は次の問題に直面していました。

Hostからのアクセスを明示的に許可するまでmysql.userテーブルのlocalhost列を%に設定している間、ユーザーはMySQLにローカルに接続できませんでした。

mysql> select user, Host from mysql.user order by user;
+------------------+-----------+
| user             | Host      |
+------------------+-----------+
|                  | localhost |
|                  | linux     |
| myNewUser        | %         |
| myNewUser        | localhost |
| pma              | localhost |
| root             | localhost |
| root             | linux     |
+------------------+-----------+
7 rows in set (0,00 sec)

Host列の%は、localhostを含むすべてを許可する必要があると思いました。ただし、行| myNewUser | localhost |がないと、MySQLはLAN IPアドレスを指定するまでローカル接続を拒否します(-h localhost127.0.0.1を試行)。

iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h localhost
Enter password: 
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h 127.0.0.1
Enter password: 
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h 10.0.1.2
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 133
Server version: 5.6.24 Source distribution

これは正常な動作ですか?それとも私は何かが足りないのですか?

1
Melebius

@ wurtel で述べたように、localhostへの接続はUNIXソケットファイルを使用してTCPをバイパスするため、どのTCPアドレス(%)。

参照: MySQL 5.7リファレンスマニュアル— 5.2.2 MySQLサーバーへの接続

1
Melebius

TCP/IP経由でログインする場合は、ポートとプロトコルを指定する必要があります

mysql -u myNewUser -p -h 10.0.1.2 -p3306 --protocol=tcp

その後、それは動作するはずです。

確認するには、ログイン時にこれを実行します

mysql> SELECT USER() AttemptedToLoginAs,CURRENT_USER() MySQLAllowedMeAs;

AttemptedToLoginAsMySQLAllowedMeAsの両方がmyNewUser@%、あなたはそれを正しくしました。

0
RolandoMySQLDBA