我正在尝试让我的Web服务器连接到我的远程数据库(Mysql)。 连接发生在我的Web应用程序中,该应用程序构建在yii2上。
我已经创建了所有用户详细信息,GRANTED所有权限和允许来自所有主机的连接(%)(逐步进行故障排除)。
现在我可以使用HeidiSQL从家里连接或使用Mysql Workbench进行连接而不会出现问题。 我甚至在家里创建了一个空白的yii2网站,它可以立即运行,但是立即将网站上传到网络服务器会产生同样的问题。
Database Exception – yii\db\Exception
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '46.105.111.111' (110)
↵
Caused by: PDOException
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '46.105.111.111' (110)
in /home/xxxxxxx/xtest.xxxxxxxx.tv/vendor/yiisoft/yii2/db/Connection.php at line 602
我在db服务器上运行了netstat:
我已经通过了etc / mysql / my.cnf
<pre>[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 7999
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#bind-address = *
key_buffer = 16M
max_allowed_packet = 64M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
max_connections = 65535
open-files-limit = 65535
max_connect_errors = 65535
innodb_buffer_pool_size = 1G
table_open_cache = 1000
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
tmp_table_size = 256M
max_heap_table_size = 256M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M</pre>
我看过iptables:
由于已经阅读了大约20条关于mysql安全性的信息,我完全被困住了,我感觉它是一个权限问题。
我甚至尝试过使用自己的PDO Wrapper,所以我99%肯定它不是Yii2问题,非常感谢任何帮助。
希望我提供了足够的信息,因为我之前有一个downvote。
答案 0 :(得分:0)
事实证明,Web主机实际上阻止了连接的传出端口。
yii的输出错误是数据库错误,nievly让我认为问题出在数据库端。
回读问题时的简单逻辑。
我会对发现此问题的任何人说,请记住连接问题,通信是双向的,检查连接的两端。