'Homestead' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: YES)


165

Laravel 5.0 kullanarak Mac OS Yosemite kullanıyorum.

Yerel çevremdeyken koşmaya php artisan migratedevam ediyorum:

'Homestead' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: YES)

Yapılandırma

İşte benim .env

APP_ENV=local
APP_DEBUG=true
APP_KEY=*****

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Uygulamanın \ config \ DatabaseFunctions.php

   'mysql'       => [
    'driver'      => 'mysql',
    'host'        => env('DB_HOST', 'localhost'),
    'database'    => env('DB_DATABASE', 'homestead'),
    'username'    => env('DB_USERNAME', 'homestead'),
    'password'    => env('DB_PASSWORD', 'secret'),
    'unix_socket' => '/tmp/mysql.sock',
    'charset'     => 'utf8',
    'collation'   => 'utf8_unicode_ci',
    'prefix'      => '',
    'strict'      => false,
    ]

Bu tür bir hatayı nasıl önleyebilirim?

Denedim :


1

içinde app / DatabaseFunctions.php

Değiştir localhostile127.0.0.1

'host'=> env('DB_HOST', 'localhost') ->'host' => env('DB_HOST', '127.0.0.1')

Ayrıca, .env

DB_HOST=localhost -> DB_HOST=127.0.0.1


2

Ortam belirtmeyi deneyin

php artisan migrate --env=local


3

MySQL'in çalışıp çalışmadığını kontrol edin

mysqladmin -u homestead -p status Enter password: secret

Bende var

Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012

Yani koşuyor.


4

MySQL UNIX Soketini Kontrol Edin ( Bu adım benim için çalışır )


1
en iyi uygulama, hesabın gerçekten mysql'de var olmasını sağlamaktır ... "Bu anahtarı sokakta buldum ve ön kapı kilidimde çalışmıyor. Anahtarın çalışmasını sağlamak için kilidi nasıl değiştirebilirim?"
Marc B

1
Homestead VM'yi mi kullanıyorsunuz? Sadece VM'deyken çalışacağını buldum. ssh vagrant@127.0.0.1 -p 2222 ile başlayabilirsiniz. Varsayılan makinem db'nin çalıştığını söyleyemez.
Jay Edwards

Yanıtlar:


254

Access'in 'homestead' @ 'localhost' laravel 5 hatası nedeniyle reddedilmesinin nedeni .env.php dosyasının önbelleğe alma sorunudur . Laravel 5 .env dosyanızda ortam tabanlı yapılandırma kullanıyor.

