摘要: 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表的字段比较熟悉的话 直接更改表就好啦。。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论