当前位置:  开发笔记 > 后端 > 正文

授予从任何IP地址远程访问MySQL数据库的权限

如何解决《授予从任何IP地址远程访问MySQL数据库的权限》经验,为你挑选了13个好方法。

我知道这个命令:

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

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



1> Ariel..:
TO 'user'@'%'

%是一个通配符 - 如果需要,你也可以做'%.domain.com'或者'%.123.123.123'做类似的事情.


你必须使用"刷新权限"; 使更改生效

2> 小智..:

启用远程访问(授权)主页/教程/ Mysql /启用远程访问(授权)如果您尝试从远程计算机连接到您的mysql服务器,并遇到如下错误,本文适合您.

ERROR 1130(HY000):主机"1.2.3.4"不允许连接到此MySQL服务器

更改mysql配置

从编辑mysql配置文件开始

vim /etc/mysql/my.cnf

注释掉以下几行.

#bind-address           = 127.0.0.1
#skip-networking

如果您没有找到skip-networking line,请添加并注释掉它.

重启mysql服务器.

~ /etc/init.d/mysql restart

更改GRANT权限

您甚至可能会惊讶地看到,即使在上述更改后,您仍未获得远程访问权限或访问权限但无法访问所有数据库.

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

运行如下命令以从所有计算机访问.(替换USERNAMEPASSWORD凭证书.)

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

运行如下命令以从特定IP进行访问.(替换USERNAMEPASSWORD凭证书.)

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

您可以用您的IP替换1.2.3.4.您可以多次运行上述命令以从多个IP进行GRANT访问.

您还可以指定单独的USERNAME&PASSWORD进行远程访问.

您可以通过以下方式检查最终结

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

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

mysql> FLUSH PRIVILEGES;

测试连接

从终端/命令行:

mysql -h HOST -u USERNAME -pPASSWORD

如果你得到一个mysql shell,别忘了运行show databases; 检查您是否拥有远程计算机的权限.

奖金提示:撤销访问权限

如果您不小心授予用户访问权限,那么最好将撤销选项放在手边.

以下将撤消所有计算机上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权限,则可以.它完全没有特权.我不确定它是否可以撤销.


请注意,我必须更改`/ etc/mysql/mysql.conf.d/mysqld.cnf`文件而不是`/ etc/mysql/my.cnf`来注释掉`bind-address`部分.缺少`#skip-networking`行,添加和注释该行不应该有效.

3> Waqas..:

假设完成上述步骤并且可以远程访问MySql端口3306; 不要忘记在mysql配置文件中绑定公共IP地址.

例如在我的ubuntu服务器上:

#nano /etc/mysql/my.cnf

在文件中,搜索[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

.....    
......

如果选择,您可以删除localhost(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


`bind-address`指令确定mysql _server_监听的IP地址; _not_服务器接受连接的IP地址.

4> Dev..:

对于任何弄乱这个的人来说,这就是我如何授予权限,希望它能帮到某个人

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

如上所述%是通配符,这将允许任何IP地址连接到您的数据库.我在这里做的假设就是当你连接时你会有一个名为的用户root(虽然这是默认的).输入root密码,你就可以了.请注意,我'在用户root周围没有单引号().



5> harishannam..:

需要配置文件更改才能通过localhost启用连接.

要通过远程IP连接,请以"root"用户身份登录并在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;

这将创建一个可在localhost和远程IP上访问的新用户.

另请在/etc/mysql/my.cnf中的my.cnf文件中注释以下行

bind-address = 127.0.0.1

使用重启你的mysql

sudo service mysql restart

现在您应该能够远程连接到您的mysql.


这不回答这个问题.

6> Tomasz Czech..:

使用此命令:

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

然后:

FLUSH PRIVILEGES; 

然后注释掉文件"/etc/mysql/mysql.conf.d/mysqld.cnf"中的以下行(是必需的!):

bind-address = 127.0.0.1 

适合我!



7> 小智..:

运行以下命令:

$ 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   

你应该能够连接.



8> 未来陆家嘴顶尖的投资人..:

您可以通过此命令解决MariaDB的问题:

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

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


在mysql中,你需要做的是(1).change my.cnf内容(2).grant remote user(3)处理你的防火墙来监听3306端口.

9> Imtiaz Shaki..:

为了能够通过任何IP地址与您的用户连接,请执行以下操作:

允许mysql服务器接受远程连接。对于此打开的mysqld.conf文件:

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

搜索以“ bind-address”开头的行,并将其值设置为0.0.0.0

bind-address                    = 0.0.0.0

最后保存文件。

现在,使用systemd或使用旧service命令重新启动mysql服务器。这取决于您的操作系统:

sudo systemctl restart mysqld.service

最后,mysql服务器现在可以接受远程连接。

现在,我们需要创建一个用户并为其授予权限,这样我们就可以使用该用户远程登录。

以root或具有root特权的任何其他用户连接到MySQL数据库。

mysql -u root -p

现在,在localhost和'%'通配符中都创建所需的用户,并按原样授予所有数据库的权限。

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

然后,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

最后不要忘记刷新权限

FLUSH PRIVILEGES;

希望这可以帮助 ;)



10> 小智..:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'



11> 小智..:

要远程访问数据库Mysql服务器8:

CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;



12> Rifaideen..:

使用管理员用户启动MYSQL

mysql -u admin-user -p(在提示时输入密码)

创建一个新用户:

创建用户'newuser'@'%'由'密码'标识;(%-> anyhost)

授予特权:

对db_name进行GRANT SELECT,DELETE,INSERT,UPDATE。*到'newuser'@'%';;

冲洗特权;

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



13> Tejas Tank..:
编辑文件:

/etc/mysql/percona-server.cnf

在文件中追加以下代码。

[mysqld] bind-address = 0.0.0.0

创建用于远程访问的用户。
$ mysql -u root -p      
mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank';   
mysql> FLUSH PRIVILEGES;    
mysql> exit

所有linux服务器都能正常工作,

对于MSWin c:\查找安装位置\文件路径

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有