宅基地和MySQL问题

时间:2017-01-31 09:22:27

标签: mysql homestead

我正在使用宅基地并尝试通过phpmyadmin登录我的mysql数据库。我已经使用了几年相同的设置。 昨天我开始工作,我运行命令homestead up - 但这次一切似乎都比平常有点不同。例如,vagrant insecure key detected然后vagrant会自动用新生成的密钥对替换它 - 好吧,那不错,我猜这完全没问题。

之后停止并开始nginxphp5-fpm九次,然后==> default: mysql: ==> default: [Warning] Using a password on the command line interface can be insecure. ==> default: Please use --connect-expired-password option or invoke mysql in interactive mode. The SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed. The output for this command should be in the log above. Please read the output to determine what went wrong.

好的,我已登录homestead ssh然后mysql -u homestead -p password并设置新密码。没有错误抛出。大。

然后我尝试使用phpmyadmin.app用户名和homestead登录我的数据库new password,但由于某种原因我的数据库已经消失。

嗯......经过精彩的Google搜索会话后,我注意到在编写mysql> select * from mysql.user;命令时,有两个宅基地用户。第一个在0.0.0.0 ip下,第二个在%下 - 我很确定这会导致我的问题,因为使用%的宅基地用户是同一天当这个问题第一次发生时。

或者......我的方向完全错误,问题导致了不同的原因。无论如何,我在这里向一些比我更聪明的人寻求帮助。

我应该删除第二个宅基地用户,或者你会建议什么?

我非常感谢你的时间。

3 个答案:

答案 0 :(得分:1)

首先查看my mysql answer了解相关问题。

对于Laravel Homestead的这些问题,我建议扔掉并重新初始化Vagrant盒子。 Homestead只是一个沙箱(只要您备份客户端机器数据,重建沙箱就没有坏处。)

首先,使用mysqldump或Sequel Pro等工具备份所有MySQL数据库或其他客户端计算机信息,因为重新配置此框时它将丢失。

然后:

# 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

答案 1 :(得分:0)

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

然后,你去了那个用户,除了你还把主机从0.0.0.0更改为' localhost'之外,它会让你回到原来的位置。我不熟悉在这个位置使用0.0.0.0语法,但可能它意味着所有TCP主机就像在my.cnf中用于bind-address一样。通常我会使用'%'但我不愿意建议,因为如果0.0.0.0正在运行,我就不会惹它。但无论如何,' localhost'不同于'%'或任何其他TCP连接; localhost特指套接字连接,而其他引用TCP连接。可能你的应用程序正在使用tcp协议,你刚刚删除了该用户的权限(告诉MySQL只允许通过套接字协议进行连接)。

我建议任何这些解决方案:

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

答案 2 :(得分:-1)

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

如果你仍然可以ssh和它sudo su,你可以尝试这个。

1)vagrant ssh

2)sudo su

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

4)然后只需设置一个新用户。

  

创建用户' newuser' @' localhost'通过'密码';

识别

然后

  

授予所有特权*。 * TO' newuser' @' localhost';

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