Codeigniter 连接到使用 centOS 和 mariadb 作为数据库管理的 SSH 服务器的可能设置是啥?

Posted

技术标签:

【中文标题】Codeigniter 连接到使用 centOS 和 mariadb 作为数据库管理的 SSH 服务器的可能设置是啥?【英文标题】:What is the possible setting for Codeigniter connecting to a SSH server with centOS and mariadb as database management?Codeigniter 连接到使用 centOS 和 mariadb 作为数据库管理的 SSH 服务器的可能设置是什么? 【发布时间】:2018-04-28 02:48:13 【问题描述】:

我使用的服务器是ssh连接,由centOS运行,它使用LAMP作为平台。

因为是centOS,mariadb是它唯一可用的数据库管理。我无法通过sudo yum install mysql-server 命令安装mysql。

我在本地使用 codeigniter 创建了一个项目。

我无法连接到数据库。错误给出如下:

A php Error was encountered

Severity: Warning

Message: mysqli::real_connect(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Filename: mysqli/mysqli_driver.php

我的 codeigniter 中的 db 设置是:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '*server-ip-address*',
    'port' => '*server-port-number*',
    'username' => 'root',
    'password' => 'root@999',
    'database' => 'listingapp_db',
    '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
);

我只是想也许我的数据库设置有误。

dbdriver 设置有什么关系吗? 我尝试将mysqli 更改为mariadb,仍然没有进展。

什么可能是可以与服务器的centOS mariadb 共同使用的有效设置?

我尝试 sudo iptables -vnL 检查防火墙,结果如下:

Chain INPUT (policy DROP 10924 packets, 630K bytes)
 pkts bytes target     prot opt in     out     source               destination
40905 5353K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
1860K 2702M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
    4   172 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F
  158  9480 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  445 28059 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
   57  2800 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2202

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1133K packets, 103M bytes)
 pkts bytes target     prot opt in     out     source               destination

【问题讨论】:

可以在codeigniter中用mysqli连接mariadb,没问题。可能是centos防火墙阻塞了端口。 @ourmandave 啊,我明白了。但我怎样才能解锁一个端口?什么是示例命令? 取决于您运行的 Centos 版本以及您使用的是 firewalld 还是 iptables。你可能应该用谷歌搜索那个。 @ourmandave 我试过sudo iptables -vnL。我在上面编辑了结果... 【参考方案1】:

我现在已经解决了我的问题。打开我使用的端口,然后在mysql中授予root用户权限。

【讨论】:

以上是关于Codeigniter 连接到使用 centOS 和 mariadb 作为数据库管理的 SSH 服务器的可能设置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 codeigniter 连接到 SQL SERVER 数据库

Codeigniter 无法连接到外部 SQL Server

CodeIgniter 3.1.10:无法通过 DSN 使用 ODBC 连接到远程数据库

CodeIgniter 3 数据库连接到自己的 IP

无法使用 CodeIgniter 连接到 MySQL。可能的 DNS 问题?

如何在 Codeigniter 3 中连接到 POSTGRESQL?