Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL服务器在自制升级后已消失_Php_Mysql_Homebrew - Fatal编程技术网

Php MySQL服务器在自制升级后已消失

Php MySQL服务器在自制升级后已消失,php,mysql,homebrew,Php,Mysql,Homebrew,我刚刚对PHP7.2.8和MySQL 8.0.12进行了brew升级。在此之后,尝试从PHP脚本(来自Bash)连接到MySQL将在10秒后超时(默认MySQL超时值) 我周围的一切似乎都很正常。我没有在设置中更改任何其他内容。从Bash连接到MySQL工作正常。如何从PHP重新获得MySQL访问权限 $ php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/etc/php/7.2 Loaded Conf

我刚刚对PHP7.2.8和MySQL 8.0.12进行了
brew升级。在此之后,尝试从PHP脚本(来自Bash)连接到MySQL将在10秒后超时(默认MySQL超时值)

我周围的一切似乎都很正常。我没有在设置中更改任何其他内容。从Bash连接到MySQL工作正常。如何从PHP重新获得MySQL访问权限

$ 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  |
+-----------------------------------------+------------------+

解决方案:将其添加到MySQL配置文件(
my.cnf
):

:

MySQL 8默认为
caching_sha2_password
,这是一个早期PHP版本无法识别的插件。 相反,通过在
my.cnf
中设置
default\u authentication\u plugin=mysql\u native\u password
来更改它。这个
缓存\u sha2\u密码
插件将在未来的PHP中得到支持 释放


我希望这将为其他人节省一些头痛和时间。

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

mysql> create user 'username'@'host' identified with mysql_native_password by 'password';
MySQL 8.0参考:和


一旦PHP更新为SHA-256身份验证,您可以再次“更改用户”以通过缓存sha2密码进行标识。

我已经这样做了(切换到以前版本的PHP和MySQL时),但切换到当前版本时,我必须更改配置。至少在我的机器上是这样的。如果这对你来说不明显,就像对我一样-你应该把配置放到my.cnf中,而不是php.ini中。它应该是
default\u authentication\u plugin
(下划线,而不是破折号)。@John-MichaelL'Allier:你基本上是对的。感谢@forthrin的跟进。我原以为连字符只用于CLI选项。我不知道它们也可以用在配置文件中!
[mysqld]
default_authentication_plugin=mysql_native_password
mysql> create user 'username'@'host' identified with mysql_native_password by 'password';