Mysql远程访问权限
在阅读本文时,推荐先走读完浅谈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远程访问权限相关推荐
- MySQL远程访问权限,允许远程连接的开启
MySQL远程访问权限,允许远程连接的开启 1.登陆mysql数据库 mysql -u root -p 查看user表 www.2cto.com mysql> us ...
- 开启MySQL远程访问权限 允许远程连接
开启MySQL远程访问权限 允许远程连接 1.登陆mysql数据库 mysql -u root -p 2.使用数据库 use mysql; 3.查看数据库所有用户和密码 select host,use ...
- mysql远程访问权限_MYSQL开启远程访问权限的方法
1.登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql; Database changed mysql> select host,us ...
- mysql远程访问权限开启
怎么给mysql开启远程访问权限 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改项,从"localhost&qu ...
- MySQL远程访问权限的设置
今儿有位同事提出,一套MySQL 5.6的环境,从数据库服务器本地登录,一切正常,可是若从远程服务器访问,就会报错, ERROR 1045 (28000): Access denied for use ...
- 怎样允许远程访问mysql_如何开启MySQL远程访问权限 允许远程连接
1.改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...
- Ubuntu 16.04 设置MySQL远程访问权限
第一步:修改配置文件的端口绑定 打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径. sud ...
- Linux配置MySQL远程访问权限
1.修改配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf; 然后注释(#)掉 "bind 127.0.0.1"这一行 2.授权roo ...
- linux下安装jdk, mysql,tomcat等application示例,并且开启MySQL远程访问权限
Linux软件安装 jdk,mysql,tomcat 软件安装:软件在阿里云盘下载:30天内有效,如果过期,请联系我 https://www.aliyundrive.com/s/mKjz8t8oF9M ...
最新文章
- springer link:find the journals you need
- html from嵌套from
- 大数据职业理解_数据分析师真有那么好?其实正在面临3大职业困境
- 认真,respect!
- Flutter之ScrollView简析
- Windows Server 2012 虚拟化实战:网络(一)
- 张飞实战电子1-31部 和硬件工程师90天学习资料及笔记汇总
- 卖计算机配件的二手平台,电脑哪些配件适合买二手,哪些最好入新?
- CI第一篇 Jenkins+github fir im 蒲公英pgyer com
- CIO40知识星球:越高级越自律
- JAVA毕业设计淮安城市开放大学实习实训管理系统计算机源码+lw文档+系统+调试部署+数据库
- 【转】C++ std::tr1::shared_ptr使用
- 万豪集团发布《重塑餐饮业:行业洞察》报告,分享十大新兴趋势
- (软件构造) 关于JDK版本更换问题(附jdk下载链接以及jdk环境变量全教程)
- ros中的电机速度控制_ROS与duckietbot指南-线速度和角速度校准
- matlab2016agui出错,关于 gui运行出错的问题
- Lingo学习笔记(二)——常用函数
- Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
- Python调用Linux终端命令---转自本人的私人博客
- MCCSframework 教程(一)介绍
热门文章
- 火影推荐程序连载16-聊聊前端监控——错误监控篇
- HIVE实现pivot函数
- 【socket】 unix域套接字(socketpair )通信|socketpair和pipe的区别|进程间通信-Unix domain socket
- 经常熬夜的MM必学的皮肤保养技巧
- 动态规划之青蛙跳台阶的应用(把数字翻译成字符串)
- spring整合redis分片
- spring注入数组
- UE4 去除不正确的水面倒影以及不完整镜头轮廓
- 数据库连接池中的maxIdle,MaxActive,maxWait参数
- illustrator插件--常用功能开发--绘制外箱--js脚本开发--AI插件