允许从任何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。 所以需要更新权限。
像下面那样运行一个命令来从所有机器上访问。 (用您的凭证replaceUSERNAME
和PASSWORD
。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
像下面那样运行一个命令来授予来自特定IP的访问权。 (用您的凭证replaceUSERNAME
和PASSWORD
。)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
您可以用您的IPreplace1.2.3.4。 您可以多次运行上述命令,从多个IP进行GRANT访问。
您也可以为远程访问指定一个单独的USERNAME
& PASSWORD
。
你可以通过以下方式查看最终结
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