如何让mysql数据库允许被远程连接访问?

如何让mysql数据库允许被远程连接访问?,第1张

第一:更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。 \x0d\x0a或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。 \x0d\x0a第二:在系统防火墙添加例外端口:3306,并允许例外。 \x0d\x0a\x0d\x0a错误提示: \x0d\x0aERROR 1130: Host '192.168.1.3is not allowed to connect to this MySQL server \x0d\x0a的解决方法: \x0d\x0a1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" \x0d\x0a1.mysql -u root -pvmware\x0d\x0amysql>use mysql\x0d\x0amysql>update user set host = '%where user = 'root'\x0d\x0amysql>select host, user from user \x0d\x0a\x0d\x0a2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 \x0d\x0a\x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%IDENTIFIED BY 'mypasswordWITH GRANT OPTION\x0d\x0a如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 \x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3IDENTIFIED BY 'mypasswordWITH GRANT OPTION\x0d\x0a\x0d\x0a3.在window自带的防火墙里的例外添加3306端口 \x0d\x0a\x0d\x0a总结: \x0d\x0amysql -u root -p \x0d\x0amysql>use mysql\x0d\x0amysql>select 'hostfrom user where user='root'\x0d\x0amysql>update user set host = '%where user ='root'\x0d\x0amysql>flush privileges\x0d\x0amysql>select 'host from user where user='root'\x0d\x0a第一句是以权限用户root登录 \x0d\x0a第二句:选择mysql库 \x0d\x0a第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称) \x0d\x0a第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址 \x0d\x0a第五句:刷新MySQL的系统权限相关表 \x0d\x0a第六句:再重新查看user表时,有修改。。 \x0d\x0a重起mysql服务即可完成。

首先让我们看一下远端MYSQL的用户表

mysql>select host,user

->from user

+---------------+------+

| host | user |

+---------------+------+

| localhost | root |

+---------------+------+

5 rows in set (0.00 sec)

由此我们可以看到root用户仅允许本地(localhost)登录,如果要远程登录该mysql服务器的话,就需要新建一个普通权限的用户,新建用户使用如下命令

mysql>grant select,update,insert,delete on mas.* to duan@localhost identified by "123456"

这句命令的意思是:新建用户duan,并且只允许该用户在本地(localhost)登录,密码是123456,并且赋予它对mas库中所有表select,update,insert的权限。我们在这有一个mas库,所以用mas.*代表mas库下的所有表。如果要对所有的表,包括mysql库的表都有 *** 作权限则可以替换成“*.*”.

现在该duan用户,已经可以登录mysql了,但是也还是只能本地登录。若要duan用户可以远程登录mysql,则还需要如下命令:

mysql>update user set host = '%' where user = 'duan'

基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面是基本的步骤:\x0d\x0a1、登录到MySQL中,为root进行远程访问的授权,执行下面的命令:\x0d\x0a\x0d\x0amysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"\x0d\x0amysql>flush privileges\x0d\x0a\x0d\x0a第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:\x0d\x0aGRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root"\x0d\x0a第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。\x0d\x0a\x0d\x0a2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:\x0d\x0a\x0d\x0a[ruby] view plain copy print?\x0d\x0abind-address = 127.0.0.1 \x0d\x0a\x0d\x0a将其注释掉,保存。\x0d\x0a\x0d\x0a3、重新启动MySQL服务器。执行下面的几条命令即可:\x0d\x0a# /usr/bin/mysqladmin -u root -p shutdown\x0d\x0a# /usr/bin/mysqld_safe &\x0d\x0a\x0d\x0a如果mysqladmin和mysql_safe不在/usr/bin目录中,可以通过whereis命令查找,例如:\x0d\x0a# whereis mysqladmin\x0d\x0amysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz\x0d\x0a\x0d\x0a执行完上面的三步后,就可以通过远程机器连接了数据库了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7217316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存