Centos

CentOS:無法遠端連接到 mysql 伺服器,但我可以“nc”連接到它

  • February 28, 2018

我有兩個虛擬機,都執行 CentOS。

一個是網路伺服器:10.2.2.59——在這個伺服器上我放了 Moodle 網路應用程序文件。

一個是 DB server: 10.2.2.58 我安裝了 MySQL 並且執行良好,更改my.conf為 comment#skipping-network和 commented #bind-address

我已將防火牆配置為接受埠 3306

-A INPUT -s 10.3.2.59 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

在(.59)上,我嘗試了nc -z 10.2.2.58 3306 ,輸出是

Connection to 10.2.2.58 3306 port [tcp/mysql] succeeded!

我還嘗試使用從(.59)到(.58)遠端連接到mysqlmysql -u moodle_XXXX_ur -p -h 10.2.2.58

它確實連接並mysql>顯示了提示。

我授予“moodle_XXXX_ur”所有權限給moodle_XXX_DB


主要問題是當我嘗試使用這些參數在(.59)中安裝moodle時

Database host : 10.2.2.58
Database name : moodle_XXX_DB
Database user : moodle_XXXX_ur
Database password: XXXXXXXXXXXXX
Tables prefix: mdl_
Unix socket: true

我也嘗試將 Unix 套接字設置false為。

一個錯誤顯示:

Error: Database connection failed

It is possible that the database is overloaded or otherwise not running properly.

The site administrator should also check that the database details have been correctly specified in config.php

Warning: mysqli::mysqli(): (HY000/2002): Permission denied in /var/www/html/lib/dml/mysqli_native_moodle_database.php on line 76

第 76 行如下所示:

$conn = new mysqli($dbhost, $dbuser, $dbpass, '', $dbport, $dbsocket); // Connect without db

任何幫助,或任何追踪問題的方法???

如此處所述這可能是因為 selinux 政策。嘗試在兩台伺服器上關閉 selinux。在 CentO 上啟用或禁用 SELinux

似乎是 “SELinux Booleans”的問題 使用以下命令來顯示布爾值的狀態

$getsebool -a | grep httpd_can_network

並且“httpd_can_network_connect_db”應該打開

httpd_can_network_connect_db --> on

否則你必須打開這個命令

$setsebool -P httpd_can_network_connect_db 1

引用自:https://serverfault.com/questions/539494