MySQL'e 'localhost' kullanarak bağlanamazsınız, ancak '127.0.0.1' kullanarak tamam mı?


12

/ Etc / hosts dosyam şöyle görünüyor:

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

Ben sunucu inşa ederken, her ne kadar başarıyla localhost ping olabilir, Postfix ve Apache ve Dovecot gibi hizmetler için belirli yapılandırma dosyalarında, ben onları çalışmak için 127.0.0.1yerine belirtmek gerekiyordu bulundu localhost.

Ayrıca localhostMySQL'e bağlanmak için kullanılan belirli veritabanı tabanlı web sitelerinin yapılandırma dosyalarını da değiştirmem gerekiyordu .

hostsDosyada çeşitli değişiklikler denedim , ancak şimdiye kadar denediğim hiçbir şey yardımcı olmadı.

Sunucu Ubuntu 12.04.02 LTS çalıştırıyor. Selinux yüklü değildir ve IPtables varsayılan politikalarını kabul etmek ve yıkamak için ayarladıktan sonra bile yukarıdaki durum devam eder.

Yanıtlar:


15

Kontrol edebileceğiniz bir şey (MySQL konsoluna giriş yapmanızı gerektirir) - rootüzerinden giriş yapma izniniz olduğundan emin olun localhost.

mysql -h 127.0.0.1 -u root -p

- Başarıyla giriş yaptıktan sonra -

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)

Sadece oraya atmak, meselenin işte bu olması.


Doğru yolda olduğunuzu hissediyorum. Bunu yaptım ve root ve diğer birkaç kullanıcı localhost için oluşturulmuş olsa da, kullanıcılar için barındırma kontrol paneli tarafından oluşturulanların hepsi için olduğunu görebilirsiniz 127.0.0.1(biri hariç %). Sanırım bu muhtemelen düzeltmem için yeterli olduğunu gösteriyor, bu yüzden kısa sürede cevabınızı kabul edeceğim.
Peter Snow

yardım için teşekkürler! Değişikliğin etkili olması için mysql.user tablosunu güncelledikten sonra bir mysql sunucusunu yeniden başlatmanın gerekli olduğunu eklemek istiyorum.
lackovic10

Kabul edilmesine rağmen, bu mysql için genellikle (hiç?) Mesele değildir. Bkz EEAA yanıtını yerine (MySQL, yorumlayan localhostolarak socketyerine TCP).
ToolmakerSteve

8

Çoğu MySQL istemcisi, ana bilgisayarı olarak belirtirseniz, localhostTCP bağlantısı yerine bir soket bağlantısına takma olması bakımından tuhaftır . Seçenekleriniz ya yapışmalı 127.0.0.1ya da istemci destekliyorsa (mysql CLI ikili --protocolbayrağı ile olduğu gibi ), bir unix soketi yerine TCP kullanmaya zorlar.


Teşekkürler EEAA. Sorun, Joomla yükleyicisi gibi şeylerin başarısız olmasıdır. Yükleme sırasında ana bilgisayar adı alanında 127.0.0.1yerine belirtirseniz localhost, yükleme yollarının bana başka hatalar vererek dağılmasına neden olur, ancak localhost'un belirtilmesi veritabanını bağlayamaz! Bu duruma ne sebep oldu? Neden bende var?
Peter Snow

3
@PeterSnow MySQL yapılandırmanızda bir Unix etki alanı soketi kurun.
Michael Hampton

Thanks @MichaelHampton Son yarım saattir araştırdım ve bunu nasıl ayarlayacağımı bulamıyorum. Beni bir makaleye yönlendirebilir veya bana bir fikir verebilir misiniz? Ben var socket = /var/run/mysqld/mysqld.sockiçinde my.cnfve dosya izinleri 777. Teşekkür ile mysql aittir, mevcut olduğu.
Peter Snow

@PeterSnow Bu değişikliği yaptıktan sonra mysqld'yi yeniden başlattınız mı?
EEAA

Şu anda Joomla yükleme komut dosyası üzerinden kullanmaya çalışıyorum. Http sayfası ana bilgisayar adını ister. Eğer seçersem 127.0.0.1çalışır (ancak komut dosyası daha sonra girdiyi kullanır ve çözülebilir ad beklediğinden başarısız olur localhost), ancak localhostveritabanını oluşturmak için bağlanıyorsa başarısız olur.
Peter Snow


1

İzni şu şekilde kontrol edebilirsiniz:

[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

Eğer bu dinliyorsa 0.0.0.0:* bu herkesin mysql'e erişebileceği anlamına gelir.

bunun için bağlamayı my.conf dosyasında düzenleyebilirsiniz. Bunun için linux varsayılan yolunda:

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

İstediğiniz IP'ye izin vermek için bu satırları my.conf dosyasına ekleyin.

bind-address = 127.0.0.1   
bind-address = 0.0.0.0

Zaten bir cevabı kabul etmiş olmama rağmen, bilgi için teşekkürler a_learner.
Peter Snow

0

PHP hala varsayılan yuva konumunu kullanmaya çalışıyor. MariaDB / MySQL klasörünü / var / lib / mysql konumundan başka bir konuma taşıdıysanız, bu sorun oluşabilir . Sorunu çözmek için /etc/php.ini dosyasında yeni soketin konumunu tanımlamanız gerekir .

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

0

Symlink oluşturarak bu sorunu çözdüm sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock. Ama önce klasör oluşturmak zorundayım /var/run/mysqld/çünkü klasör başlangıçta mevcut değildi.


-1

/ Tmp içinde bir mysql.sock gerekir

ln -s /var/lib/mysql/mysql.sock mysql.sock

bundan sonra iyi çalışmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.