Codeigniter远程数据库连接问题

时间:2016-02-05 13:26:33

标签: php mysql linux codeigniter database-connection

需要一个Codeigniter项目( 在windows )连接远程Mysql数据库( 在linux服务器 >)。这是我的database.php配置。

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'xxx.xxx.x.xxx';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

并且它给出了错误

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: *:\****\***\htdocs\project\system\database\DB_driver.php

Line Number: 124

但我可以使用相同的用户名和密码通过 Phpmyadmin Heidisql 访问远程mysql数据库。 (所有特权授予)

这是远程数据库配置

Server version: 5.0.95
Protocol version: 10
Server: Localhost via UNIX socket
MySQL charset: UTF-8 Unicode (utf8)
MySQL client version: 5.0.95
Used PHP extensions: mysql

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

在几个月前连接到linux中的远程mysql服务器之前,我遇到了同样的问题。

我在mysql中通过PHPMYADMIN

尝试了这个

SHOW VARIABLES LIKE 'old_passwords'它告诉我ON

表示服务器mysql配置中old_passwords=1文件中的my.cnf

此问题的解决方法是更新相应用户的password

参考:Error: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

答案 1 :(得分:0)

不确定这是否会有所帮助,但我之前确实遇到过类似问题。

$db['default']['dbdriver'] = 'mysqli';

而不是

$db['default']['dbdriver'] = 'mysql';

答案 2 :(得分:0)

看看是否有效

创建一个包含所有权限的用户,请记住将主机设置为%

编辑mysqld.cnf并设置“bind-address = 0.0.0.0”(可能是/etc/mysql/mysql.conf.d/mysqld.cnf)

重启mysql