she*_*wen 3 remote-access database 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();
}
?>
Run Code Online (Sandbox Code Playgroud)
我不断收到此错误:
无法建立连接,因为目标机器主动拒绝它。
研究表明,这意味着服务器“不听”。在运行上述脚本之前,我已经尝试允许通过 webmin gui 进行远程 mysql 访问。我所做的是编辑“数据库管理->主机权限”并使其如下:
这应该允许远程 mysql 访问,但它不起作用。我也从其他地方读到允许远程 mysql 访问我需要编辑/etc/mysql/my.cnf;我以为在我编辑 webmin 中的“主机权限”后,这个文件会被更改,但事实并非如此。另一方面,我找不到我应该在 中编辑的行my.cnf,所以我被困在这里。
任何帮助表示赞赏。
小智 6
登录mysql mysql -u yourname -p yourpassword,然后像这样
mysql>use mysql;
mysql>select host,user from user;
Run Code Online (Sandbox Code Playgroud)
它可能会给出以下结果:
+-----------+------------------+
| host | user |
+-----------+------------------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | debian-sys-maint |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如果你看到了,这意味着你只能在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)
Run Code Online (Sandbox Code Playgroud)
"%"意味着任何主机都可以远程登录服务器,如果您想限制只访问一台机器,您需要将 更改为"%"您要允许连接的机器的 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)
Run Code Online (Sandbox Code Playgroud)
退出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
Run Code Online (Sandbox Code Playgroud)
注释它或者你可以删除它(不推荐),重新启动你的mysql服务器,使用service mysql restart,如果你像我一样这样做,你可能会解决问题。
它在我的电脑上运行良好(ubuntu 14.04+mysql 5.5)
| 归档时间: |
|
| 查看次数: |
7819 次 |
| 最近记录: |