Mysql 宅基地问题

Mysql 宅基地问题,mysql,homestead,Mysql,Homestead,我正在使用homestead并尝试通过phpmyadmin登录我的mysql数据库。我已经使用同样的设置好几年了。 昨天我开始工作,我运行命令homestead up——但这次一切似乎都有点不同于平时。例如,vagrant检测到不安全的密钥,然后vagrant自动将其替换为新生成的密钥对-好吧,这还不错,我想这完全没问题 在此之后,它停止并启动了九次nginx和php5 fpm,然后出现了==>默认值:mysql: ==>默认值:[警告]在命令行界面上使用密码可能不安全。 ==>默认值:请使用-

我正在使用homestead并尝试通过phpmyadmin登录我的mysql数据库。我已经使用同样的设置好几年了。 昨天我开始工作,我运行命令
homestead up
——但这次一切似乎都有点不同于平时。例如,
vagrant检测到不安全的密钥
,然后vagrant自动将其替换为新生成的密钥对-好吧,这还不错,我想这完全没问题

在此之后,它停止并启动了九次
nginx
php5 fpm
,然后出现了
==>默认值:mysql:
==>默认值:[警告]在命令行界面上使用密码可能不安全。
==>默认值:请使用--connect expired password选项或在交互模式下调用mysql。
SSH命令以非零退出状态响应。流浪汉
假设这意味着命令失败。此命令的输出
应该在上面的日志中。请阅读输出以确定需要什么
出错。

好的,我登录了
homestadessh
,然后
mysql-u homestade-p password
并设置了新密码。没有抛出错误。太好了

然后我试着用
homestead
用户名和
新密码登录我的数据库
phpmyadmin.app
,但是。。由于某种原因,我的数据库消失了

嗯。。。在伟大的谷歌搜索会话之后,我注意到当我从mysql.user编写
mysql>select*时命令,有两个homestead用户。第一个在
0.0.0.0
ip下,第二个在
%
-我很确定这会以某种方式导致我的问题,因为使用
%
的宅地用户是在第一次出现此问题的同一天创建的

或者。。我完全错误的方向和问题的原因不同。不管是什么情况,我来这里是想向比我聪明一点的人寻求帮助

我是否应该删除第二个宅地用户,或者你有什么建议


非常感谢您抽出时间。

您是如何设置密码的?听起来在这个过程中,您可能创建了一个没有适当权限的新用户。这解释了为什么在作为该用户连接时无法看到数据库

然后,您删除了该用户,这将使您回到开始的位置,但您还将主机从0.0.0.0更改为“localhost”。我不熟悉在这个位置使用0.0.0.0语法,但它可能意味着所有TCP主机,就像在my.cnf中使用绑定地址一样。通常我使用“%”,但我不太愿意这样做,因为如果0.0.0.0正常工作,我就不会弄乱它。但无论如何,“localhost”不同于“%”或任何其他TCP连接;localhost专门指套接字连接,而其他的则指TCP连接。可能您的应用程序正在使用tcp协议,而您只是删除了该用户的权限(通过告诉MySQL只允许通过套接字协议进行连接)

我建议以下任何一种解决方案:

  • 将现有用户还原为0.0.0.0主机名
  • 将现有用户的主机名更改为%
  • 添加新用户,但对用户需要访问的数据库授予适当的权限
  • 告诉您的应用程序使用套接字协议而不是tcp网络访问MySQL(具体取决于您的系统配置)

    • 我有这个问题很多天了,它真的让我发疯了。不知道为什么,直到最近,我的家园和它访问mysql的凭证都很好。基本上,我只是创建一个新用户,并停止使用homestead作为用户

      如果您仍然可以使用ssh连接到它和sudosu,那么您可以试试这个

      1) 流浪汉

      2) sudo su

      3) mysql-u root-p(当你是超级用户时,mysql不会问你密码)

      4) 然后简单地设置一个新用户

      创建由“密码”标识的用户“newuser”@“localhost”

      然后

      授予**上的所有特权到'newuser'@'localhost'

      5) 然后,使用新用户登录到phpmyadmin。

      首先查看相关问题

      对于Laravel Homestead的此类问题,我建议扔掉流浪者箱并重新初始化。Homestead只是一个沙箱(只要你备份你的客户机数据,重建沙箱就没有坏处)

      首先,使用mysqldump或Sequel Pro之类的工具备份任何MySQL数据库或其他客户端计算机信息,因为在重新配置您的设备时,这些信息将丢失。

      然后:


      我删除了´%´homestead用户,并将´0.0.0´主机更改为´localhost´,并尝试重置密码,但无论我做什么,它都拒绝访问。这真是令人沮丧。
      # from host machine
      cd ~/Homestead
      vagrant destroy
      vagrant box prune
      vagrant up --provision
      
      # if still seeing MySQL errors during provisioning, do the steps in https://stackoverflow.com/a/46106953/539149 or:
      vagrant ssh
      
      # log into mysql (for Homestead your password is likely "secret")
      mysql -h localhost -u homestead -p
      
      SET PASSWORD = PASSWORD('secret');
      
      -- A) set password to never expire:
      ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
      
      -- or B) to change password as well:
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password', 'root'@'localhost' PASSWORD EXPIRE NEVER;
      
      -- quit mysql
      quit
      
      # exit back to host shell
      exit
      
      vagrant up --provision