繁体   English   中英

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

[英]Codeigniter error when trying to connect to database using mysqli

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

这是错误的 output:

遇到 PHP 错误

严重性:警告

消息:mysqli::real_connect(): (HY000/1044):拒绝用户 'xxx'@'localhost' 访问数据库 'xxx'

文件名:mysqli/mysqli_driver.php

行号:161

回溯:

文件:/home/arya123/public_html/application/controllers/Home.php 行:7 Function:__construct

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

您必须设置 mysql 端口号,默认情况下为 3306 在 database.php 中检查此项

使用

'dbport' => '3306',

或者

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

Connect localhost with port 为我解决了这个问题。

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

当我将我的 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 Databases(或任何相关的数据库),

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();
  2. system/database/DB_driver.php ,更改public $port = ''; public $port = '3306';

尝试使用没有特殊字符的普通密码,示例如下:

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

您可以添加新用户并通过并授予其所有权限,如下所示:

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

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

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

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

mysqli_connect()默认端口号。

mysqli.default_port = 3308

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

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

验证用户是否具有在数据库上声明的权限权限

"

我在 CodeIgniter 代码中遇到了同样的问题。 数据库,一切都是正确的,但我通过更改这些行来修复它


    'dsn' => 'mysql:host=localhost;dbname=kiuurduapp',
    'hostname' => 'localhost',
    'username' => 'kiuurdu',


    'dsn' => 'mysql:host=127.0.0.1;dbname=kiuurduapp',
    'hostname' => '',
    'username' => 'kiuurdu',

它对我有用

$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 应用程序,最后我通过替换解决了这个问题:'hostname' => 'localhost' by 'hostname' => '127.0.0.1:33065' :33065 是xampp 默认为 phpmyadmin 分配的端口。 如果您在 xampp 默认选项中运行您的项目,更改此设置就足够了(希望如此)。 但是,如果您不这样做,我想您可以搜索用于数据库连接的端口,并使用“:”将其添加到您的主机名中(如果您不确定正在使用哪个端口,您总是可以在您的数据库管理工具 -phpmyadmin 或您正在使用的工具 - 在选项上,哪个端口正在使用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM