因为我现在工作的公司网站线上的开发环境是Nginx1.8.1,PHP5.3,MySQL版本我没注意,然后就想在自己电脑上配置基本差不多的开发环境,没想到Nginx安装和配置都比Apache简单,还有按照网上的一些教程Nginx和PHP基本都安装完了,不过我安装的PHP版本是5.6的,当时懒得找服务器对应的版本了,最重要的是流程要弄明白,前面的Nginx和PHP安装都比较简单,网上有很多教程和别人总结的经验,就是到最后MySQL的安装除了很多问题,
一开始我是想找MySQL5.6版本,一开始没经验,这又是英文网站,没想吧最新版的8.0下载了,结果就傻瓜式的安装,安装完了,整个过程都没找到指定安装目录的那个选项在哪,
后来安装了无数遍找来找去终于找到了下面是安装时的而第二个页面,我选择的最后一项自定义安装
接下来就是找指定安装的软件内容,里面有很多和可以安装的软件,但是我只需要MySQL server
到下面的窗口是我选点击edit的那个按钮然后到小的选择框里选择自己要安装的
下面这就是我所选择的内容
上面我把64位也做了一个选择,
最后就是让我找了好久的MySQL指定目录安装选项,在我的这篇总结里第二张图片中我画了三个框,第一个框是我们最终要选择的安装内容,到了第二个框是我们选好的安装内容,此时如果我们不点击第二个框中内容是看不到有第三个框的出现的,然而就是第三个框中的选项是指定安装目录选项,在选择指定安装目录后,点击确定时会有警告提示直接忽略就可以了,后面还会有关于指定目录的警告同样忽略,后面的就没什么难得了。
连接数据库遇到的问题
上面我把所有的东西安装完了之后就开始连接数据库,在安装完Nginx,PHP,MySQL之后就把环境变量配置好,最好有这个习惯,我用了两种方式去连接数据库,一种是代码的已使用Navicat工具
这是代码的
<?php
header('content-type:text/html;cherset=utf-8');
$con = mysqli_connect('localhost','root','root');
if($con){
echo '连接成功';
}else{
echo '连接失败';
}
结果报错的内容
根据报错内容到谷歌或者百度搜到的结果是提示字符集有问题
网上依然有很多的答案,很多人总结的经验很好用,拿来用就好,下面是别人的解决办法,现在也是我的了
mysql 8.0,其默认编码修改成了utfmb4,需要修改配置文件:在MySQL目录下找到配置文件my.ini进行更改,
更改过后一定要重启服务
这个链接里有8.0版本的新特性,其中就有提到默认的字符集https://mp.weixin.qq.com/s/QUpk9uuS2JTli1GT6HuORA?utm_source=oschina-app
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
上面的修改后本以为可以链接成功了,可是又出了下面的报错下面的报错是说密码验证方法不对,
一,在MySQL 8.0.11中,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅caching_sha2_password作为首选的身份验证插件。(翻译自https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)
接下来解释从网上查到的更改配置文件my.ini,这是最简单快捷的办法,其他办法还有很多,我用不到暂时不记录,
[mysqld]
default_authentication_plugin=mysql_native_password
对于上面这个配置文件更改后PHP文件还是没办法直接连接数据库,还需要以下步骤,下面的步骤是需要用cmd窗口进入到MySQL后执行的命令,执行后PHP文件就可以直接连接数据库了,
对于服务器,default_authentication_plugin
系统变量的默认值 从更改 mysql_native_password
为caching_sha2_password
。
此更改仅适用于安装或升级到MySQL 8.0或更高版本后创建的新帐户。对于已升级安装中已存在的帐户,其身份验证插件保持不变。希望切换到的现有用户 caching_sha2_password
可以使用以下ALTER USER
语句执行此操作:
ALTER USER 'root'@'localhost'
IDENTIFIED WITH caching_sha2_password
BY 'password';