在阅读本文时,推荐先走读完浅谈Mysql权限控制一文。

Mysql启动默认的端口3306是打开的,此时打开了mysqld的网络监听,允许用户远程通过账号密码连接本地数据库,Mysql数据库默认是允许远程用户连接服务器的。

那么,为什么你似乎没有修改默认配置,而且本地也还能连接,可是就远程连接不了呢?其实,这是你的账户问题,在Mysql,一个用户不是由账户名区别开的,而是由’user'@'host'区别开的,什么意思呢?

在浅谈Mysql权限控制中我们说过,Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,其中最为重要的是mysql.user表,user表中记录允许连接到服务器的账号信息,通过对user中的字段观察可以发现,user表中使用host+user的联合主键,简单的理解就是说'user'@'localhost'和'user'@'%'是两个不同的账号,user表中的host、user、password(5.7中为authentication_string)分别表示主机名、用户名和密码。当用户与服务器之间建立连接时,输入的账户信息中的用户名称、主机名和密码必须匹配user表中对应的字段,只有三个值都匹配的时候,才允许连接的建立。这3个字段的值就是创建账户时保存的账户信息。

其实上,在修改用户密码时,实际就是修改usesr表的password(5.7中为authentication_string)字段的值。

而在我们常说的允许远程访问,实际上就是修改user表中user和host的关系,下面我们看下常用的两种方法:

1.直接修改user表

我们首先查看数据库mysql.user信息:

尝试远程登录:

修改user表信息:

update user set host='%' where user='root' and host='localhost';

说明:%表示允许所有的主机连接,也可以直接指定ip。

由于这里是直接修改权限表信息,还需要刷新权限信息使用权限更新到缓存:

flush privileges;

远程登录:

登录成功!可以看出,这种方式实现是上在修改user表中root的连接主机信息,我们再来看第二种方式。

2.grant语句允许远程连接

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

较于熟悉Mysql的读者可以看出,上述语句实际上是新建一个用户名称为root,连接主机为允许所有主机(这时也可以指定主机,即将%替换为指定主机来限制访问),密码为youpassword的用户,我们来运行查看结果,为了避免出错,我们将原root的连接主机还原为localhost再进行演示。

使用grant语句:

注意,这里是不需要flush privilege;来刷新权限信息的,因为grant语句会自动刷新到缓存,我看到很多文章都说要刷新权限,那是因为对Mysql权限操作不了解。而在这里我们也能看到,该grant语句已经建立一个新的用户,我们再次进行远程连接时,实际上是使用上图中最后一个用户在登录,上图中第一个root用户密码为root,最后一个root用户密码为youpassword,我们只要远程登录测试便知登录用户,为了演示明显,这里使用密码显式登录,正常情况下请使用密码隐式登录:

可以看出,该方法事实上是新建一个允许所有主机远程连接的新用户。

对于使用grant语句创建新用户的语法,请阅读Mysql账户创建及删除一文。

后记:在文章的最开头,我们从数据库层面说了Mysql默认是允许用户远程访问的,在基于安全的考虑下,我们有时不希望用户远程访问,怎么办呢?我们只需要将my.cnf文件中的skip-networking注释去除就行。

好了,今天的分享就到这里了,由于是个人整理总结,难免会出错,欢迎大家批评指正,万般感谢

Mysql远程访问权限相关推荐

  1. MySQL远程访问权限,允许远程连接的开启

    MySQL远程访问权限,允许远程连接的开启   1.登陆mysql数据库        mysql -u root -p    查看user表  www.2cto.com   mysql> us ...

  2. 开启MySQL远程访问权限 允许远程连接

    开启MySQL远程访问权限 允许远程连接 1.登陆mysql数据库 mysql -u root -p 2.使用数据库 use mysql; 3.查看数据库所有用户和密码 select host,use ...

  3. mysql远程访问权限_MYSQL开启远程访问权限的方法

    1.登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql; Database changed mysql> select host,us ...

  4. mysql远程访问权限开启

    怎么给mysql开启远程访问权限 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改项,从"localhost&qu ...

  5. MySQL远程访问权限的设置

    今儿有位同事提出,一套MySQL 5.6的环境,从数据库服务器本地登录,一切正常,可是若从远程服务器访问,就会报错, ERROR 1045 (28000): Access denied for use ...

  6. 怎样允许远程访问mysql_如何开启MySQL远程访问权限 允许远程连接

    1.改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  7. Ubuntu 16.04 设置MySQL远程访问权限

    第一步:修改配置文件的端口绑定 打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径. sud ...

  8. Linux配置MySQL远程访问权限

    1.修改配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf; 然后注释(#)掉 "bind 127.0.0.1"这一行 2.授权roo ...

  9. linux下安装jdk, mysql,tomcat等application示例,并且开启MySQL远程访问权限

    Linux软件安装 jdk,mysql,tomcat 软件安装:软件在阿里云盘下载:30天内有效,如果过期,请联系我 https://www.aliyundrive.com/s/mKjz8t8oF9M ...

最新文章

  1. springer link:find the journals you need
  2. html from嵌套from
  3. 大数据职业理解_数据分析师真有那么好?其实正在面临3大职业困境
  4. 认真,respect!
  5. Flutter之ScrollView简析
  6. Windows Server 2012 虚拟化实战:网络(一)
  7. 张飞实战电子1-31部 和硬件工程师90天学习资料及笔记汇总
  8. 卖计算机配件的二手平台,电脑哪些配件适合买二手,哪些最好入新?
  9. CI第一篇 Jenkins+github fir im 蒲公英pgyer com
  10. CIO40知识星球:越高级越自律
  11. JAVA毕业设计淮安城市开放大学实习实训管理系统计算机源码+lw文档+系统+调试部署+数据库
  12. 【转】C++ std::tr1::shared_ptr使用
  13. 万豪集团发布《重塑餐饮业:行业洞察》报告,分享十大新兴趋势
  14. (软件构造) 关于JDK版本更换问题(附jdk下载链接以及jdk环境变量全教程)
  15. ros中的电机速度控制_ROS与duckietbot指南-线速度和角速度校准
  16. matlab2016agui出错,关于 gui运行出错的问题
  17. Lingo学习笔记(二)——常用函数
  18. Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
  19. Python调用Linux终端命令---转自本人的私人博客
  20. MCCSframework 教程(一)介绍

热门文章

  1. 火影推荐程序连载16-聊聊前端监控——错误监控篇
  2. HIVE实现pivot函数
  3. 【socket】 unix域套接字(socketpair )通信|socketpair和pipe的区别|进程间通信-Unix domain socket
  4. 经常熬夜的MM必学的皮肤保养技巧
  5. 动态规划之青蛙跳台阶的应用(把数字翻译成字符串)
  6. spring整合redis分片
  7. spring注入数组
  8. UE4 去除不正确的水面倒影以及不完整镜头轮廓
  9. 数据库连接池中的maxIdle,MaxActive,maxWait参数
  10. illustrator插件--常用功能开发--绘制外箱--js脚本开发--AI插件