laravel5.6mysql服务器已经消失了

kuarbcqp  于 2021-06-21  发布在  Mysql
关注(0)|答案(5)|浏览(334)

背景
我有一个基本的laravel应用程序,工作得很好。我跑了一辆 php artisan make:auth 在它上面,迁移并注册了一个新用户,可以登录并查看home.blade.php。我正在用代客服务这个网站,并把它停在了目录里。
我不是用宅基地,只是用我的本地机器。
是什么导致了这个问题
我跑了一辆 brew update / brew upgrade ,现在我根本无法登录到应用程序。
预期结果
登录到应用程序并查看home.blade.php
抛出的错误 PDOException (2006) SQLSTATE[HY000] [2006] MySQL server has gone away 在浏览器中显示。 PDOException(code: 0): PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109 出现在拉威尔日志里。
我怀疑这与mysql的用户权限有关,尽管我在这里还停留在原地,所以我想我应该把它扔给计算机界的欧比旺。
什么有效
我仍然可以在浏览器中查看welcome.blade.php,ping服务器会返回一个响应,这样就可以了。
我可以通过终端以root身份登录mysql,没问题。 mysql -u root -p ```
mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| jason | % |
| jason | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

我的数据库存在

mysql> show tables;
+-----------------------+
| Tables_in_digitalchef |
+-----------------------+
| migrations |
| model_has_permissions |
| model_has_roles |
| orders |
| password_resets |
| permissions |
| role_has_permissions |
| roles |
| users |
+-----------------------+
9 rows in set (0.00 sec)

mysql>

我的设置
php版本

jason@Jasons-MacBook-Air:~/Desktop/websites$ php -v
PHP 7.2.8 (cli) (built: Jul 19 2018 12:15:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.8, Copyright (c) 1999-2018, by Zend Technologies

nginx版本

jason@Jasons-MacBook-Air:~/Desktop/websites$ nginx -v
nginx version: nginx/1.15.3

mysql版本

jason@Jasons-MacBook-Air:~$ mysql --version
mysql Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)

代客泊车版

Laravel Valet 2.0.9

$路径

jason@Jasons-MacBook-Air:~$ echo $PATH
/usr/local/opt/mysql@8.0/bin:/usr/local/sbin:/Users/jason/.composer/vendor/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin/python3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

编辑-更新了此内容,仍然没有找到my/etc/my.cnf的内容:

[mysqld]
max_allowed_packet = 500M
wait_timeout = 58800
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem

我的环境

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:/rKbcwAqCwbNt9XNBZq1jzvRzi7K4Jdch3k5/OtUgis=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=digitalchef
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

我的数据库.php
gcuhipw9

gcuhipw91#

安装mysql和卸载mysql/mariadb并不能解决这个问题。发生这种情况有几个原因。
这通常表示mysql服务器连接问题或超时。
您可以在中调整设置 my.cnf 通过调整 wait_timeout 以及 max_allowed_packet .
试着把它调高一点,不断调整设置直到你做对为止。确保在进行这些更改后重新启动mysql。

wait_timeout = 28800

max_allowed_packet = 8M

这里有一个很好的解释你需要改变什么
https://www.digitalocean.com/community/questions/mysql-server-has-gone-away

0qx6xfy6

0qx6xfy62#

你可能已经重新启动了mysql,但如果没有,就试试吧
如果不起作用,请尝试卸载:

brew uninstall mysql

安装mariadb,其工作原理与mysql类似:

brew install mariadb

那你还是可以的 mysql -uroot 管理数据库

dkqlctbz

dkqlctbz3#

解决了!呜呼!再次感谢大家的建议,我真的很感谢大家的帮助。
我如何决定:
深入研究,我发现我安装了两个版本的mysql-5.7和8.0。
我卸载了mysql@5.7 通过自制 brew uninstall mysql@5.7 链接了正确的版本 brew link mysql@8.0 我更新了$path sudo nano ~/.bash_profile 并在5.7中添加了以下行: export PATH="/usr/local/opt/mysql@8.0/bin:$PATH" 我在这里按照@poohbear的答案修改mysql用户
然后,我从mysql提示符截断了laravel数据库上的user表 mysql -u root -p mysql> USE digitalchef; mysql> TRUNCATE TABLE users; 我不知道事后是否有什么进展,但我还是决定 php artisan config:cache 之后,只是为了更好的衡量。
希望这能帮助那些正在挣扎的人!再次感谢大家的支持,@poohbear的回答值得称赞。

kq4fsx7k

kq4fsx7k4#

如果msyql客户端正常,只有php7脚本有问题,可以检查php.ini(mysqlnd.net\u read\u timeout)

zujrkrfu

zujrkrfu5#

这对我有用。我使用以下命令用新的身份验证插件更新我的密码。现在可以使用mysql 8了。玩得高兴。

ALTER USER `username`@`localhost` IDENTIFIED WITH caching_sha2_password BY 'password';

如果上述方法无效,请改用此方法。

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

相关问题