远程Mysql访问

时间:2009-11-11 06:28:17

标签: mysql

我有连接远程LAN MYSQL的问题。尝试执行以下命令时,会显示以下错误。

  

$ mysql -u root -h 192.168.1.15 -p
  MySQL的> GRANT ALL test。* to root'192.168.1.15'ENENENIED BY'';;   ERROR 2003(HY000):无法连接到'192.168.1.15'(10060)上的MySQL服务器

6 个答案:

答案 0 :(得分:8)

如果您具有对服务器的完全访问权限(需要root权限):

第1步:编辑my.cnf (通常位于/ etc)

找到以下行:[mysqld]并确保注释行skip-networking(或删除行)并添加以下行:

bind-address=YOUR-SERVER-IP

例如,如果您的MySQL服务器IP是66.166.170.28,则整个块应如下所示:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/English
bind-address    = 66.166.170.28
# skip-networking
.......

其中

  • bind-address :要绑定的IP地址。
  • 跳过网络:根本不要监听TCP / IP连接。所有与mysqld的交互必须通过Unix套接字完成。对于仅允许本地请求的系统,强烈建议使用此选项。由于您需要允许远程连接,因此应从my.cnf中删除此行或将其置于注释状态。

步骤2:授予对所有主机的访问权限

使用以下命令启动MySQL监视器:mysql/usr/local/mysql/bin/mysql。您的shell提示符现在应如下所示:mysql>。运行此命令:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY "PASSWORD";

其中:

  • USERNAME 是您使用php脚本连接时使用的用户名。
  • PASSWORD 是您在连接时使用的密码。

您现在必须刷新MySQL的权限。运行此命令:

FLUSH PRIVILEGES;

运行此命令退出MySQL:

exit;

第3步:重启mysql deamon

/etc/init.d/mysqld restart

/etc/init.d/mysql restart

取决于当前运行的服务器的Linux发行版。

答案 1 :(得分:6)

您还应检查您的MySQL服务器是否已配置为接受远程TCP连接。

在MySQL配置文件(my.cnf)中,至少需要以下内容:

port         = 3306          # Port MySQL listens on
bind-address = 192.168.1.15  # IP address of your server
# skip-networking            # This should be commented out to enable networking

某些配置中的默认值是绑定地址为127.0.0.1,或者完全跳过网络,这意味着只能进行本地或unix套接字连接。这是出于安全原因。

您还可以将bind-address配置为0.0.0.0,这意味着它将绑定在服务器上的所有IP地址上。

最后,检查防火墙配置以允许端口3306。

答案 2 :(得分:2)

GRANT ALL ON test.* TO 'root'@'192.168.1.15' IDENTIFIED BY '';

答案 3 :(得分:1)

在文件/etc/mysql/my.cnf

中注释下面一行
# bind-address = 127.0.0.1

在mysql服务器上添加(任何)主机登录权限(可能是root用户)。

很难:你需要在mysql.host表中插入...

简单方法:使用MySQL Administrator - >用户管理 - >选择用户 - >(右键单击)添加主机 - >选择“任何主机”

最后重启服务器:

/etc/init.d/mysql restart

PS: 默认安装aptitude

mysql版本:MySQL 5.1.57-1~dotdeb.0

Linux Debian 6 Squeeze

答案 4 :(得分:0)

如上所述,需要在my.cnf中摆脱“跳过网络”。

但是,在某些配置中,在启动文件(例如rc.mysqld)中被SKIP =“ - skip-networking”覆盖。所以也要这样做。

hosts.allow是否允许一台机器在任何情况下与另一台机器通话?

让我们不要忘记实际的documentation

答案 5 :(得分:0)

我以为我会在这里提出另一个建议......

一些MySQL GUI工具(Mac的Sequel Pro和Windows的EMS SQL Manager)允许通过SSH tunnelling进行MySQL连接。这意味着您不必授予额外的权限。我发现这是远程访问我管理的MySQL数据库的最快方式。