mac下配置PHP7+Apache+MySQL8+PhpMyAdmin

mac os自带apache和php,需要安装mysql服务和一个界面管理工具(phpmyadmin或navicat 还有mysql官方出的各种工具)

这里有个很详细的教程了:

https://www.cnblogs.com/henusyj-1314/p/6485182.html

=====占坑回头总结一下命令=========

啊唷我的天,brew install phpmyadmin竟然要下载四五十个依赖,太大了,后悔了,早知道装navi算了

==> Installing dependencies for phpmyadmin: apr, apr-util, argon2, aspell, autoconf, brotli, c-ares, libidn, libmetalink, libssh2, jansson, jemalloc, libev, libevent, nghttp2, openldap, rtmpdump, curl-openssl, libtool, unixodbc, freetds, libpng, freetype, gettext, libffi, pcre, gdbm, readline, sqlite, xz, python, glib, gmp, icu4c, jpeg, libpq, libsodium, libzip, tidy-html5, libtiff, webp and php

 

 



phpmyadmin(以下简称pma)遇到的问题:

  • 登陆时出现mysqli_real_connect(): (HY000/2002): No such file or directory

pma 需要连接mysql,有两种方式,通过socket(localhost)或TCP/IP(127.0.0.1),默认是通过socket,报这个错是因为给pma配的socket与实际运行的mysql的socket不一致。

实际运行的mysql的socket:通过sql > status可以看到是

Connection:        Localhost via UNIX socket
           UNIX socket:        /tmp/mysql.sock

(备查:pma 的配置文件usr/local/etc/phpmyadmin.config.inc.php)

pma也归apache管,在apache的 info页中,php模块看到配置文件应在/etc/php.ini,mysqli模块可看到mysqli.default_socket,确实不是tmp目录的。

去找/etc目录下的php.ini.default配置文件,拷贝出来修改以下两项:

pdo_mysql.default_socket=/tmp/mysql.sock

mysqli.default_socket =/tmp/mysql.sock

重命名为php.ini再放回去,apachectl restart 之后刷新

Configuration File (php.ini) Path /etc
Loaded Configuration File /etc/php.ini
mysqli.default_socket /tmp/mysql.sock

 


  • mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] 
  • mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

这个是mysql8新增的caching_sha2_password加密认证策略的缘故,除了命令行可以照常登录外,其他的客户端却还不能支持这种加密方法,要想继续使用这些第三方客户端连接数据库,就只能对mysql的配置进行降级,使用mysql旧版本的策略,具体说就是在配置文件中添加这行

[mysqld]
default_authentication_plugin = mysql_native_password

官方说会按照这个顺序读取配置:/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

然而翻遍整个电脑是根本没有个这文件的,却意外地发现了一个:/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf

> brew list mysql

为什么说意外,因为它在finder中是看不到的,只有命令行下才发现,加上那行配置后拷贝一份到上面说的位置:

> sudo cp /usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf /etc/my.cnf

重启mysql之后却发现没有任何变化。。。后发现原来user表中竟有一个字段叫做plugin,而且旧版的 password字段也被authentication_string所代替:

mysql> select host,user,plugin, authentication_string from mysql.user;

mac下配置PHP7+Apache+MySQL8+PhpMyAdmin_第1张图片

我很惊讶这个加密竟然不是全局的,而是针对具体user的,所以试着把root的改一下

mysql> ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '123456';

居然这样就ok了,pma那边可以成功登录了

测试一下果然是按照mysql_native_password存储了

mac下配置PHP7+Apache+MySQL8+PhpMyAdmin_第2张图片

 

 

你可能感兴趣的:(PHP)