1 . Uygulama kök dizininize gidin ve .env dosyasını açın (ubuntu'da gizli olabilir, bu yüzden gizli dosyaları göstermek için ctrl+ tuşuna basın hve terminalde iseniz, sonra ls -aeditörünüze : gizli dosyaları göstermek için yazın:) ve veritabanı yapılandırma ayarını değiştirin. sonra .env dosyanızı kaydedin

DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''

2 . ardından apache sunucunuzu / web sunucunuzu yeniden başlatın. ve sayfanızı yenileyin ve yaptınız

3 . Sorun devam ederse, eski yapılandırma önbellek dosyasını temizlemek için aşağıdaki komutu çalıştırmayı deneyin.

php artisan config:clear

Şimdi hatayla işiniz bitti


1
Benim için çalıştım teşekkürler, neden db detaylarımızı database.php dosyasında yaptığımız gibi .env dosyasında ayarlamamız gerektiğine dair bir soru
Dipen

1
Belki birden fazla ortama ihtiyacınız var, üretim ve yerel.
Abdou Tahiri

5
Sürekli "php artisan hizmet" kullanırken Apache'yi yeniden başlatmaya çalışırken, benimle aynı hatayı yapmamanızı öneririm> <
Carlton

1
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'Çalışmıyor ve şimdi ._.
Siyah

1
Değiştirmeyi denedim .envve config:clear cache:cleartüm komutlar yeniden başlatıldı, apacheancak yine de aynı sorunu alıyorum.
Luzan Baral

67

TLDR: Sunucuyu + durdurmanız ve şunu kullanarak yeniden başlatmanız gerekir :Ctrlcphp artisan serve


Detaylar:

Laravel kullanıyorsanız ve zaten yerel geliştirici sunucusunu başlattıysanız, php artisan serve

Ve yukarıdaki sunucunun zaten çalışmasını sağladıktan sonra .env dosyasında veritabanı sunucunuzla ilgili şeyleri değiştirirsiniz. MySQL'den SQLite veya başka bir şeye geçmek gibi. İşlemi, yani işlemi Ctrcl Cdurduran herhangi bir şeyi durdurduğunuzdan emin olmanız gerekir . Sonra Artisan Serve'yi yeniden başlatın, yani y php artisan serveve tarayıcınızı yenileyin ve veritabanıyla ilgili sorununuz düzeltilecektir. Laravel 5.3 için benim için çalışan bu oldu


aman tanrım bu benim için çalıştı teşekkürler. ama env değiştiğinde nasıl bir araç durdurabilirim? Bu iyi bir deneyim olduğunu
kılıç Tabatabaee Yazdi

31

Çözmenin iki yolu

İlk yol (Önerilmez)

Veritabanı yapılandırma dosyanızı (laravel_root / config / database.php) açın ve aşağıdaki kod bloğunu arayın.

        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'blog'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', ''),

Kod bloğunu aşağıdaki gibi değiştirin

        'host'      => 'yourHostName',
        'database'  => 'YourDatabastName',
        'username'  => 'YoutDatabaseUsername',
        'password'  => 'YourDatabasePassword',

İkinci yol (Laravel tarafından tavsiye edilir)

Laravel kökünüzde .env dosya çağrısı olup olmadığını kontrol edin, .env.example dosyasını arayın, dosya darbe göründükten sonra .env olarak kopyalayın / yeniden adlandırın!

APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomNumber

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

Aşağıdaki bloğu aşağıdaki gibi değiştirin

DB_HOST=yourHostName
DB_DATABASE=yourDatabaseName
DB_USERNAME=yourDatabaseUsername
DB_PASSWORD=youPassword

Şimdi iyi çalışacak.


1
Bu dosyanın amacı nedir? Bu bilgi root/config/database.phpgereksiz görünüyor.
Halter

Bilgi dozu gereksiz değil, sunucu bilgilerini korumak için .env dosyasındaki değeri okumak için env işlevini kullanıyor.
absiddiqueLive

Homestead ile ana bilgisayar adınızı, veritabanı adınızı, kullanıcı adınızı ve parolanızı nasıl bulabilir veya oluşturabilirsiniz?
Connor Leech

21

Eğer php artisan migratevagrant kutusundan değil ana makineden kullanıyorsanız, o zaman .envkutunun ipinin içinde tanımlamanız gerekir192.168.10.10

ve açıkçası ip gibi kullanıcılardan homestead için izin ayarlamak gibi bir şey

grant all privileges on *.* to 'homestead'@% identified by 'secret';

içinde .envdosyanın

DB_HOST=192.168.10.10
DB_DATABASE=homestead
DB_USERNAME=homestead

Bunu çalıştıramadım, ama grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';benim için çalıştı.
Ryan

21

PHP'nin varsayılan web sunucusunu (örn. php artisan serve) Kullanıyorsanız, .env dosya değerlerinizi değiştirdikten sonra sunucunuzu yeniden başlatmanız gerekir.


11

Homestead'i yüklediğinizde, bu, VM'de varsayılan bir "homestead" veritabanı oluşturur. Sanal Makineye SSH göndermeli homestead sshve taşıma işlemlerinizi oradan gerçekleştirmelisiniz. Sanal makine olmadan yerel olarak çalışıyorsanız, veritabanınızı manuel olarak oluşturmanız gerekir. Varsayılan olarak, veritabanı homestead olarak adlandırılmalı, kullanıcı adı homestead ve parola gizlidir.

daha fazla ayrıntı için laracasts veya bu blog gönderisindeki bu konuyu kontrol edin


eğer alıyorsan

[PDOException] SQLSTATE[HY000] [2002] No such file or directory

/app/config/database.php dosyasındaki "host" ifadesini "localhost" yerine "127.0.0.1" olarak değiştirmeyi deneyin. Bu konuda burada daha fazla ayrıntı ve diğer düzeltmeleri bulabilirsiniz iplik .

Ayrıca doğru belirtip belirtmediğinizi de kontrol edin unix_socket. bu konuyu kontrol edin .


@ rangerover.js /app/config/database.php dosyasındaki "host" dosyasını "localhost" yerine "127.0.0.1" olarak değiştirmeyi deneyin
Sojan V Jose

@ rangerover.js bu konuyu kontrol edin stackoverflow.com/questions/20723803/… . çözümlerin herhangi birine bakın.
Sojan V Jose

@ rangerover.js ayrıca mysql hizmetinin çalışıp çalışmadığını kontrol edin :)
Sojan V Jose

@ rangerover.js unix_socket'inizi kontrol edebilir mi? stackoverflow.com/a/25649930/939299
Sojan V Jose

1
Sonunda çalıştı 4. denedim. Lütfen tüm yorumlarınızı silin ve bu bağlantıyı bana yardımcı olduğu için cevabınızın bir parçası olarak stackoverflow.com/a/25649930/939299 ekleyin.
cyber8200

