允许在linux上进行远程mysql访问(通过webmin或shell)

时间:2016-03-30 00:25:22

标签: database remote-access remote-debugging remote-server webmin

规格: 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访问。我所做的是编辑“数据库管理 - >主机权限”,并按如下方式进行:

enter image description here

这应该允许远程mysql访问,但它不起作用。另外我从其他地方读到要允许远程mysql访问我需要编辑/etc/mysql/my.cnf;我曾经想过,在我编辑webmin中的“主机权限”之后,这个文件会被更改,但事实并非如此。另一方面,我找不到我应该在my.cnf编辑的行,所以我被困在这里。

感谢任何帮助。

2 个答案:

答案 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 执行此操作,

为远程访问创建用户帐户

  • Webmin&gt;服务器&gt; MySQL数据库服务器&gt;用户权限

Click User Permissions

允许MySQL服务器监听远程请求

  • Webmin&gt;服务器&gt; MySQL数据库服务器&gt; MySQL服务器配置

MySQL Conf

MySQL服务器侦听地址 - 将其设置为任何

any

使用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