web-dev-qa-db-ja.com

「localhost」を使用してMySQLに接続できませんが、「127.0.0.1」を使用しても問題ありませんか?

/ etc/hostsファイルは次のようになります。

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

サーバーの構築中にlocalhostにpingを正常に実行できたものの、PostfixやApache、Dovecotなどのサービスの特定の構成ファイルでは、それらを作成するためにlocalhostではなく127.0.0.1を指定する必要があることがわかりました作業。

MySQLへの接続にlocalhostを使用した、特定のデータベース駆動型Webサイトの構成ファイルを変更する必要もありました。

hostsファイルにさまざまな変更を加えましたが、これまでに試みたことは何も役に立ちませんでした。

サーバーはUbuntu 12.04.02 LTSを実行しています。 selinuxがインストールされていないため、IPtablesのデフォルトポリシーを受け入れてそれらをフラッシュするように設定した後でも、上記の状況が残ります。

12
Peter Snow

チェックする可能性があることの1つは(MySQLコンソールにログインする必要があります)-rootを介してlocalhostにログインする権限があることを確認してください。

mysql -h 127.0.0.1 -u root -p

-ログインに成功したら-

mysql> select user,Host from mysql.user;
+------+--------------------------------+
| user | Host                           |
+------+--------------------------------+
| root | 127.0.0.1                      | 
| root | ::1                            |
| root | localhost                      | <-- Make sure you have a localhost entry for root
+------+--------------------------------+
3 rows in set (0.00 sec)

これが問題である場合に備えて、そこに捨てるだけです。

15
drewrockshard

ほとんどのMySQLクライアントは、ホストをlocalhostとして指定した場合、TCP接続ではなくソケット接続にエイリアスを設定します。オプションは次のいずれかです。 127.0.0.1または、クライアントがサポートしている場合(mysql CLIバイナリが--protocolフラグ)、UNIXソケットの代わりにTCPを使用するように強制します。

8
EEAA

あなたはこのような許可をチェックすることができます:

[learner@localhost ~]$ Sudo netstat -npa | grep mysqld  
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6284/mysqld         
unix  2      [ ACC ]     STREAM     LISTENING     233040 6284/mysqld         /var/lib/mysql/mysql.sock

これが0 0.0.0.0:*でリッスンしている場合、すべての人がそのmysqlにアクセスできることを意味します。

このバインドはmy.confファイルで編集できます。 Linuxのデフォルトパスは次のとおりです。

[learner@localhost ~]$ Sudo vi /etc/my.cnf

これらの行をmy.confファイルに追加して、必要なIPを許可します。

bind-address = 127.0.0.1   
bind-address = 0.0.0.0
1
a_learner

許可が正しいかどうかに注意する必要があるのは、MariaDBを使用している場合に、バージョン10.0.1および5.5.30でこの正確な動作を引き起こすバグがあったかどうかです https://mariadb.atlassian.net/browse/MDEV- 4356

1
Scott Mcintyre

この問題は、シンボリックリンクSudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sockを作成することで解決しました。ただし、最初にフォルダー/var/run/mysqld/を作成する必要があります。これは、最初はフォルダーが存在しなかったためです。

0
saharul

PHPはデフォルトのソケット位置を使用しようとしています。この問題は、MariaDB/MySQLフォルダーを/ var/lib/mysqlから別の場所に移動した場合に発生する可能性があります。この問題を解決するには、新しいソケットの場所を/ etc/php.iniファイルで定義する必要があります。

mysqli.default_socket =/newDBLocation/mysql/mysql.sock
0
joelschmid