Codeigniter远程数据库连接问题

一个Codeigniter项目( 在Windows中 )需要连接远程Mysql数据库( 在Linux服务器上 )。 这里是我的database.phpconfiguration。

$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 

但我可以通过PhpmyadminHeidisql使用相同的用户名和密码访问远程mysql数据库。 (全部授予)

这里是远程数据库configuration

 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 

任何帮助将不胜感激

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

我通过PHPMYADMIN在MySQL中试了这个

SHOW VARIABLES LIKE 'old_passwords' ,它说我ON

这意味着服务器mysql配置中的my.cnf文件中的old_passwords=1

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

参考: 错误:mysqlnd无法使用旧的不安全认证连接到MySQL 4.1+

不知道这是否会有所帮助,但我以前遇到类似的问题。

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

代替

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

看看这是否有效

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

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

重新启动mysql