Php Openshift.com-无法连接mysql

Php Openshift.com-无法连接mysql,php,mysql,openshift,Php,Mysql,Openshift,我正在尝试与mysql-5.1建立连接,但它会显示错误,如“无法连接”,或者当我更改主机名时,“无法连接:没有这样的文件或目录” 我的档案是这样的 <?php $link = mysql_connect('localhost', 'username', 'password'); if (!$link) { die('Could not connect: ' . mysql_error()); } printf("MySQL server version: %s\n", mysql_

我正在尝试与mysql-5.1建立连接,但它会显示错误,如“无法连接”,或者当我更改主机名时,“无法连接:没有这样的文件或目录”

我的档案是这样的

<?php
$link = mysql_connect('localhost', 'username', 'password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
printf("MySQL server version: %s\n", mysql_get_server_info());
?>

已尝试将mysql\u connect更改为mysqli\u connect。没有区别

1) Mysql正在运行(根据接口)

2) 尝试了各种rhc命令来重新启动应用程序、重新启动|重新加载盒带等-执行此操作时没有错误。“例如,Mysql-5.1重新启动…完成”

3) 尝试ping$OPENSHIFT\u MYSQL\u DB\u主机,效果良好

4) 尝试将$OPENSHIFT_MYSQL_DB_主机远程登录,结果显示连接已建立,并且出现了一些乱码

5) ps aux| grep“mysql” 4213 21721 0.0 0.0 103252 828分/0秒+10:56 0:00 grep mysql

6) mysql>状态 /usr/bin/mysql版本14.14发行版5.1.73,用于使用readline 5.1的redhat linux gnu(x86_64)

连接id:4 当前数据库: 当前用户:xxxxxxxxxxxxx@xx.xx.xx.xx SSL:未使用 当前寻呼机:stdout 正在使用输出文件:“” 使用分隔符:; 服务器版本:5.1.73源发行版 协议版本:10 通过TCP/IP连接:xxxxxxxx-xxxxxxxxxxxxx.rhcloud.com 服务器字符集:latin1 Db字符集:拉丁文1 客户端字符集:latin1 连接字符集:拉丁文1 TCP端口:50986 正常运行时间:18分钟40秒

线程:1个问题:4个慢速查询:0个打开:17个刷新表:1个打开表:平均每秒4个查询:0.3

我把密码改成

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'dbname');

/*
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 */
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

/*
 * Use this instead of $connect_error if you need to ensure
 * compatibility with PHP versions prior to 5.2.9 and 5.3.0.
 */
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>

同样的错误

有人能帮我吗?甚至phpmyadmin代码也表示“无法连接到mysql”

谢谢
Ganesh Kumar

您是否尝试过以下方法:

<?php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database */
define('DB_NAME', $_ENV['OPENSHIFT_APP_NAME']);

/** MySQL database username */
define('DB_USER', $_ENV['OPENSHIFT_MYSQL_DB_USERNAME']);

/** MySQL database password */
define('DB_PASSWORD', $_ENV['OPENSHIFT_MYSQL_DB_PASSWORD']);

/** MySQL hostname */
define('DB_HOST', $_ENV['OPENSHIFT_MYSQL_DB_HOST'] . ':' . $_ENV['OPENSHIFT_MYSQL_DB_PORT']);

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
printf("MySQL server version: %s\n", mysql_get_server_info());
?>

我也遇到了同样的问题,可以通过以下代码来解决

define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
define('DB_PORT', getenv('OPENSHIFT_MYSQL_DB_PORT'));
define('DB_USER', getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
define('DB_PASS', getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
define('DB_NAME', getenv('OPENSHIFT_GEAR_NAME'));

$dbhost = constant("DB_HOST"); // Host name 
$dbport = constant("DB_PORT"); // Host port
$dbusername = constant("DB_USER"); // Mysql username 
$dbpassword = constant("DB_PASS"); // Mysql password 
$db_name = constant("DB_NAME"); // Database name 

请不要使用mysql扩展名..改用mysqli或PDO…可能您在php脚本上的用户名和密码是错误的…您使用哪个用户和密码连接到mysql控制台…在php脚本上使用相同的用户名和密码创建盒带时,用户名和密码与给定的相同。让我检查一下mysqli_是否应该使用localhost或$OPENSHIFT_MYSQL_DB_HOST中指定的“534xxxxxxxxx-xxxxxxxxx.rhcloud.com”?尝试了这两种方法。这里,使用534xxxxxxxx-xxxxx.rhcloud.com测试“获取此错误”连接错误(2002)php\u网络\u getaddresses:getaddrinfo失败:名称或服务未知”。并尝试使用localhost获取“连接错误(2002)无此类文件或目录”“。知道吗?您应该在openshift框中使用可用的连接参数作为环境变量。OPENSHIFT_MYSQL_DB_主机、OPENSHIFT_MYSQL_DB_用户名、OPENSHIFT_MYSQL_DB_密码、OPENSHIFT_应用程序_名称(作为数据库名称)。