11

MySQL UNIX Soketini Kontrol Edin

Bul unix_socket yerini MySQL kullanılarak

mysql -u homestead -p

mysql> show variables like '%sock%';
+-----------------------------------------+-----------------------------+
| Variable_name                           | Value                       |
+-----------------------------------------+-----------------------------+
| performance_schema_max_socket_classes   | 10                          |
| performance_schema_max_socket_instances | 322                         |
| socket                                  | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
3 rows in set (0.00 sec)

Sonra config / database.php dosyasına gidiyorum

Bu satırı güncelliyorum: 'unix_socket' => '/tmp/mysql.sock',

kime: 'unix_socket' => '/var/run/mysqld/mysqld.sock',

Bu kadar. Benim 4. denemem için çalışıyor. Umarım bu adımlar birine yardımcı olur. : D


Vay be, bu beni kurtardı
Petar Vasilev

11

Aynı sorunu yaşadım ve sonunda Sunucuyu yeniden başlatmak ve yeniden başlatmak zorunda olduğum ortaya çıktı

Ctrl+ csonra

php artisan serve

9

Windows PC'de Aşağıda izleyin.


  1. Uygulamanızın Kök klasörüne erişin.

  2. .Env dosyasını düzenleyin

Uygulamanızın Kök klasörüne erişin

.Env Dosyasını Düzenle

Vurgulananı düzenleyin ve KullanıcıAdı ile parolayı ve veritabanı Adını değiştirin.


9

benim durumumda, sunucumu yeniden başlattıktan sonra sorun ortadan kalktı.

"php artisan serve" komutundan çık / kapat ve

"php artisan serve" komutunu yeniden çalıştırın .


8

Gelecekte bir zaman. Önce yapılandırmanızı temizlemeye çalışın

php artisan config:clear. 

Tüm terminal / cmd pencerelerini kapatın ve terminal / CMD'yi yeniden başlatın ve bu hata mesajından kurtulmalıdır. İşe yarayıp yaramadığına bakın.


çok teşekkürler bu benim için çalıştı. bu hatanın neden olduğunu bilmiyorum. i just close all and reload and run php artisan config: açık
sabre tabatabaee yazdi

6

config db'den sonra yeniden başlatın:

 php artisan serve

Sunum ayarlanmadan önce etkinse db config.


5

ilaravel 5 kullanarak. * i şekil ben böyle bir .envşey bakmak projenin kökünde bir dosya çağrısı var :

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Bu bd yapılandırmasını yazmak üzereydi, bu yüzden bu yapılandırma değişkenlerini ne zaman silebilirsiniz, böylece yapılandırmayı / config altında yapılandırın veya yapılandırmanızı burada ayarlayın.

İkincisini yaptım ve benim için çalışıyor :)


5

Anladım! Kök olarak oturum açın ve homestead @ localhost'a her şeyin haklarını verin.

Terminalinizden:

$ homestead ssh

$ mysql -u root -p

Enter password: secret

mysql> grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';

Query OK, 0 rows affected (0.00 sec)
exit

Artık ev kullanıcıları normal kullanıcının tüm tablolarınıza erişebiliyor ve bu nedenle taşıma gibi şeyleri çalıştırabilmelidir.


5

Yeni yapılandırmayla .env dosyasını değiştirdikten sonra, sunucuyu durdurup tekrar çalıştırmanız gerekir (php artisan serve). Neden laravel, sunucuyu başlattığında ortamı alır. Yeniden başlatmazsanız, .env'yi kendinize değişikliklerin neden gerçekleşmediğini soracaksınız!


5

Tek yapmanız gereken .env dosyanızı değiştirmek .

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

DB_DATABASE önüne, veritabanının adını yazın ve DB_USERNAME önüne root kullanın .


4

Bunu yayınlamak istedim çünkü bu konu bugün yaklaşık 3 saat beni hayal kırıklığına uğrattı. Hepsi makul görünse de, diğer cevaplarda listelenen yöntemlerden hiçbirini denemedim. Aslında, yukarıda önerilen çözümlerin her birini denemek üzereydim, ama bir şekilde bu ilham kaynağını aldım. İşte beni işe geri döndürmek için işe yarayan şey - YMMV:

1) .env dosyanızı bulun. 2) .env dosyanızı başka bir şeye yeniden adlandırın. Laravel 5, çerçevede başka bir yerdeki ayarlar için bu dosyayı geçersiz kılma olarak kullanıyor olmalıdır. .Env.old olarak benimkini yeniden adlandırdım 3) Web sunucunuzu yeniden başlatmanız gerekebilir, ancak zorunda kalmadım.

İyi şanslar!


3

