我已经看到很多用户在stackoverflow上有类似的问题但是按照答案我无法使其工作。
当我跑步时:
php artisan migrate
我明白了:
[PDOException]
SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
这是我的app / config / app.php
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mio_sito',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
问题是我实际上没有密码,如果我用:
登录到vagrantvagrant ssh
我可以通过以下方式访问mysql:
mysql -u root
并且不需要密码 我该如何解决这个问题?
答案 0 :(得分:12)
根据Laravel docs:
要通过Navicat或Sequel Pro从主机连接到MySQL或Postgres数据库,您应该连接到127.0.0.1和端口33060(MySQL)或54320(Postgres)。 两个数据库的用户名和密码都是宅基地/秘密。
我是如何测试的(Windows 7 x64 - git bash):
$ vagrant up $ vagrant ssh
vagrant @ homestead:〜$ mysql -u root -p
vagrant @ homestead:〜$ secret
MySQL的>
答案 1 :(得分:4)
我想你在vagrant之外使用php artisan migrate
命令,这就是你犯这个错误的原因。
使用vagrant ssh
,移至项目文件夹(例如cd /var/www/laravel-project
)并使用php artisan migrate
。
它应该有效。
答案 2 :(得分:0)
由于您可以连接到MySQL,只需为root设置密码并更新数据库凭据:
mysql> update user set password=PASSWORD("mynewpass") where User='root';
mysql> flush privileges;
还要确保您的数据库凭据位于app/config/database.php
而不是app.php
。
答案 3 :(得分:0)
如果您位于项目的根目录中(我的名字为quickstart
),您应首先查看.env
文件:
nano .env
这应该显示如下内容:
APP_ENV=local
APP_DEBUG=true
APP_KEY=6IaYf3hzUt280AGMh2DtMQ2hOKyDa4
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
记下DB_DATABASE
,DB_USERNAME
和DB_PASSWORD
的值,因为您需要在第二个值。
根据this website,您需要执行以下操作(请注意,您可能需要先添加sudo
,或者如果您没有密码,则可以不包含-p
:
mysql -u mysql_user -p
然后会提示您输入密码(如果您没有密码,只需按Enter键)。输入后按Enter
。
你的下一步(现在你在mysql数据库中)是输入你在开头做的数据库名称,在我的例子中是homestead
:
create database homestead;
仔细检查您是否使用以下内容创建了数据库:
show databases;
现在创建一个用户(在我的例子中,用户实际上与数据库名称相同):
create user homestead;
现在,您希望使用您在顶部注明的密码为该数据库授予该用户的权限(在我的情况下为secret)
。另外,替换db_name
,db_user
和db_password
以及您在第一步中记下的值:
grant all on db_name.* to 'db_user'@'localhost' identified by 'db_password';
现在,当你运行php artisan migrate
时,你希望得到
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table