linux下配置mysql允许远程访问详解(改表法和权限法)

摘要: Linux服务器上安装了msyql数据库,在本地访问的时候可以访问,但是我想通过远程的方式访问的时候就不能访问了,查询资料后发现,Linux下MySQL默认安装完成后只有本地访问的权限,没有远程访问的权限。

需要你给指定用户设置访问权限才能远程访问该数据库。

一、改权限法:

1.在Linux上登录安装后的mysql数据库 /你的mysql客户端路径/mysql -uroot -p你的root用户密码

例如我的: /usr/local/mysql/bin/mysql -uroot -proot


2.   输入给root用户设置权限的命令行并回车

2.1  grant all privileges on *.* to 'root'@'%' identified by 'root'; 

2.2  flush privileges;  --强制刷新


这里的root代表root用户,最后的root代表root用户的密码,我这里用户名,密码都是root,中间的%号代表所有的ip地址都能远程访问,

如果你要针对某一台机器开放远程访问权限,那就把%换成哪台机器的ip地址,这样就只能这台机器远程访问linux下的mysql数据库了。


3.grant语句的其它使用方式等(只举其中以下使用案例说明)

grant all privileges on discuz.* to zyl@'123.123.123.123' identified by '123456';


上面的语句表示将discuz数据库的所有权限授权给 zyl这个用户,允许 zyl用户在123.123.123.123这个IP进行远程登陆,并设置zyl用户的密码为123。


下面逐一分析所有的参数:

all privileges 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限。例如:select,insert,update,delete,create,drop等,具体权限间用","半角逗号分隔。


discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。


zyl表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。


123.123.123.123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。如果是123.123.123.%的话 那么就表示

只要是IP地址前缀为“123.123.123.”的客户端都可以连接。如果是%,表示所有IP都有连接权限, %是通配符的意思。这也就是为什么在开启远程连接的时候,大部分人都直接把mysql库中user表的Host字段改成%的缘故,为了省事。


123456 为用户的密码。

执行了上面的语句后,再执行下面的语句,方可立即生效。

flush privileges;


具体可以参考以下两篇文章的说明

http://www.cnblogs.com/love540376/p/6420034.html


http://www.111cn.net/database/mysql/43323.htm



二、改表法:

操作非常简单,就5步骤,如下:

本文原文链接: http://www.2cto.com/database/201412/357165.html


1.进入 mysql:/usr/local/mysql/bin/mysql -u root -p

2.使用 mysql库 :use mysql;

3.查看用户表 :SELECT `Host`,`User` FROM user;

4.更新用户表 :UPDATE user SET `Host` = '%' WHERE `User` = 'root' and `Host` = 'localhost' LIMIT 1;

5.强制刷新权限 :flush privileges;


完成以上步骤即可远程连接数据库了,上边关键的一句是:UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;


其中%的意思是允许所有的ip远程访问,如果需要指定具体的某个ip就写上具体的ip即可

KO...

远程访问mysql速度很慢的解决方法
修改/etc/my.cnf或my.ini
[mysqld]下添加
skip-name-resolve
skip-grant-tables

windows系统的服务器下也是同样的配置的


2017-03-25 13:19:29补充的第一种的“改权限法” 现在对mysql数据库的系统内置的mysql库下的user表相比较以前有了进一步的认识了。。

如果对mysql库中的user表的字段比较熟悉的推荐直接改表法 如果是很熟悉user表中的字段的话 则直接设置权限法好了。


哦对了。。 另外补充一下mysql库中的user表的一些其它字段说明:

Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv等。。都是权限字段 字段类型为enum类型,mysql将这些权限字段的值设置为了N,Y两个值,N表示无权限,Y表示有权限。默认值是N。 如果将当前用户的Select_priv设置为N 并且flush privileges后 那么当前用户就没有了查询权限了。

OK 所以说 对mysql库的user表的字段比较熟悉的话 直接更改表就好啦。。


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与