规格: Ubuntu 14.04 webmin / virtualmin 1.791
我正在使用以下代码来测试远程mysql数据库连接:
<?php
$db_host = "123.456.789";
$db_name = "database";
$db_user = "user";
$db_pass = "password";
$db_table_prefix = "prefix_";
GLOBAL $errors;
GLOBAL $successes;
$errors = array();
$successes = array();
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;
if(mysqli_connect_errno()) {
echo "Conn Error = " . mysqli_connect_error();
exit();
}
?>
我一直收到这个错误:
无法建立连接,因为目标计算机是主动的 拒绝了。
研究显示这意味着服务器“没有收听”。在我运行上面的脚本之前,我已经尝试过允许通过webmin gui进行远程mysql访问。我所做的是编辑“数据库管理 - >主机权限”,并按如下方式进行:
这应该允许远程mysql访问,但它不起作用。另外我从其他地方读到要允许远程mysql访问我需要编辑/etc/mysql/my.cnf
;我曾经想过,在我编辑webmin中的“主机权限”之后,这个文件会被更改,但事实并非如此。另一方面,我找不到我应该在my.cnf
编辑的行,所以我被困在这里。
感谢任何帮助。
答案 0 :(得分:1)
我已经让它工作了,但不是通过webmin。
首先,我需要在found = re.sub(r'^([0-9])([a-z]$)',lambda matchobj: matchobj.group(1) + ' ' + matchobj.group(2), '3f')
中注释掉以下行:
/etc/mysql/my.cnf
我想我可以将#bind-address = 127.0.0.1
更改为我的本地IP地址,而不是简单地将其评论出来。很多谷歌搜索结果都停在这里,但这还不够。 下一步是授予本地用户权限:在远程服务器上,我需要运行以下命令:
$ mysql -u root -p 输入密码:
的MySQL&GT;使用mysql
的MySQL&GT;全部授予。至用户@'localIP'IDENTIFIED BY '密码';
的MySQL&GT; FLUSH PRIVILEGES;
实际上,当我在这里问这个问题之前我正在进行谷歌搜索时,我已经看到了这个,但我忽略了它,因为我以为我已经完成了。事实证明,我不仅需要在服务器端授予权限,还需要为“本地用户”执行此操作。
如果还有一些我错过了或者你知道如何通过webmin进行评论,请随意在这里发表评论(我仍然想知道在webmin中编辑“主机权限”是什么)。
答案 1 :(得分:1)
您也可以通过 webmin 执行此操作,
为远程访问创建用户帐户
允许MySQL服务器监听远程请求
MySQL服务器侦听地址 - 将其设置为任何
使用class ChoiceType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('answer')
->add('correct')
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'ChallengeBundle\Entity\Choice'
));
}
}
或直接从webmin重新启动MySQL。
允许MySQL监听任何端口不是好主意,除非您是唯一可以访问该网络的人,
不要将其留在此后,最好是允许某些域上的某些主机,例如 IP ,或者只是如果没有必要,即在你完成你的会话时,不要听所有的端口。
您也可以通过service mysql restart
执行此操作
只需添加您选择的/etc/mysql/my.cnf
,而不是 localhost