Homebrew升级后,MySQL服务器已经消失

我刚刚对PHP 7.2.8和MySQL 8.0.12进行了 brew upgrade </ code>。 在此之后,尝试从PHP脚本(来自Bash)连接到MySQL超时10秒后(默认的MySQL超时值)。</ p>

  new PDO(“mysql:host”  = localhost; dbname = foo; charset = utf8“,”user“,”pass“); 

[2006] MySQL服务器已经消失
</ code> </ pre>

我环境中的一切似乎都很正常。 我的设置中没有更改任何其他内容。 从Bash连接到MySQL工作正常。 如何从PHP重新获得MySQL访问?</ p>

  $ php -i |  grep php.ini 
配置文件(php.ini)Path =&gt; /usr/local/etc/php/7.2
Loaded配置文件=&gt; /usr/local/etc/php/7.2/php.ini

$ tail /usr/local/etc/php/7.2/php.ini
mys​​ql.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock

$ ls / tmp / mysql *
srwxrwxrwx 0 /tmp/mysql.sock
-rw------- 5 /tmp/mysql.sock.lock
srwxrwxrwx 0 / tmp / mysqlx.sock
-rw ------- 6 /tmp/mysqlx.sock.lock

$ mysql
欢迎使用MySQL监视器。
mysql&gt; 显示变量,如'%socket%';

  • --------------------------------------- - + ------------------ + \ N | mysqlx_socket | /tmp/mysqlx.sock | | 插座| /tmp/mysql.sock |
  • ----------------------------------------- + ------------------ + </ code> </ pre> </ div>

展开原文

原文

I just did a brew upgrade to PHP 7.2.8 and MySQL 8.0.12. After this, trying to connect to MySQL from a PHP script (from Bash) times out after 10 seconds (the default MySQL timeout value).

new PDO("mysql:host=localhost;dbname=foo;charset=utf8", "user", "pass");

[2006] MySQL server has gone away

Everything in my environment seems to be normal. I haven't changed anything else in my setup. Connecting to MySQL from Bash works fine. How do I regain MySQL access from PHP?

$ php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/etc/php/7.2
Loaded Configuration File => /usr/local/etc/php/7.2/php.ini

$ tail /usr/local/etc/php/7.2/php.ini
mysql.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock

$ ls /tmp/mysql*
srwxrwxrwx  0 /tmp/mysql.sock
-rw-------  5 /tmp/mysql.sock.lock
srwxrwxrwx  0 /tmp/mysqlx.sock
-rw-------  6 /tmp/mysqlx.sock.lock

$ mysql
Welcome to the MySQL monitor.
mysql> show variables like '%socket%';
+-----------------------------------------+------------------+
| mysqlx_socket                           | /tmp/mysqlx.sock |
| socket                                  | /tmp/mysql.sock  |
+-----------------------------------------+------------------+

2个回答



解决方案:将其添加到MySQL配置文件( my.cnf </ code>):</ p> \ n

  [mysqld] 
default_authentication_plugin = mysql_native_password
</ code> </ pre>

PHP手册:</ p>


MySQL 8默认为 caching_sha2_password </ code> ,旧的PHP版本无法识别的插件。
而是通过在 my.cnf </ code>中设置 default_authentication_plugin = mysql_native_password </ code>来更改它。 未来的PHP
发行版将支持
caching_sha2_password </ code>插件。</ p>
</ blockquote>

我希望这会为其他人节省一些头痛和时间 。</ p>
</ div>

展开原文

原文

The solution: Add this to your MySQL configuration file (my.cnf):

[mysqld]
default_authentication_plugin=mysql_native_password

PHP manual:

MySQL 8 defaults to caching_sha2_password, a plugin that is not recognized by the older PHP releases. Instead, change it by setting default_authentication_plugin=mysql_native_password in my.cnf. The caching_sha2_password plugin will be supported in a future PHP release.

I hope this will save others some headache and time.

doushan3511
doushan3511 感谢您的跟进。 我原以为连字符只适用于CLI选项。 我没有意识到它们也可以用在配置文件中!
接近 2 年之前 回复
douhu2370
douhu2370 你大部分都是对的。 dev.mysql.com/doc/refman/8.0/en/server-system-variables.html和stackoverflow.com/questions/7736395 / ...
接近 2 年之前 回复
drfu29983
drfu29983 它应该是default_authentication_plugin(下划线,而不是破折号)。
接近 2 年之前 回复
dongxie559554
dongxie559554 如果对你来说不明显,就像我一样 - 你应该把这个配置放到你的my.cnf,而不是php.ini。
接近 2 年之前 回复



这是一个不需要更改默认身份验证配置的解决方案。</ p>

  MySQL的&GT; 用'password'创建用mysql_native_password标识的用户'用户名'@'host'; 
</ code> </ pre>

MySQL 8.0参考: CREATE USER语法 GRANT USER语法 </ p>

更新PHP以进行SHA-256身份验证后, 你可以'改变用户'再次使用caching_sha2_password进行识别。</ p>
</ div>

展开原文

原文

Here is a solution that doesn't require changing the default authentication configuration.

mysql> create user 'username'@'host' identified with mysql_native_password by 'password';

MySQL 8.0 References: CREATE USER Syntax and GRANT USER Syntax

Once PHP is updated for SHA-256 authentication, you can 'alter user' to be identified with caching_sha2_password again.

dongyange1101
dongyange1101 我已经这样做了(当切换到以前版本的PHP和MySQL时),但是当切换到当前版本时,我不得不更改配置。 至少那就是我的机器上的情况。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问