无法从命令提示符[Laravel]连接到mysql服务器

时间:2015-11-21 13:34:12

标签: mysql database laravel

我用我的服务器数据库数据(不是localhost)更新了.env文件,但我无法通过命令提示符连接到它。

DB_HOST=vps.sitename.com
DB_DATABASE=name_of_my_database
DB_USERNAME=myusername
DB_PASSWORD=mypassword

当我尝试从命令行访问该数据库时,如下所示:

mysql -umyusername -pmypassword

我收到以下回复:

Access denied for user 'mysuername'@'localhost' (using password: YES)

你知道解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:1)

$(function() { $(".ideatorInfo").hide(); $('.ideator').on('click',function(){ if (!this.$modal) { this.$modal = $(this).siblings(".ideatorInfo").dialog({ autoOpen: false }); } this.$modal.dialog('open'); }); }); 命令不使用mysql文件,只有Laravel文件。如果您没有将主机名传递给该命令,它将尝试连接到.env,如您从错误消息中看到的那样。您可以通过localhost-h选项将其传递给命令,如下所示:

--host

您还需要确保mysql -h vps.sitename.com -umyusername -pmypassword 上的MySQL服务器允许远程连接,并允许用户vps.sitename.com从您的IP地址进行连接。

答案 1 :(得分:0)

在服务器中添加.env文件中的凭据并不意味着如果在MySQL中没有添加/授予localhost,则不能访问数据库,因为mysql命令首先不使用.env文件。

你需要在MySQL中授予对'mysuername'@'localhost'的访问权限:

GRANT ALL ON *.* TO 'myusername'@'localhost';

然后不要忘记刷新如下的权限:

FLUSH PRIVILEGES

这假设您创建了'myusername'@'localhost';

否则,您需要执行以下操作:

CREATE USER 'myusername'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON *.* TO 'myusername'@'localhost';
FLUSH PRIVILEGES

然后不要忘记在my.cnf中绑定您的地址,以便远程访问,如果适用,例如:

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

这应该这样做。

希望一切顺利。