允许远程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)