远程Mysql访问

May*_*ndi 1 mysql

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

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

Dev*_*oot 8

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

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

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

bind-address=YOUR-SERVER-IP
Run Code Online (Sandbox Code Playgroud)

例如,如果您的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
.......
Run Code Online (Sandbox Code Playgroud)

哪里

  • bind-address:要绑定的IP地址.
  • skip-networking:根本不要监听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";
Run Code Online (Sandbox Code Playgroud)

哪里:

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

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

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

运行此命令退出MySQL:

exit;
Run Code Online (Sandbox Code Playgroud)

第3步:重启mysql deamon

/etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)

要么

/etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)

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


And*_*ler 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
Run Code Online (Sandbox Code Playgroud)

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

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

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