欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php連接本地mysql連接錯誤的問題解決方法

 更新時間:2024年10月17日 08:33:10   作者:就不做程序猿  
這篇文章主要介紹了php連接本地mysql連接錯誤的問題解決方法,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

我的服務器啟用的nginx,配置了php的連接mysql的配置文件connect.php:

<?php
    $server="localhost";//主機
    $db_username="root";//你的數(shù)據(jù)庫用戶名
    $db_password="root";//你的數(shù)據(jù)庫密碼
    $dbname = "users";
 
    $conn = new mysqli($server,$db_username,$db_password);//鏈接數(shù)據(jù)庫
    if($conn->connect_error){
        die("can't connect".$conn->connect_error);//如果鏈接失敗輸出錯誤
    }
    
    if (!mysqli_select_db($conn, 'users')) {
        die("選擇數(shù)據(jù)庫失敗: " . mysqli_error($conn));
    }

其中一個頁面include了這個文件,按理來說可以直接連接的,當然你需要在本地mysql建立這個users庫和user表。

但是調(diào)試過程中 include函數(shù)并不起作用:    include('/var/www/html/phpTest/connect.php');

我們查看nginx的錯誤日志 cat /var/log/nginx/error.log:

下面這兩個報錯分別是兩個不同的問題:

一、未加載php的mysqli文件

2024/10/16 15:58:08 [error] 370320#370320: *18 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Class "mysqli" not found in /var/www/html/phpTest/connect.php:7
Stack trace:
#0 /var/www/html/phpTest/signup.php(32): include()
#1 {main}
  thrown in /var/www/html/phpTest/connect.php on line 7" while reading response header from upstream, client: 113.132.177.30, server: _, request: "POST /phpTest/signup.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "116.205.127.142", referrer: "http://116.205.127.142/phpTest/signup.php"

這個是因為沒有加載php的mysqli文件導致的,我們需要在服務器上下載:

sudo apt-get install php-mysqli
sudo apt-get install php8.1-mysqli //根據(jù)你的php版本選擇msqli版本
 
sudo systemctl restart php8.1-fpm  //重啟fpm和nginx
sudo systemctl restart nginx

還需要確保php的配置文件php.ini中沒有禁用mysqli,找到;extension=mysqli 去掉前面分號注釋符,重啟fpm。

二、本地數(shù)據(jù)庫拒絕連接

2024/10/16 16:27:26 [error] 371624#371624: *10 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught mysqli_sql_exception: Access denied for user 'root'@'localhost' in /var/www/html/phpTest/connect.php:7
Stack trace:
#0 /var/www/html/phpTest/connect.php(7): mysqli->__construct()
#1 /var/www/html/phpTest/signup.php(32): include('...')
#2 {main}
  thrown in /var/www/html/phpTest/connect.php on line 7" while reading response header from upstream, client: 113.132.177.30, server: _, request: "POST /phpTest/signup.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "116.205.127.142", referrer: "http://116.205.127.142/phpTest/signup.php"

需要確認 root 用戶是否有權(quán)限從 localhost 訪問數(shù)據(jù)庫。執(zhí)行以下 MySQL 命令來查看權(quán)限:

登錄成功后,檢查用戶權(quán)限:

SELECT host, user FROM mysql.user;

如果沒有 root@localhost,或者 root 用戶沒有適當?shù)臋?quán)限,你可以通過以下命令為 root 賦予權(quán)限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

確保 MySQL 配置文件 (/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf) 中允許本地連接:默認是開啟的

bind-address = 127.0.0.1

修改完之后重啟mysql即可

三、權(quán)限問題

確保root用戶的權(quán)限

SELECT User, Host FROM mysql.user WHERE User = 'root';
mysql> SELECT User, Host FROM mysql.user WHERE User = 'root';
+------+-----------+
| User | Host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)

然后檢查mysql認證插件:某些情況下,MySQL 可能使用了 auth_socket 插件,這會阻止使用密碼登錄。檢查 root 是否使用 auth_socket 插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

如果 plugin 顯示為 auth_socket,修改為 mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
mysql> SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+
1 row in set (0.00 sec)

尤其是最后一步,如果不修改還是連不上的

到此這篇關(guān)于php連接本地mysql連接錯誤的問題解決方法的文章就介紹到這了,更多相關(guān)php連接mysql連接錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論