web-dev-qa-db-ja.com

127.0.0.1を使用して仮想MySQLインスタンスに接続できますが、localhostではありません。

ローカルVirtualBoxインスタンスでMySQL 5.7.33を実行します。ローカルにアクセス可能になるように、仮想サーバーからポート3306を転送しました。私の仮想ホストで、私はmy /etc/mysql/my.cnfファイルにこれを持っています...

[client]
#password = your_password
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld]
port = 3306
bind-address = 0.0.0.0
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
 _

私のローカルマシンから、私はMySQLインスタンスに接続することができます

mysql -h 127.0.0.1 -u my_user my_db -p
 _

しかし、私が「localhost」に変わったら、私はもう接続できません

$ mysql -h localhost -u my_user my_db -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
 _

問題が何であるかわからない。私のローカルマシンから(仮想サーバーではない)、これは "localhost"のために返されます...

$ Host localhost
localhost has address 127.0.0.1
localhost has IPv6 address ::1
 _
3
Dave

その "user"がソケットを介して接続できることについてMySQLに指示してください。

CREATE USER "user"@"localhost" ...;
GRANT ... ON ... TO "user"@"localhost";
 _

ただし、それはその同じ仮想ホスト内からのみ「User」を接続するだけです。

それを別の機械と考えてください。

0
Rick James