Saya menggunakan Yosemite Mac OS menggunakan Laravel 5.0.
Sementara di lingkungan lokal saya , saya menjalankan php artisan migrate
saya terus mendapatkan:
Akses ditolak untuk 'homestead' pengguna '@' localhost '(menggunakan kata sandi: YES)
Konfigurasi
Ini .env saya
APP_ENV=local
APP_DEBUG=true
APP_KEY=*****
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
app \ config \ database.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,
]
Bagaimana saya menghindari kesalahan semacam ini?
Saya sudah mencoba:
1
di app / database.php
Ganti localhost
dengan127.0.0.1
'host'=> env('DB_HOST', 'localhost')
->'host' => env('DB_HOST', '127.0.0.1')
Juga, dalam .env
DB_HOST=localhost
-> DB_HOST=127.0.0.1
2
Coba tentukan lingkungan
php artisan migrate --env=local
3
Periksa untuk melihat apakah MySQL berjalan dengan menjalankan
mysqladmin -u homestead -p status Enter password: secret
saya mendapatkan
Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012
Yang berarti sedang berjalan.
4
Periksa MySQL UNIX Socket ( Langkah ini cocok untuk saya )
Jawaban:
Alasan akses ditolak untuk kesalahan pengguna 'homestead' @ 'localhost' laravel 5 adalah masalah caching dari file .env.php karena Laravel 5 menggunakan konfigurasi berbasis lingkungan dalam file .env Anda.
1 . Buka direktori root aplikasi Anda dan buka file .env (Di ubuntu mungkin disembunyikan jadi tekan ctrl+ huntuk menampilkan file tersembunyi & jika Anda berada di terminal lalu ketik:
ls -a
untuk menampilkan file tersembunyi) di editor Anda dan ubah pengaturan konfigurasi basis data. lalu simpan file .env Anda2 . kemudian restart server apache / server web Anda. dan menyegarkan halaman Anda dan Anda telah selesai
3 . Jika masih masalah coba jalankan perintah di bawah ini untuk menghapus file cache konfigurasi lama.
Sekarang Anda selesai dengan kesalahan
sumber
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
._..env
danconfig:clear
cache:clear
semua perintah, restartapache
tetapi masih mendapatkan masalah yang sama.TLDR: Anda harus menghentikan server Ctrl+ cdan mulai lagi menggunakan
php artisan serve
Detail:
Jika Anda menggunakan Laravel, dan sudah memulai server dev lokal sudah
php artisan serve
Dan setelah server di atas sudah berjalan, Anda mengubah hal-hal terkait server database Anda dalam file .env. Seperti berpindah dari MySQL ke SQLite atau apalah. Anda perlu memastikan bahwa Anda menghentikan proses di atas yaitu
Ctrcl C
atau apa pun yang menghentikan proses. Dan kemudian restart Artisan Serve lagi yaitu yphp artisan serve
dan segarkan browser Anda dan masalah Anda yang terkait dengan basis data akan diperbaiki. Inilah yang bekerja untuk saya untuk Laravel 5.3sumber
Dua cara untuk mengatasinya
Cara pertama (Tidak disarankan)
Buka file konfigurasi database Anda (laravel_root / config / database.php) & cari blok kode di bawah ini.
Ubah blok kode seperti di bawah ini
Cara kedua (Direkomendasikan oleh Laravel)
Periksa root Laravel Anda. Ada panggilan file .env jika tidak ada, cari .env.example, salin / ubah nama menjadi .env setelah itu file tersebut terlihat pecah!
Ubah blok di bawah ini sebagai berikut
Sekarang akan berfungsi dengan baik.
sumber
root/config/database.php
sepertinya berlebihan.jika Anda menggunakan
php artisan migrate
BUKAN dari kotak gelandangan tetapi dari mesin host maka Anda harus mendefinisikan di dalam.env
dalam ip kotak192.168.10.10
dan jelas mengatur izin untuk pengguna homestead dari ip Anda seperti
dalam
.env
filesumber
grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';
berhasil untuk saya.Jika Anda menggunakan server web default PHP (mis.
php artisan serve
) Anda harus memulai ulang server Anda setelah mengubah nilai file .env Anda.sumber
periksa utas ini di laracasts atau posting blog ini untuk detail lebih lanjut
jika Anda mendapatkan
coba ubah "host" di file /app/config/database.php dari "localhost" menjadi "127.0.0.1". Anda dapat menemukan detail lebih lanjut dan perbaikan lainnya di sini di utas ini .
Periksa juga apakah Anda telah menentukan yang benar
unix_socket
. periksa utas ini .sumber
Periksa Socket UNIX MySQL
Temukan lokasi unix_socket menggunakan MySQL
mysql -u homestead -p
Lalu saya pergi ke config / database.php
Saya memperbarui baris ini:
'unix_socket' => '/tmp/mysql.sock',
untuk:
'unix_socket' => '/var/run/mysqld/mysqld.sock',
Itu dia. Ini berfungsi untuk saya sebagai percobaan ke-4 saya. Saya harap langkah-langkah ini membantu seseorang. : D
sumber
Saya memiliki masalah yang sama dan pada akhirnya ternyata saya hanya perlu me-restart server dan mulai lagi
Ctrl+ clalu
sumber
Di Windows PC Ikuti di bawah ini.
Akses folder Root aplikasi Anda.
Edit file .env
Edit Highlighted dan ubah UserName dan kata sandi serta kata sandi Database sesuai.
sumber
dalam kasus saya, setelah memulai kembali - server saya masalahnya hilang.
keluar / tutup perintah "php artisan serve" dan
jalankan kembali perintah "php artisan serve" perintah .
sumber
Suatu saat di masa depan. Coba hapus konfigurasi Anda terlebih dahulu
Tutup semua terminal / cmd windows dan kemudian restart terminal / CMD dan ini akan menghilangkan pesan kesalahan. Lihat apakah itu berfungsi.
sumber
setelah config db restart:
Jika servis aktif sebelum mengatur db config.
sumber
saya menggunakan laravel 5. * Saya pikir saya memiliki panggilan file
.env
di root proyek yang terlihat seperti ini:Dan itu sudah selesai menulis konfigurasi bd sehingga Anda dapat menghapus konfigurasi var sehingga laravel mengambil konfigurasi di bawah / config atau mengatur konfigurasi Anda di sini.
Saya melakukan yang kedua dan itu bekerja untuk saya :)
sumber
Mengerti! Masuk sebagai root dan berikan homestead @ localhost hak untuk semuanya.
Dari terminal Anda:
Sekarang pengguna reguler homestead memiliki akses ke semua tabel Anda, dan karenanya, harus dapat menjalankan hal-hal seperti migrasi.
sumber
Setelah mengubah .env dengan konfigurasi baru, Anda harus menghentikan server dan menjalankannya lagi (php artisan serve). Karena laravel mendapatkan lingkungan ketika diinisialisasi server. Jika Anda tidak memulai ulang, Anda akan mengubah .env bertanya pada diri sendiri mengapa perubahan tidak terjadi !!
sumber
Yang harus Anda lakukan adalah mengubah file .env Anda .
Di depan DB_DATABASE, tulis nama database dan di depan DB_USERNAME, gunakan root .
sumber
Saya hanya ingin memposting ini karena masalah ini membuat saya frustrasi selama sekitar 3 jam hari ini. Saya belum mencoba salah satu metode yang tercantum dalam jawaban lain, meskipun semuanya tampak masuk akal. Sebenarnya, saya baru saja akan mencoba melalui masing-masing solusi yang diusulkan di atas, tetapi entah bagaimana saya mendapat inspirasi ini. Inilah yang berhasil bagi saya untuk membuat saya kembali bekerja - YMMV:
1) Temukan file .env Anda. 2) Ubah nama file .env Anda menjadi sesuatu yang lain. Laravel 5 harus menggunakan file ini sebagai pengganti untuk pengaturan di tempat lain dalam framework. Saya mengganti nama saya menjadi .env.old 3) Anda mungkin perlu me-restart server web Anda, tetapi saya tidak harus melakukannya.
Semoga berhasil!
sumber
Anda harus menjalankan
$ php artisan migrate
perintah dari dalam Homestead, bukan Mac Anda.sumber
MBP-bheng-aveniors
. Itu bukan VM Anda. Anda perlu SSH ke Homestead ($ homestead ssh
) dan kemudian lari$ php artisan migrate
dari dalam sesi SSH itu.Periksa file " .env " Anda di folder root. Apakah itu benar?
sumber
saya sudah menemukan solusinya
Buka direktori root aplikasi Anda dan buka file .env (Di ubuntu mungkin disembunyikan jadi tekan ctrl + h untuk menampilkan file tersembunyi) di editor Anda dan ubah pengaturan konfigurasi basis data. lalu simpan file .env Anda
kemudian restart server apache / server web Anda. dan menyegarkan halaman Anda dan Anda telah selesai
Ini bekerja untuk saya ...
sumber
ubah saja hal-hal ini di file .env dari folder root Anda.
Ini berhasil untuk saya.
sumber
dalam kasus saya (laravel 5+) saya harus membungkus kata sandi saya dengan tanda kutip tunggal dan menghapus cache konfigurasi:
lalu jalankan:
sumber
Masuk ke MYSQL - gunakan database mysql.
Pilih * dari Pengguna;
Pastikan kolom HOST Anda benar. Seharusnya host yang Anda hubungkan (server aplikasi Anda) baik itu alamat IP, atau nama DNS. Juga '%' akan berfungsi (artinya wildcard) tetapi tidak akan aman.
sumber
Periksa file .env Anda, jika Anda telah mengedit salah satu variabel, silakan restart server laravel, dan masalah Anda akan terpecahkan
sumber
A. Setelah memperbarui file .env dengan pengaturan basis data, hapus pengaturan larval dengan "menjalankan php artisan config: clear"
B. Pastikan Anda me-restart server apache Anda / jalankan kembali perintah "php artisan serve" agar pengaturan Anda berlaku.
sumber
Saya memiliki masalah yang sama menggunakan SQLite. Masalah saya adalah bahwa DB_DATABASE menunjuk ke lokasi file yang salah.
Buat file sqlite dengan perintah sentuh dan output path file menggunakan php artisan tinker.
Kemudian output path yang tepat ke variabel DB_DATABASE.
Tanpa jalur yang benar Anda akan mendapatkan kesalahan akses ditolak
sumber
Jika Anda memiliki kesalahan mengembalikan sesuatu seperti
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
ini karena Anda mengubah konfigurasi batabase Anda sebagaiDB_DATABASE=laravelu
. Jadi untuk saat ini Anda juga:DB_DATABASE=
[yourdatabase]
laravelu
di phpmyadmin Andaini harus bisa menyelesaikannya
sumber
Dalam kasus saya kesalahan itu "disebabkan" oleh konfigurasi Homestead / Vagrant saya tentang yang saya lupa :) mencoba menjalankan migrasi hanya dari baris perintah.
Jika menggunakan lingkungan Homestead Vagrant Box Anda harus menjalankan migrasi Anda dari dalam mesin Homestead Anda (setelah terhubung dengan menggunakan ssh :),
[email protected]:22
maka hak akses akan OK dan akan memungkinkan migrasi untuk berjalan.sumber
Dari pertanyaan Anda, tampaknya Anda menjalankan homestead. Dalam hal ini, pastikan Anda menjalankan perintah di VM Anda. Banyak pengembang termasuk saya sering membuat kesalahan dan menjalankan perintah tukang di luar VM yang perintahnya akan mencoba untuk terhubung ke database lokal kami yang dapat diakses melalui localhost yang berbeda dari database yang digunakan oleh homestead. Cd ke direktori Homestead Anda dan jalankan
kemudian masukkan ke dalam kode jika di situlah Anda menyimpan proyek Anda dan masuk ke proyek Anda dan jalankan
php artisan migrate again
Saya harap ini akan membantu orang lain.sumber