Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Homestead上重置MySQL密码_Mysql_Laravel_Homestead - Fatal编程技术网

在Homestead上重置MySQL密码

在Homestead上重置MySQL密码,mysql,laravel,homestead,Mysql,Laravel,Homestead,我正在通过Vagrant为当地的Laravel安装运行Homestead。我通过ssh(vagrant ssh)登录Homestead,并使用主机localhost、用户Homestead、密码secret连接到MySQL。我能够成功连接并运行show数据库;告诉我里面有一个信息模式数据库。我认为一切都很好,我可以为我的Laravel项目创建一个新的数据库并开始工作 不幸的是,运行CREATE DATABASE mynewdb;返回: 错误1044(42000):拒绝用户'homestead'@

我正在通过Vagrant为当地的Laravel安装运行Homestead。我通过ssh(vagrant ssh)登录Homestead,并使用主机localhost、用户Homestead、密码secret连接到MySQL。我能够成功连接并运行show数据库;告诉我里面有一个信息模式数据库。我认为一切都很好,我可以为我的Laravel项目创建一个新的数据库并开始工作

不幸的是,运行CREATE DATABASE mynewdb;返回:

错误1044(42000):拒绝用户'homestead'@'localhost'访问数据库'mynewdb'

我尝试通过以下方式为homestead用户提供更多权限:

GRANT ALL PRIVILEGES ON mynewdb.* TO 'homestead'@'localhost' WITH GRANT OPTION;
但返回一条类似的拒绝访问消息:

Access denied for user 'homestead'@'localhost' (using password: YES)
我尝试了该命令的其他一些变体,例如使用“%”而不是“localhost”,但我的homestead用户似乎没有完全管理该数据库所需的权限

我想我应该能够使用--skip grant tables标志简单地重新启动mysql服务,然后以homestead或root身份登录并拥有完全权限。这也未能奏效:

vagrant@homestead:~$ sudo /etc/init.d/mysql stop
[....] Stopping mysql (via systemctl): mysql.servic[.ok 

vagrant@homestead:~$ sudo /etc/init.d/mysql start --skip-grant-tables
[....] Starting mysql (via systemctl): mysql.servic[.ok 

vagrant@homestead:~$ mysql -h localhost
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO)
vagrant@homestead:~$ mysql -h localhost -u homestead
ERROR 1045 (28000): Access denied for user 'homestead'@'localhost' (using password: NO)
vagrant@homestead:~$ mysql -h localhost -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
vagrant@homestead:~$ mysql
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO)
在这些尝试之后,我使用homestead和secret登录,只是为了检查是否有任何变化:

vagrant@homestead:~$ mysql -h localhost -u homestead -p
mysql> create database mynewdb;
错误1044(42000):拒绝用户'homestead'@'localhost'访问数据库'mynewdb'

最后,我注意到在我的homestad.yml文件中有一个条目如下所示:

databases:
- homestead
我将此条目修改为:

databases:
- homestead
- mynewdb
然后重新启动homestead虚拟机:

vagrant halt
vagrant up
然后再次尝试使用homestead MySQL用户创建新的数据库。所有这些都没有起到任何作用,对于尝试做任何事情的宅地用户来说,访问仍然被完全拒绝


获取访问权限的建议?

要以root用户身份登录MySQL,您可以使用:

mysql -u root -p
然后输入您的MySQL密码

要作为另一个用户登录,您必须首先创建该用户并授予他权限

使用创建用户-将newuser更改为所需用户名,将password更改为所选密码

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
遗憾的是,此时newuser没有权限对数据库进行任何操作。 因此,第一阶段是授予用户做“事情”的特权。 要授予所有数据库和表的所有权限(选择、创建、删除、更新、删除等),请运行:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
要授予特定数据库和表的特定权限,只需运行:

GRANT [type of privilege] ON [database name].[table name] TO '[username]'@'localhost';
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
如果您需要拒绝或撤销某个特权,只需运行:

GRANT [type of privilege] ON [database name].[table name] TO '[username]'@'localhost';
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';

我没有耐心尝试解决这个问题,因为它显然一点也不正确。在备份配置后,我最终销毁了Homestead VM及其所有文件,并重新安装了机器。启动它,以及homestead用户如何拥有应有的完全访问权限。不确定上次它到底发生了什么,但这里的教训是:初始化新VM很便宜,使用错误的权限进行斗争很昂贵


如果有人解释我是如何解决这个问题的,我会接受他们的回答。否则,重新安装Homestead似乎是最快的解决方案。

谢谢,我对所有这些都很熟悉,但我的问题特别涉及Homestead,我不知道根用户密码。我在这个主题上看到的一切都只是说使用homestead用户,然而,由于我的用户似乎没有任何有用的特权,我有点被卡住了。我找不到根用户的宅地密码吗?如果没有,我假设有一种方法可以在不需要特权的情况下重新启动MySQL,然后创建一个新用户并为其分配完全权限。我只是不知道该怎么做。谢谢对不起,我有点困惑。是否创建了
mynewdb
数据库?如果没有,homestead用户是否有创建新数据库的权限?mynewdb尚未创建。homestead用户似乎没有创建新数据库的任何权限。我在网上读到的所有内容都说homestead用户应该等同于root用户,并且拥有完全权限。我认为在过去的某个时候,权限可能会被弄乱/覆盖。我需要做的就是重置权限而不访问根帐户。很明显,我有homestead的服务器访问权限,所以我可以重新启动MySQL,关闭它,等等。我如何在不完全重新安装MySQL的情况下获得访问权限?我在我的问题中添加了更多关于我如何尝试重新启动MySQL服务的内容--跳过授权表,但无法。我对vagrant一无所知,对设置MySQL也知之甚少。我只是想问一个澄清的问题。你得到我的+1,祝你好运