我正在尝试将我的代码点火器框架连接到外部数据库。但它显示出错误
发生数据库错误,无法使用所提供的设置连接到数据库服务器。文件名: core/Loader.php行号: 346
然后,我将这个插入到config/database.php的末尾。
echo '<pre>';
print_r($db['default']);
echo '</pre>';
echo 'Connecting to database: ' .$db['default']['database'];
$dbh=mysql_connect
(
$db['default']['hostname'],
$db['default']['username'],
$db['default']['password'])
or die('Cannot connect to the database because: ' . mysql_error());
mysql_select_db ($db['default']['database']);
echo '<br /> Connected OK:' ;
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); 但这表明
遇到了一个PHP错误: 8192消息: mysql_connect():mysql扩展被废弃,以后将被删除:使用mysqli或PDO代替Filename: config/database.php行号: 79 遇到了一个PHP错误:警告消息: mysql_connect():无法连接到'167.114.xxx.xxx‘(111) Filename: config/database.php行号: 79上的MySQL服务器 无法连接到数据库,因为:无法连接到“MySQL”(111)上的167.114.xxx.xxx服务器
然后,我尝试在代码点火器dir (在public_html中)之外创建这个
<?php
$servername = "167.114.xxx.xxx";
$username = "myusername";
$password = "dbpass";
$database = "dbname";
// Create connection
$conn = mysql_connect($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>它显示了成功的连接。那我该怎么办?而config/database.php中的db详细信息与上面的相同
发布于 2016-04-12 15:00:35
默认情况下,MySQL将拒绝来自外部的连接。
您的MySQL服务器位于哪里?通常,如果您使用的是某个web托管服务,它们允许您解锁来自它们CPanel的外部连接。请注意,它们中的大多数都需要一些时间才能真正激活它。
另外,请注意mysql_connect不返回对象,而是返回资源(连接ID)。因此,如果您真的想继续使用已废弃的(旧的) MySQL API,请执行以下操作:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); // note that if the port is different from 3306, you must do: 'server:port'
if (!$link) {
die('Could not connect ' . mysql_error());
}
echo 'Connection successfull';
mysql_close($link);但是,建议使用像MySQLi或PDO这样的工具,因为MySQL扩展是不推荐的,因为很长时间没有更新、缺少OOP支持、缺乏新的MySQL功能支持等等。
另一种使用MySQLI的方法,来自PHP手册:
<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
mysqli_close($link);发布于 2016-04-12 15:11:41
1)查看/etc/mysql/my.cnf文件并使其具有以下行:
bind-address = 0.0.0.0
# skip-networking2)运行/etc/init.d/mysql restart或类似的程序重新启动mysql,从外部打开连接。
3)输入mysql控制台并执行:
GRANT ALL ON database_name.* to 'remote_user'@'app_servers_global_ip' IDENTIFIED BY 'very_hard_password';
FLUSH PRIVILEGES;4)在您的config/database.php中有精确的代码
$active_group = 'remote';
$query_builder = TRUE;
$db['remote'] = array(
'dsn' => '',
'hostname' => 'database_remote_ip_here',
'username' => 'remote_user',
'password' => 'very_hard_password',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => FALSE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => FALSE
);https://stackoverflow.com/questions/36575887
复制相似问题