我没有使用 Laravel 的 Homestead,而只是使用手动方法。
但是,即使我通过 Homebrew 程序安装了 mysql,我似乎也无法让 Laravel mysql 迁移工作......
我收到很多错误,其中:
[PDOException] SQLSTATE[HY000] [2002] Connection Refused
和
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
经过多次深入研究,我找到了答案。请参阅下面的解决方案!
最佳答案
①:检查mysql是否正确安装和设置。
brew info mysql
如果尚未安装,则谷歌搜索如何安装“通过 Homebrew 程序安装 mysql”。 如果安装了不要忘记设置你的mysql,按照 Homebrew 程序告诉你的操作:
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
To connect run:
mysql -uroot
To have launchd start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
mysql.server start
在您的终端中执行上述所有操作。如果出现错误,请首先检查您的 mysql 服务器是否正在运行:
mysql.server start
然后尝试 mysql_secure_installation
和/或 mysql -uroot
尝试进入。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
如果出现此错误,请尝试:mysql -uroot -h 127.0.0.1
我不知道为什么,但它默认选择错误的主机。
如果这仍然不起作用,可能您已经设置了密码,在这种情况下,您需要将 -p
添加到命令中: mysql -uroot -h 127.0.0.1 -p
如果仍然失败,可能是权限问题。尝试:
sudo chown -R _mysql:mysql /usr/local/var/mysql
sudo mysql.server start
如果你正确进入:那太好了!让我们创建我们的第一个数据库。
②:创建您将使用的数据库。
因此,如果您没有使用 Laravel Homestead,则必须首先创建数据库。一旦你通过上面的命令进入你的mysql,它应该在终端中显示:mysql>
。
然后只需编写:CREATE DATABASE my_db;
,您可以在其中写入任何名称,而不是my_db
。就是这样!
③:设置你的 Laravel 设置。
在你的 Laravel 项目文件夹中会有一个 .env
文件。打开它并查看内部,然后搜索以下部分:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
尽管我没有通过 homestead 安装 Laravel,但它具有所有“homestead”设置...以下是您需要更改的内容:
- 检查
DB_HOST
是否设置为127.0.0.1
- 将
DB_DATABASE
设置为您创建的数据库。在本例中my_db
- 设置首选
DB_USERNAME
或尝试root
。 - 将
DB_PASSWORD
设置为您在开始通过 Homebrew 程序设置mysql时选择的MySQL密码。
④完成
你已经完成了。尝试再次打开终端,转到 Laravel 项目文件夹并 php artisan migrate
。
关于mysql - 在本地手动设置 MySQL 以运行 Laravel artisan migrate (无 homestead) ERROR 2002 (HY000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071318/