mysql版本8.0.11和symfony 4错误“mysql服务器已经消失”

1aaf6o9v  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(334)

我使用的是symfony4,mysql版本是8.0.11,使用的是用户而不是根用户登录,当我尝试使用这个命令时 php bin/console make:migration 我得到这个错误:

In AbstractMySQLDriver.php line 126:                                                                                 
An exception occurred in driver: SQLSTATE[HY000] [2006] MySQL server has gone away                                                                                

In PDOConnection.php line 50:                                           
SQLSTATE[HY000] [2006] MySQL server has gone away  

In PDOConnection.php line 46:                                                
SQLSTATE[HY000] [2006] MySQL server has gone away  

In PDOConnection.php line 46: 
PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109

然后我尝试在网上搜索,发现mysql变量出了问题 wait_timeout 以及 max_allowed_packet 必须更改文件中的变量 /etc/mysql/my.cnf ,问题是当我去编辑该文件时,我只发现:


# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.

# 

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License, version 2.0,

# as published by the Free Software Foundation.

# 

# This program is also distributed with certain software (including

# but not limited to OpenSSL) that is licensed under separate terms,

# as designated in a particular file or component or in included license

# documentation.  The authors of MySQL hereby grant you an additional

# permission to link the program and your derivative works with the

# separately licensed software that they have included with MySQL.

# 

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License, version 2.0, for more details.

# 

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

# 

# The MySQL  Server configuration file.

# 

# For explanations see

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# * IMPORTANT: Additional settings that can override those from this file!

# The files must end with '.cnf', otherwise they'll be ignored.

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

因此,我试图看到一个名为“why is/etc/mysql/my.cnf empty?”的线程,一个用户说使用以下路径之一:

/etc/mysql/conf.d/
/etc/mysql/mysql.conf.d/
/etc/mysql/mysql.conf.d/mysqld.cnf

所以我试着。。。 /etc/mysql/conf.d/ :


## Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License, version 2.0,

# as published by the Free Software Foundation.

# 

# This program is also distributed with certain software (including

# but not limited to OpenSSL) that is licensed under separate terms,

# as designated in a particular file or component or in included license

# documentation.  The authors of MySQL hereby grant you an additional

# permission to link the program and your derivative works with the

# separately licensed software that they have included with MySQL.

# 

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License, version 2.0, for more details.

# 

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

# 

# The MySQL  Client configuration file.

# 

# For explanations see

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysql]

在文件中 /etc/mysql/mysql.conf.d/ :


# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.

# 

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License, version 2.0,

# as published by the Free Software Foundation.

# 

# This program is also distributed with certain software (including

# but not limited to OpenSSL) that is licensed under separate terms,

# as designated in a particular file or component or in included license

# documentation.  The authors of MySQL hereby grant you an additional

# permission to link the program and your derivative works with the

# separately licensed software that they have included with MySQL.

# 

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License, version 2.0, for more details.

# 

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

# 

# The MySQL  Server configuration file.

# 

# For explanations see

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log

在文件里呢 /etc/mysql/mysql.conf.d/mysqld.cnf :


# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.

# 

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License, version 2.0,

# as published by the Free Software Foundation.

# 

# This program is also distributed with certain software (including

# but not limited to OpenSSL) that is licensed under separate terms,

# as designated in a particular file or component or in included license

# documentation.  The authors of MySQL hereby grant you an additional

# permission to link the program and your derivative works with the

# separately licensed software that they have included with MySQL.

# 

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License, version 2.0, for more details.

# 

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

# 

# The MySQL  Server configuration file.

# 

# For explanations see

# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log

在这些文件中,我没有找到mysql变量 wait_timeout 以及 max_allowed_packet ,因此,如果有人能帮我解决这个问题,请提前感谢。:)
p、 s:(我已经运行了这个命令 php bin/console make:migration 在这个错误发生之前有好几次,还创建了数据库并运行良好,所以它似乎不是安装问题)。
更新:似乎成功地改变了这两个变量 wait_timeout 以及 max_allowed_packet 通过在三个文件中添加以下内容

max_allowed_packet=1024M 
wait_timeout=3000000

然后使用这个命令 sudo service mysql restart 给我这个:

mysql> SHOW global VARIABLES LIKE "wait_timeout";
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| wait_timeout  | 3000000 |
+---------------+---------+
1 row in set (0,00 sec)

mysql> SHOW VARIABLES like 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
1 row in set (0,00 sec)

但当我尝试使用这个命令时 php bin/console make:migration 它给了我同样的错误,上面提到过这个帖子,也试着改了 wait_timeout 用同样的方法将变量设置为300,得到了同样的结果:(
使用此命令 sudo vim /var/log/mysql/error.log 我明白了:

2018-07-29T18:55:18.382164Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 8  user: 'alexandre'.
2018-07-29T18:55:20.288756Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.11)  MySQL Community Server - GPL.
2018-07-29T18:55:20.642118Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.11) starting as process 31833
2018-07-29T18:55:21.704556Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-07-29T18:55:21.720385Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.11'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

更新:我已经设计了mysql和php,改成了MySQL5.7和PHP7.2.7,php的变化可能已经解决了这个问题,根据用户@jibe的链接,如果还有人不能解决这个问题,我就让另外两个链接链接1和链接2。
问题用户更新:一个名为@ganesh的用户也给出了这个解决方案:alter user username @ localhost 通过“password”标识为缓存_sha2_密码;

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

希望对你有帮助:d

cbeh67ev

cbeh67ev1#

在mysql配置文件(centos,etc/my.conf)中添加以下行:

default_authentication_plugin=mysql_native_password

这就成功了。希望有帮助。
我的环境:
centos 7号
PHP7.2
mysql 8版

相关问题