如何设置 MySql 服务器来接受远程连接?

如何设置 MySql 服务器来接受远程连接?

我正在 Ubuntu 桌面上安装 MySql 服务器。我可以在指定 as 时将 MySql Query Browser 连接到它Server Hostnamelocalhost但是当我用机器的 IP 替换它时,它停止工作(即使 MySql Query Browser 在同一台机器上运行)。

到目前为止我所做的就是删除 iptables,但似乎与此无关。

这是错误信息

无法连接到主机“192.168.0.2”。

MySQL 错误编号 2003

无法连接到‘192.168.0.2’上的 MySQL 服务器 (111)

单击“Ping”按钮查看是否存在网络问题。

但 ping 没问题

答案1

您必须将 mysqld 绑定到不同于 127.0.0.1 的 IP。

打开 my.cnf(通常是 /etc/mysql/my.cnf)并更改以下行

bind = 127.0.0.1

到您的机器用于连接外部世界的任何 IP。0.0.0.0绑定到所有 IP 地址。更改后,不要忘记重新启动 mysqld。

答案2

除了 halfdan 的回答之外,我还必须执行以下 mysql 命令:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

正如我所了解到的

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

答案3

这里解释了更多潜在问题:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en/access-denied.html

如果要授予所有数据库的所有权限,请尝试

grant all on *.* to 'joe'@'%';

但是,在执行此操作之前,请确保“mysql”数据库中有一个用户,该用户的“Host”设置为您的 IP 地址——在我的情况下,是我家里的 IP。因此,用户“joe”可能有多个记录,每个 IP 对应一个记录,他可能从该记录中呼叫。要查看您已拥有的内容,请执行以下操作:

use mysql;
select Host, User, Password from user where user='joe';`

就我的情况而言,我的用户现在有了正确的 IP,但密码也丢失了。我剪切粘贴了密码(它是散列的或类似的东西),这解决了我的特定远程连接问题:

update user set Password='5493845039485' where user='joe';

还有一件事,在 my.cnf 中您可能需要设置“port=3306”或您计划使用的任何端口。

相关内容