我有连接远程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服务器
答案 0 :(得分:8)
找到以下行:[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
.......
其中
使用以下命令启动MySQL监视器:mysql
或/usr/local/mysql/bin/mysql
。您的shell提示符现在应如下所示:mysql>
。运行此命令:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY "PASSWORD";
其中:
您现在必须刷新MySQL的权限。运行此命令:
FLUSH PRIVILEGES;
运行此命令退出MySQL:
exit;
/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数据库的最快方式。