我在服务器上活动的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/索引.php 行: 292 功能: require_once
您必须设置mysql端口号,默认情况下为3306,请在数据库中检查这一点.php
使用任一
'dbport' => '3306',
或
'hostname' => 'mysql.hostingprovider.com:3306',
用端口连接本地主机为我解决了这个问题。
$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
);
当我将代码点火器项目从本地主机上传到实时服务器时,我遇到了同样的错误。
我找到的解决方案是对应用程序 => config => 数据库进行一些更改.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) 从本地主机导出数据库
5)在实时服务器上打开phpmyAdmin并导入它。
6) 使用 FTP 客户端或仪表板更改应用程序=>配置=>数据库.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
);
您可以添加新用户并通过并授予其所有权限,如下所示:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
然后,您应该使用新用户和 pass 更新您的 config.php 文件。
执行以下操作:
- 在
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',
);
您可以编辑服务器的 php.ini 文件来定义 CodeIgniter 默认使用的端口。
C:'wamp64'bin'apache'apache2.4.41'bin'php.ini
mysqli_connect()
的默认端口号。
mysqli.default_port = 3308
尝试设置配置/数据库.php"用户名"=>"xxx"到"用户名"=>"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 并且我在本地运行我的编码点火器应用程序,因此最后我通过重新放置解决了它的问题:"主机名" => "本地主机" 由"主机名" => "127.0.0.1:33065" :33065 是 XAMPP 默认为 phpmyadmin 分配的端口。如果您在 xampp 默认选项中运行您的项目,更改它应该就足够了(希望如此)。但是如果你不这样做,我想,你可以搜索你用于数据库连接的端口,并使用":"将其添加到你的主机名中(如果你不确定你使用的是哪个端口,你总是可以在你的 D.B. 管理工具中看到 - phpmyadmin 或你正在使用的那个 - 在选项上,哪个端口正在占用)。