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

问题描述 投票:2回答:8

我在服务器上实时存在的CodeIgniter应用程序中遇到“跟随”错误。

这里是错误的输出:

遇到PHP错误

严重性:警告

消息:mysqli :: real_connect():(HY000 / 1044):拒绝用户访问'xxx'@'localhost'到数据库'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

codeigniter mysqli
8个回答
5
投票

您必须设置mysql端口号,默认情况下,database.php中的端口号为3306 check this

使用任一

'dbport' => '3306',

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

1
投票

当我从本地主机将Codeigniter项目上载到Live服务器时,遇到了相同的错误。

我发现什么解决方案是对应用程序进行一些更改=> config => database.php

下面是]的数据库设置>

localhost

$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)从本地主机导出数据库

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
);

执行以下操作:

  1. applications/config/database.php中,将dbport => '3306',添加到默认数组$db['default'] = array();
  • system/database/DB_driver.php中,将public $port = '';更改为public $port = '3306';
  • 尝试使用不带特殊字符的普通密码,下面是示例:

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

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

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

    然后,您应该使用新用户和密码更新您的config.php文件。

    使用端口连接localhost为我解决了问题。

    $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
    );
    
    $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
    );
    

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


    0
    投票

    执行以下操作:


    0
    投票

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


    0
    投票

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


    0
    投票

    使用端口连接localhost为我解决了问题。


    -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
    );
    

    -1
    投票

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

    © www.soinside.com 2019 - 2024. All rights reserved.