環境: win10 + PHP5.48 + Apache2.2 + Mysql8.017
PHP連接實例
<?php
$link = mysql_connect("localhost", "myuser", "mypasswd");
#myuser: 用戶名
#mypasswd: 密碼
var_dump($link);
mysql_close();
?>坑1 Call to undefinedfunction mysql_connect()

原因: mysql_connect()函數未定義,php.ini配置文件中未開啟
解決方法:
1.1 配置php.ini函數

1.1.1 去掉extension=php_mysql.dll前面的注釋分號;
1.1.2 通過extension指定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中查看對應用戶身份驗證插件

可以看到root用戶的身份驗證插件已經改為了mysql_native_password
如果身份驗證方式沒變,執行如下操作
# 登陸mysql
mysql -uroot -p
# 使用mysql數據庫
use mysql;
# 修改身份驗證插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';
坑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配置文件,具體修改條目如下:(這裡只展示了需要修改的條目,原配置文件內容很多)
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8切記:任何每一次的修改,都需要重啟Apache服務,以及mysql服務!!!
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/259094.html
微信掃一掃
支付寶掃一掃