Mysql远程访问权限

article/2025/5/19 2:23:49

在阅读本文时,推荐先走读完浅谈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注释去除就行。

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



http://chatgpt.dhexx.cn/article/Ve7fALkW.shtml

相关文章

Mysql远程访问限制ip

一、Mysql允许指定IP远程访问 1、登录mysql -u root -p 之后输入密码进行登陆 2、查看用户表 首先要先指定使用mysql数据库,然后再进行查询操作//进入mysql数据库 mysql> use mysqlmyql> select Host,User from user;下面的列表就是查询user表后可以访问…

CentOS7 开启mysql远程访问

一.开启mysql的远程访问权限 可以先查看下表的内容 1.用mysql自带的客户端连接mysql mysql mysql -uroot -p 输入root用户的密码 进入mysql命令行模式 mysql >select user,host from mysql.user; 2.如果要直接使用root用户远程连接,直接执行以下sql 方法一: mysql>upda…

MySQL设置远程访问权限

当我们在日常开发中;需要连接其他同事的数据库或者其他服务器的数据库;可能会出现以下情况 我们输入的用户和密码都正确;但是提示我们用户没有权限;这个用户指的是远程连接的电脑ip没有访问权限;不是mysql的用户没有权…

Mysql允许远程访问

目录 远程访问条件配置1、配置绑定地址2、授权用户改表授权 远程访问条件 mysql允许远程访问有两个必要条件 外部能访问到mysql开启的端口用户有权限访问 配置 1、配置绑定地址 mysql配置绑定的地址是127.0.0.1,只允许本机连接。为使其他主机可以访问mysql服务…

授权MySQL可以远程访问

MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.要实现远程访问必须给root修改可以远程访问的权限。 授权步骤: 1.进入数据库连接mysql -u root -p; use mysql; 2.查询用户表命令:select User,au…

配置MySQL远程访问

如果通过数据库客户端Navicat等 远程连接 MySQL,出现了 2003 错误,说明服务器上的数据库没有配置远程连接。 因为MySQL默认是只允许本地连接的。 远程连接MYSQL必须完成下面的配置。 1. 授权远程用户登录 # 在服务器上进入MySQL控制台 $ mysql -u roo…

Ubuntu设置MySQL远程访问

文章目录 一、设置mysql远程访问 -> 第一种方式二、设置mysql远程访问 -> 第二种方式三、Windows上MySQL管理器下载与远程访问使用方法下载与安装使用 一、设置mysql远程访问 -> 第一种方式 编辑mysql配置文件,把其中bind-address 127.0.0.1注释了 sudo…

MySQL远程访问配置

MySQL远程访问配置 1. 进入MySQL安装目录下的bin目录(如果配置过环境变量就直接到第二步) 2. 在地址栏输入cmd打开命令行窗口(如果配置过环境变量直接WinR输入cmd回车即可) 3. 输入命令mysql -uroot -p回车,然后输入…

远程访问Mysql

1.远程虚拟机登上mysql客户端,show databases查看有哪些数据库,use mysql进入该数据库 show tables;查看表 select user,host from user;看host属性,root用户只能在本地访问数据库。 更改host, 执行 update user set host% where userroot…

MySQL远程连接的设置

与SQL Server类似,MySQL在需要远程操纵其他电脑时,也需要对其做远程连接的相应设置,具体操作如下。首先,我们需要解决不能远程访问的问题。在控制台命令中输入命令: mysql –uroot –p(对应安装软件时设置的密码&#…

mysql远程访问

问题场景: windows局域网内访问mysql数据库 连接失败报10060 原因分析: 查阅了一些资料,问题出现在网络访问上。 mysql远程访问权限 mysql本身设定有访问权限,一般来讲安装的时候如果没有允许远程访问,非localhost…

Docker——四种网络模式解析

Docker四种网络模式解析 网络资源详解——Docker0网卡与四种网络模式Docker0网卡及四种网络模式host模式container模式none模式bridge模式网络模式的使用方法——指定模式和指定ip 网络资源详解——Docker0网卡与四种网络模式 安装完Docker时,会发现系统自动创建了…

Docker容器网络模式

目录 一、Docker网络实现原理 二、Docker的网络模式 1、Host模式 2、Container模式 3、none模式 4、bridger模式 bridge模式原理 5、overlay模式 6、自定义网络模式 为什么要自定义网络模式 创建自定义网络 删除docker网络 创建指定容器的ip 暴露端口 把宿主机文件传…

你应该学会的docker网络模式

学习Docker网络的七种模式 0. 双网卡1. the default Bridge2. User-defined 自定义桥接网络3. the Host3. MacVLAN3. the macVLAN(802.1q)4. the IPVlan (L2)5. the IPVlan (L3)6. Overlay7. None 0. 双网卡 Host: Linux vm 网卡:NATHost-on…

Docker系列(8) Docker网络(2)-- Docker四种网络模式简介

本篇介绍Docker单机网络的四种模式 Docker网络模式配置说明host模式–nethost容器和宿主机共享Network namespacecontainer模式–netcontainer:NAME_or_ID容器和宿主机共享Network namespacenone模式–netnone容器有独立的Network namespace,但并没有对其进行任何网…

docker 的网络模式

一、docker网络概述 1、docker网络实现的原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的…

Docker系列九:Docker网络模式详解及容器间通信

目录 一:前言 二:Docker的网络模式 2.1:bridge 网络模式(桥接模式) 2.2:host 网络模式 2.3:none网络模式 2.4:Container 网络模式 三:Docker自定义网络(推荐) 为容器扩容其他网络 断开…

Docker(十四):Docker:网络模式详解

Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面。 Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络,bridge(创…

docker网络模式 与 搭建nginx

目录 1. docker网络模式 2. 连接容器的三种方法 3. Docker Networking 3.1 创建网络 3.2 查看宿主机中创建的网络 3.3 删除网络 3.3 如何使用网络 4.搭建Nginx 1.准备工作 1.1 拉取镜像 1.2 在宿主机中创建挂载目录 2.准备2个tomcat 容器集群 3.准备 Nginx配置 3.…

Docker网络之网络模式简介

文章目录 默认创建的网络模式网络模式bridge模式查看详细信息 host模式none 模式container模式 默认创建的网络模式 启动docker后,我们使用一下命令查看网络模式 docker network ls我们发现了他默认创建了三种网络模式bridge、host、none,除此之外还有…