允许从任何IP地址远程访问MySQL数据库

我知道这个命令:

GRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword'; 

但是,它只允许我授予一个特定的IP地址来访问这个远程MySQL数据库。 如果我想要它,以便任何远程主机可以访问这个MySQL数据库呢? 我怎么做? 基本上我公开这个数据库,所以每个人都可以访问它。

 TO 'user'@'%' 

%是通配符 – 你也可以做'%.123.123.123''%.123.123.123'东西,如果你需要的话。

启用远程访问(授予)主页/教程/ Mysql /启用远程访问(授予)如果您尝试从远程计算机连接到您的MySQL服务器,并运行到像下面的错误,这篇文章是给你的。

错误1130(HY000):主机'1.2.3.4'不允许连接到这个MySQL服务器

更改mysqlconfiguration

从编辑mysqlconfiguration文件开始

 vim /etc/mysql/my.cnf 

注释以下行。

 #bind-address = 127.0.0.1 #skip-networking 

如果你没有findskip-networking行,添加并注释掉它。

重新启动mysql服务器。

 ~ /etc/init.d/mysql restart 

更改GRANT特权

即使经过上述更改,您可能会惊讶地发现,您没有获得远程访问或访问权限,但无法访问所有数据库。

默认情况下,您正在使用的mysql用户名和密码被允许在本地访问mysql-server。 所以需要更新权限。

像下面那样运行一个命令来从所有机器上访问。 (用您的凭证replaceUSERNAMEPASSWORD 。)

 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

像下面那样运行一个命令来授予来自特定IP的访问权。 (用您的凭证replaceUSERNAMEPASSWORD 。)

 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

您可以用您的IPreplace1.2.3.4。 您可以多次运行上述命令,从多个IP进行GRANT访问。

您也可以为远程访问指定一个单独的USERNAMEPASSWORD

你可以通过以下方式查看最终结

 SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%"; 

最后,您可能还需要运行:

 mysql> FLUSH PRIVILEGES; 

testing连接

从terminal/命令行:

 mysql -h HOST -u USERNAME -pPASSWORD 

如果你得到一个mysql shell,不要忘记运行show数据库; 检查您是否拥有来自远程机器的正确权限。

奖金提示:撤销访问

如果您不小心授予用户访问权限,则最好有方便的撤销选项。

以下将撤销所有机器的USERNAME的所有选项:

 mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%'; Following will revoke all options for USERNAME from particular IP: mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4'; Its better to check information_schema.user_privileges table after running REVOKE command. 

如果在运行REVOKE命令后看到USAGE权限,那就好了。 它根本就没有特权。 我不确定是否可以撤销。

假设上述步骤已经完成,MySql 3306端口可以远程访问; 不要忘记在mysqlconfiguration文件中绑定公共ip地址。

例如在我的Ubuntu服务器上:

 #nano /etc/mysql/my.cnf 

在文件中,search[mysqld]部分块并添加新的绑定地址,在本例中为192.168.0.116。 它看起来像这样

 ...... ..... # 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 bind-address = 192.168.0.116 ..... ...... 

如果您select,您可以删除本地主机(127.0.0.1)绑定,但是您必须特别指定一个IP地址才能访问本地计算机上的服务器。

然后最后一步是重新启动MySql服务器(在Ubuntu上)

 stop mysql start mysql 

或者为其他系统#/etc/init.d/mysql restart

现在可以通过以下方式远程访问MySQL数据库:

 mysql -u username -h 192.168.0.116 -p 

对于任何一个摸不着头脑的人,这里是我如何授予特权,希望它可以帮助别人

 GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword'; 

如前所述, %是通配符,这将允许任何IP地址连接到您的数据库。 我在这里做的假设是当你连接你会有一个名为root的用户(这是默认的)。 在根密码中input,你就可以走了。 请注意,我在用户根目录没有单引号( ' )。

运行以下命令:

 $ mysql -u root -p mysql> GRANT ALL ON *.* to root@'ipaddress' IDENTIFIED BY 'mysql root password'; mysql> FLUSH PRIVILEGES; mysql> exit 

然后尝试从您指定的IP地址进行连接:

 mysql -h address-of-remove-server -u root -p 

你应该可以连接。

需要configuration文件更改才能通过本地主机启用连接。

要通过远程IP进行连接,请以“root”用户身份login并在mysql中运行以下查询。

 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 

这将创build一个新的用户,可以在本地和远程IP上访问。

还要注意位于/etc/mysql/my.cnf的my.cnf文件中的以下行

 bind-address = 127.0.0.1 

重新启动你的MySQL使用

 sudo service mysql restart 

现在你应该可以远程连接到你的mysql了。

你可以通过这个命令来解决MariaDB的问题:

注意:

 GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'mysql root password'; 

%是通配符。 在这种情况下,它指的是所有的IP地址。

 GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress' 
  • 使用pipe理员用户启动MYSQL
    • mysql -u admin-user -p(请input密码提示)
  • 创build一个新用户:
    • CREATE USER'newuser'@'%'IDENTIFIED BY'password'; (% – > anyhost)
  • 授予权限:
    • GRANT SELECT,DELETE,INSERT,UPDATE ON db_name。* TO'newuser'@'%';
    • FLUSH PRIVILEGES;

如果您正在运行EC2实例,请不要忘记使用MYSQL / Aurura在安全组中添join站规则。

编辑文件:

/etc/mysql/percona-server.cnf

在文件中追加下面的代码。

[mysqld] bind-address = 0.0.0.0

创build用户进行远程访问。

 $ mysql -u root -p mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank'; mysql> FLUSH PRIVILEGES; mysql> exit 

所有的Linux服务器工作,

对于MSWin c:\查找insatallation位置\文件path

在cPanel等网站面板中,您可以在允许的主机名中添加一个% (百分号)来访问您的MySQL数据库。

通过添加一个单一的%您甚至可以从任何IP或网站从桌面应用程序访问您的数据库。

例如在我的CentOS中

sudo gedit /etc/mysql/my.cnf

注释掉以下几行

#bind-address = 127.0.0.1

然后

sudo服务mysqld重启

您可以通过编辑/etc/my.cnf来禁用所有的安全性:

 skip-grant-tables