/ 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のデフォルトポリシーを受け入れてそれらをフラッシュするように設定した後でも、上記の状況が残ります。
チェックする可能性があることの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)
これが問題である場合に備えて、そこに捨てるだけです。
ほとんどのMySQLクライアントは、ホストをlocalhost
として指定した場合、TCP接続ではなくソケット接続にエイリアスを設定します。オプションは次のいずれかです。 127.0.0.1
または、クライアントがサポートしている場合(mysql CLIバイナリが--protocol
フラグ)、UNIXソケットの代わりにTCPを使用するように強制します。
あなたはこのような許可をチェックすることができます:
[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
許可が正しいかどうかに注意する必要があるのは、MariaDBを使用している場合に、バージョン10.0.1および5.5.30でこの正確な動作を引き起こすバグがあったかどうかです https://mariadb.atlassian.net/browse/MDEV- 4356
この問題は、シンボリックリンクSudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
を作成することで解決しました。ただし、最初にフォルダー/var/run/mysqld/
を作成する必要があります。これは、最初はフォルダーが存在しなかったためです。
PHPはデフォルトのソケット位置を使用しようとしています。この問題は、MariaDB/MySQLフォルダーを/ var/lib/mysqlから別の場所に移動した場合に発生する可能性があります。この問題を解決するには、新しいソケットの場所を/ etc/php.iniファイルで定義する必要があります。
mysqli.default_socket =/newDBLocation/mysql/mysql.sock