允许远程mysql访问(通过webmin或shell)

规格: Ubuntu 14.04 webmin / virtualmin 1.791

我使用以下代码来测试远程mysql数据库连接:

 

我一直收到这个错误:

无法建立连接,因为目标计算机主动拒绝它。

研究表明这意味着服务器“没有听”。 在我运行上面的脚本之前,我已经尝试通过webmin gui允许远程mysql访问。 我所做的是编辑“数据库管理 – >主机权限”,并按如下方式进行:

在此处输入图像描述

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

任何帮助表示赞赏。

登录mysql mysql -u yourname -p yourpassword ,然后按照这样的方式进行操作

 mysql>use mysql; mysql>select host,user from user; 

它可能会产生以下结果:

 +-----------+------------------+ | host | user | +-----------+------------------+ | 127.0.0.1 | root | | ::1 | root | | localhost | debian-sys-maint | | localhost | root | +-----------+------------------+ 4 rows in set (0.00 sec) 

如果你看到了,这意味着你只能在localhost中连接mysql,所以你需要执行以下步骤:

 mysql>GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY "password"; Query OK, 0 rows affected (0.00 sec) mysql>flush privileges; Query OK, 0 rows affected (0.00 sec) 

"%"表示任何主机都可以远程登录到服务器,如果要限制只能访问计算机,则需要将"%"更改为要允许连接的计算机的IP地址。

如果它工作,那么你select host,user from user; ,您将获得以下信息:

 +-----------+------------------+ | host | user | +-----------+------------------+ | % | root | | 127.0.0.1 | root | | ::1 | root | | localhost | debian-sys-maint | | localhost | root | +-----------+------------------+ 5 rows in set (0.00 sec) 

退出mysql,编辑/etc/mysql/my.cnf ,找到

 # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 

注释它或你可以删除它(不推荐),重启你的mysql服务器,使用service mysql restart ,如果你这样做,你可以解决问题。

它在我的电脑上运行良好(ubuntu 14.04 + mysql 5.5)