$ php artisan migrateKomutu Mac'inizden değil Homestead içinden çalıştırmanız gerekir.


Ekran görüntünüz makine adını olarak gösterir MBP-bheng-aveniors. Bu sizin VM'niz değil . Homestead'e ( $ homestead ssh) SSH eklemeniz ve ardından $ php artisan migratebu SSH oturumunun içinden çalıştırmanız gerekir .
Martin Bean

3

Kök klasördeki " .env " dosyanızı kontrol edin . doğru mu?

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

3

çözüm buldum

  1. Uygulama kök dizininize gidin ve düzenleyicinizde .env dosyasını açın (ubuntu'da gizli olabilir, bu nedenle gizli dosyaları göstermek için ctrl + h tuşlarına basın) ve veritabanı yapılandırma ayarını değiştirin. sonra .env dosyanızı kaydedin

  2. ardından apache sunucunuzu / web sunucunuzu yeniden başlatın. ve sayfanızı yenileyin ve yaptınız

  3. Sorun devam ederse, eski yapılandırma önbellek dosyasını temizlemek için aşağıdaki komutu çalıştırmayı deneyin.

Bu benim için çalıştı gl ...


3

bunları kök klasörünüzün .env dosyasında değiştirin.

DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD='your_db_password'

Benim için çalıştı.


3

benim durumumda (laravel 5+) tek tırnak işaretleri ve temiz yapılandırma önbellek şifremi sarmak zorunda kaldı:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=user_name
DB_PASSWORD='password'

ve sonra çalıştırın:

php artisan config:clear

1

MYSQL'de oturum açın - mysql veritabanını kullanın.

Kullanıcı'dan * seçin;

HOST sütununuzun doğru olduğundan emin olun. IP adresi veya DNS adı olsun, bağlandığınız ana bilgisayar (uygulama sunucunuz) olmalıdır. Ayrıca '%' çalışır (joker karakter anlamına gelir), ancak güvenli olmaz.


1

Değişkenlerden herhangi birini düzenlediyseniz, .env dosyanızı kontrol edin, lütfen laravel sunucusunu yeniden başlatın ve sorununuz çözülecek


1

A. .env dosyasını veritabanı ayarlarıyla güncelledikten sonra, "php artisan config: clear" komutunu kullanarak larva ayarını temizleyin.

B. Lütfen ayarlarınızın geçerli olması için apache sunucunuzu yeniden başlattığınızdan / "php artisan serve" komutunu yeniden çalıştırdığınızdan emin olun.


0

SQLite kullanarak aynı sorunu yaşadım. Benim sorunum, DB_DATABASE yanlış dosya konumuna işaret oldu.

Touch komutuyla sqlite dosyasını oluşturun ve php artisan tinker kullanarak dosya yolunu çıktılayın.

$ touch database/database.sqlite
$ php artisan tinker
Psy Shell v0.8.0 (PHP 5.6.27  cli) by Justin Hileman
>>> database_path(‘database.sqlite’)
=> "/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite"

Daha sonra DB_DATABASE değişkeninin tam yolunu çıktı.

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret

Doğru yol olmadan erişim reddedildi hatası alırsınız


0

Bunun gibi bir şey döndürürken bir hata PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'varsa, batabase yapılandırmanızı olarak değiştiriyorsunuz DB_DATABASE=laravelu. Şimdilik siz de:

  1. Değiştir DB_DATABASE=[yourdatabase] veya
  2. laraveluphpmyadmin adında bir veritabanı oluşturun

bu çözebilmeli


0

Benim durumumda hata Homestead / Vagrant yapılandırması hakkında hangi unuttum :) neden taşıma sadece komut satırından çalıştırmak için neden oldu.

Homestead Vagrant Box ortamını kullanmanız durumunda, geçişinizi Homestead makinenizden (ssh: kullanarak bağlandıktan sonra) çalıştırmanız gerekir, o vagrant@192.168.10.10:22zaman erişim hakları iyi olur ve geçişin çalışmasına izin verir.


0

Sorunuzdan, çiftlik evi çalıştırdığınız anlaşılıyor. Bu durumda, VM'nizdeki komutları çalıştırdığınızdan emin olun. Benim dahil birçok geliştirici genellikle hata yapar ve VM'nin dışında, komutların homestead tarafından kullanılan veritabanından farklı olan localhost üzerinden erişilebilen yerel veritabanımıza bağlanmaya çalışacağı esnaf komutlarını çalıştırır. Cd Homestead dizininize gidin ve çalıştırın

vagrant ssh

sonra projelerinizi ve cd projenize tutmak ve çalıştırmak nerede olduğunu kod içine cd php artisan migrate again Bu umarım bu diğer insanlara yardımcı olacaktır.

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.