环境:win 10 PHP 5.48 Apache 2.2 MySQL 8.017
PHP连接实例
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$link=mysql_connect('localhost ',' myuser ',' my passwd ');
#myuser:用户名
#mypasswd:密码
var _ dump($ link);
MySQL _ close();
?
坑1 Call to undefinedfunction mysql_connect()
原因: mysql_connect()函数未定义,php.ini配置文件中未开启
解决方法:
1.1 配置php.ini函数
1.1.1删除扩展名=php_mysql.dll前面的注释分号;
1.1.2通过扩展名指定php_mysql.dll的绝对路径。
1.2 配置文件路径
1.2.1将php.ini文件复制到c:windowssystem32。
1.3 重启Apache服务(具体怎么重启就不说了,如果这个都不知道,那本文对你没帮助)
坑2 The server requested authentication method unknown to the client
原因: mysql8.x的密码锁机制不一致导致的
在mysql 8.x之后,caching _ sha2 _ password是默认的身份验证插件,而不是以前的mysql_native_password。
解决方法
1.1 修改mysql的my.ini配置文件
您可以看到默认的身份验证方法是caching _ sha2 _ password,在这里它被更改为mysql_native_password。
1.2 mysql中查看对应用户身份验证插件
您可以看到根用户的身份验证插件已更改为mysql_native_password。
如果身份验证方法没有更改,请执行以下操作
#登录mysql
mysql -uroot -p
#使用mysql数据库
使用mysql
#修改身份验证插件
用户“root”@“localhost”由“您的密码”用MySQL _ native _ password标识;
坑3 字符集错误 sever sent charset unknowd to the client ,Please report to the decelopers
原因: MySQL8更换了默认的服务器字符集,mysql8.x的字符集character-set-server默认是utf8mb4,不再是5.x时代的utf8了
解决方法:
修改mysql的my.ini配置文件,具体修改项目如下:(这里只显示需要修改的项目,原来的配置文件有很多内容)
[客户]
默认字符集=utf8
[mysql]
默认字符集=utf8
[mysqld]
排序规则-服务器=utf8_unicode_ci
字符集服务器=utf8
切记:任何每一次的修改,都需要重启Apache服务,以及mysql服务!!!