尝试使用mysqli连接到数据库时Codeigniter错误

时间:2016-03-07 20:04:23

标签: codeigniter mysqli

我的CodeIgniter应用程序中出现以下错误,该应用程序在服务器上运行。

以下是错误的输出:

  

遇到PHP错误

     

严重性:警告

     

消息:mysqli :: real_connect():( HY000 / 1044):拒绝用户访问   ' XXX' @'本地主机'到数据库' xxx'

     

文件名:mysqli / mysqli_driver.php

     

行号:161

     

回溯:

     

文件:/home/arya123/public_html/application/controllers/Home.php专线:   7功能:__construct

     

文件:/home/arya123/public_html/index.php行:292功能:   require_once

10 个答案:

答案 0 :(得分:3)

你必须在database.php中设置mysql端口号,默认为3306 codepen

使用

 'hostname' => 'mysql.hostingprovider.com:3306',   

[[1, 2, 3], [2, 4, 6], [3, 6, 9]]

答案 1 :(得分:1)

当我将codeigniter项目从localhost上传到Live服务器时,我遇到了同样的错误。

我找到的解决方案是对应用程序进行一些更改=> config => database.php中

以下是

的数据库设置
  

本地主机

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'creator',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

按照

的数据库设置
  

实时服务器(只是演示,设置因主机提供商而异)

1)首先,您必须创建数据库。

2)在仪表板上找到MySql数据库(或任何相关的数据库),

3)创建新数据库并输入数据库名称,用户名和密码。

4)从localhost导出数据库

5)在实时服务器上打开phpmyadmin并导入它。

6)使用FTP客户端或仪表板更改application => config => database.php的设置。

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mysql.hostingprovider.com',    
    'username' => 'abc.username',
    'password' => 'abc.password',
    'database' => 'abc.databasename',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

答案 2 :(得分:0)

执行以下操作:

  1. applications/config/database.php中,将dbport => '3306',添加到默认数组$db['default'] = array();
  2. system/database/DB_driver.php中,将public $port = '';更改为public $port = '3306';

答案 3 :(得分:0)

尝试使用不带特殊字符的普通密码,下面是示例:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'password',
    'password' => 'Mynewpass@756',
    'database' => 'database_name',
);

答案 4 :(得分:0)

u可以添加新用户并通过并赋予其所有特权,如下所示:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

然后,您应该使用新用户并通过更新您的config.php文件。

答案 5 :(得分:0)

使用端口连接本地主机可以为我解决问题。

$db['default'] = array(
    'dsn' => '',
    'hostname' => 'localhost:3308', //Added port here
    'username' => 'root',
    'password' => '1234',
    'database' => 'my_database',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

答案 6 :(得分:0)

您可以编辑服务器的php.ini文件,以定义CodeIgniter默认使用的端口。

C:\wamp64\bin\apache\apache2.4.41\bin\php.ini

mysqli_connect()的默认端口号。

mysqli.default_port = 3308

答案 7 :(得分:0)

尝试在没有任何密码的情况下将config / database.php'username'=>'xxx'设置为'username'=>'root'。

$db['default'] = array( 
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',

答案 8 :(得分:-1)

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'xxx',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

答案 9 :(得分:-1)

我也遇到了同样的麻烦。 由于我使用的是xampp,并且我在本地运行我的codeigniter应用程序,因此最后的问题是我通过重复示例解决了该问题: '主机名'=>'本地主机'  通过 '主机名'=>'127.0.0.1:33065'  :33065是xampp为phpmyadmin默认分配的端口。 如果您在xampp默认选项中运行proyect,则对此进行更改就足够了(希望如此)。 但是,我想,如果您不这样做,则可以搜索数据库连接所使用的端口,并使用“:”将其添加到主机名中(如果不确定使用的端口,您始终可以在您的数据库管理工具-phpmyadmin或您正在使用的工具-在选项上(占用哪个端口)。