Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

lavaral 5 ERROR {(SQLSTATE [HY000] [1045] Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu:YES)}

Theo mặc định, laravel giả định rằng bạn sẽ muốn có các cấu hình khác nhau cho các môi trường khác nhau. Ví dụ. trong môi trường thử nghiệm, bạn có thể muốn có tên người dùng và mật khẩu khác và trong môi trường sản xuất khác. Vì laravel có rất nhiều tệp cấu hình, nên việc quản lý tất cả những tệp đó nhanh chóng trở thành cơn ác mộng. Do đó laravel sử dụng các biến môi trường của PHP.

Xem tài liệu tại đây.

Điều cơ bản nói là nếu bạn muốn sử dụng các biến "môi trường", mà laravel sử dụng theo mặc định, bạn phải đặt tất cả các cấu hình của mình trong env() phương pháp như đã được đề cập.

Nếu bạn không muốn làm điều này, ví dụ:đối với các dự án đơn giản, chỉ cần xóa env khỏi mã của bạn, như thế này.

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'laravel',
        'username'  => 'root',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

Lưu ý rằng bạn có thể trộn và kết hợp. tức là bạn có thể có một số biến trong env và một số biến độc lập.

Vậy tại sao lại sử dụng env ở tất cả?

Giả sử ứng dụng của bạn có 100 người thử nghiệm, tất cả được đặt ở các vị trí khác nhau. Trong laravel, bạn phải viết mã khoảng 8-10 tệp cấu hình. Ngoài ra, bạn cần version-control các tệp đó. Vì vậy, bạn có hai vấn đề trong tầm tay:

  1. Bạn không muốn gửi cho tất cả 100 người dùng thông tin đăng nhập giống nhau. Ngoài ra, họ có thể sử dụng cơ sở dữ liệu khác nhau, máy chủ bộ nhớ cache, v.v. có nghĩa là họ sẽ có các cấu hình khác nhau. Vì vậy, mỗi người dùng phải duy trì 8-10 tệp cấu hình đó bằng tay.
  2. Bạn không muốn gửi các tệp cấu hình này tới quyền kiểm soát phiên bản. Bởi vì nếu bạn làm vậy, cả thế giới sẽ biết bí mật API của bạn và có thể sẽ tận dụng điều đó (giống như mật khẩu). Ngoài ra, nếu bạn xem các tệp conf laravel, bạn sẽ nhận thấy rằng có các thông tin khác như múi giờ, thuộc tính gỡ lỗi, v.v. cũng có trong tệp conf và bạn muốn kiểm soát phiên bản chúng. Vậy làm cách nào để bạn kiểm soát phiên bản các tệp cấu hình như vậy mà vẫn ẩn thông tin nhạy cảm của mình.

Câu trả lời là env biến. Laravel sử dụng dotenv có thể tìm thấy tài liệu tại đây . Về cơ bản, đây là các biến nằm trong một tệp có tên là .env trong một cặp khóa-giá trị. Ví dụ:

Nội dung mẫu của tệp .env

APP_DEBUG=false
APP_KEY=ABCDEFGH
...

Khi bạn xác định tệp .env của mình như vậy, bạn có thể nhận giá trị bằng cách sử dụng khóa như env('APP_DEBUG') .

Vì vậy, điều này giải quyết vấn đề được đề cập ở trên theo những cách sau:

  1. bạn giữ .env nộp cho chính bạn. Và bạn cũng khai báo một tệp khác có tên là .env.example là bản sao chính xác của tệp gốc ngoại trừ thực tế là nó chứa các giá trị mẫu, không phải các giá trị nhạy cảm của bạn. Sau đó, bạn chuyển tệp ví dụ mới này cho mọi người. Họ sẽ thay thế dữ liệu mẫu bằng thông tin nhạy cảm của riêng họ.
  2. Vì bạn đang kiểm soát phiên bản của tệp ví dụ, bạn có thể kiểm soát phiên bản của tất cả các tệp conf của mình vì chúng không chứa bí mật. Bí mật nằm trong các tệp .env. Tất cả các tệp conf đó chứa các giá trị như sau env('APP_KEY') và giá trị thực được thay thế tại thời điểm chạy bằng tệp .env của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySql - tạo liên kết bằng cách sử dụng danh sách các giá trị được phân tách bằng dấu phẩy

  2. lưu trữ các tệp mp3 trong mysql

  3. SYSDATE () so với NOW () trong MySQL:Sự khác biệt là gì?

  4. CHÈN SQL từ CHỌN

  5. Truy vấn con trong câu lệnh SELECT (MySQL)