当前位置: 首页 > news >正文

如何允许远程访问MySQL

许多网站和应用程序一开始都将web服务器和数据库后端托管在同一台机器上。不过,随着时间的推移,这样的设置可能会变得繁琐和难以扩展。一种常见的解决方案是通过设置远程数据库来分离这些功能,允许服务器和数据库在各自的机器上按自己的速度增长。

用户在尝试建立远程MySQL数据库时遇到的一个更常见的问题是,他们的MySQL实例只被配置为监听本地连接。这是MySQL的默认设置,但它不适用于远程数据库设置,因为MySQL必须能够监听到服务器的外部 IP地址。为此,打开“mysqld.cnf”文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到以bind-address开头的行。它看起来像这样:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
. . .

默认情况下,该值设置为127.0.0.1,这意味着服务器将只查找本地连接。你需要改变这个指令引用外部IP地址。为了解决问题,你可以将此指令设置为通配符IP地址,*::0.0.0.0:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

**注意:**在某些版本的MySQL中,bind-address指令可能默认不在mysqld.cnf文件中。在这种情况下,将下面这行代码添加到文件的底部:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
bind-address            = 0.0.0.0

修改这行代码后,保存并关闭文件(CTRL + XY,然后回车,如果你用nano编辑它)。
然后重启MySQL服务,这样对mysqld.cnf的修改才能够生效:

sudo systemctl restart mysql

如果你有一个已经存在的MySQL用户帐户,你打算用它从远程主机连接数据库,你需要重新配置该帐户以从远程服务器连接,而不是从localhost连接。用你的MySQL root用户或者其他有特权的用户账号打开MySQL客户端:

sudo mysql

如果你为root开启了密码身份验证,那么你需要使用以下命令来访问MySQL shell:

mysql -u root -p

要更改用户的主机,可以使用MySQL的RENAME user 命令。运行以下命令,确保将==sammy==更改为MySQL用户帐户的名称,并将==remote_server_ip==更改为远程服务器的IP地址:

RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';

或者,你可以创建一个新用户帐户,只需要使用以下命令从远程主机连接:

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';

注意:此命令将创建一个使用MySQL默认身份验证插件caching_sha2_password进行身份验证的用户。然而,在某些版本的PHP中有一个已知的问题,可能会导致这个插件出现问题。

如果您计划在PHP应用程序(例如phpMyAdmin)中使用此数据库,则可能希望创建一个远程用户,该用户将使用旧的身份验证,但仍然安全,取而代之的是mysql_native_password插件:

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

如果你不确定,你总是可以创建一个使用caching_sha2_plugin进行身份验证的用户,然后使用以下命令ALTER它:

ALTER USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

然后授予新用户满足您特定需求的适当权限。下面的例子授予用户全局权限来CREATEALTERDROP数据库、表和用户,以及从服务器上的任何表中INSERTUPDATEDELETE数据。它还允许用户使用SELECT查询数据,使用REFERENCES关键字创建外键,并使用RELOAD特权执行FLUSH操作。但是,您应该只授予用户所需的权限,因此可以根据需要调整您自己的用户权限。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'remote_server_ip' WITH GRANT OPTION;

接下来,运行FLUSH PRIVILEGES命令是良好的实践。这将释放服务器通过前面的CREATE USERGRANT语句缓存的任何内存:

FLUSH PRIVILEGES;

然后你可以退出MySQL客户端:

exit

最后,假设你已经在数据库服务器上配置了防火墙,你还需要打开3306端口——MySQL的默认端口——以允许流量访问MySQL。

如果您只计划从一台特定的机器访问数据库服务器,则可以使用以下命令授予该机器远程连接数据库的独占权限。确保“= = remote_IP_address = =”替换为实际的机器的IP地址与计划:

sudo ufw allow from remote_IP_address to any port 3306

如果将来需要从其他机器访问数据库,可以使用此命令授予它们临时访问权限。记住,包括各自的IP地址。

或者,你可以使用以下命令允许从* 任意 * IP地址连接到MySQL数据库:

警告:此命令将允许任何人访问您的MySQL数据库。如果你的数据库中有任何敏感数据,不要运行它。联系:

sudo ufw allow 3306

接下来,尝试从另一台机器远程访问数据库:

注意:如果您添加了一个防火墙规则,只允许来自特定IP地址的连接,则必须尝试访问与该地址相关联的机器的数据库。

mysql -u user -h database_server_ip -p

如果你能够访问数据库,这就确认了配置文件中的bind-address指令出了问题。请注意,将bind-address设置为0.0.0.0是不安全的,因为它允许从任何IP地址连接到你的服务器。另一方面,如果你仍然无法远程访问数据库,那么可能是其他原因导致了问题。

相关文章:

如何允许远程访问MySQL

许多网站和应用程序一开始都将web服务器和数据库后端托管在同一台机器上。不过,随着时间的推移,这样的设置可能会变得繁琐和难以扩展。一种常见的解决方案是通过设置远程数据库来分离这些功能,允许服务器和数据库在各自的机器上按自己的速度增…...

001图机器学习与图神经网络简介

文章目录 一. 无处不在的图二. 如何对图数据做信息挖掘三. 图神经网络四. 图机器学习常用的编程工具五. 图的可视化工具六. 常见的图数据库七. 图机器学习的应用举例八. 结束语 一. 无处不在的图 一切具有关联关系的数据都可以用图来表示。比如:交通网、知识图谱、…...

万级数据优化EasyExcel+mybatis流式查询导出封装

文章目录 前言.万级数据优化一. 直接上流式查询封装工具代码二. 传统分页导出查询三. 流式查询概念游标查询 前言.万级数据优化 我们不妨先给大家讲一个概念,利用此概念我们正好给大家介绍一个数据库优化的小技巧: 需求如下:将一个地市表的数…...

Unity——脚本序列化

在介绍序列化之前,我们先来了解一下为什么要对数据进行序列化 数据序列化有以下几个主要的应用场景和目的: 1. 持久化存储:序列化可以将对象或数据结构转换为字节序列,使得其可以被存储在磁盘上或数据库中。通过序列化&#xff…...

es(Elasticsearch)介绍

学习es可以参考mysql(相比mysql而言,es所需的cpu、内存更多) 什么是Elasticsearch Elasticsearch简称es,是由Elastic和search组成。Elastic的意思是有弹性的,search的意思是搜索。 弹性:es是一个天生支持分…...

C++中使用 do…while 循环

C中使用 do…while 循环 在有些情况(如程序清单 6.8 所示的情况)下,您需要将代码放在循环中,并确保它们至少执行一次。此时 do…while 循环可派上用场。 do…while 循环的语法如下: do {StatementBlock; // executed…...

开源vue动态表单组件

一、项目简介 vueelement的动态表单组件,拖拽组件到面板即可实现一个表单 二、实现功能 支持拖拽 支持输入框 支持文本框 支持数字输入框 支持下拉选择器 支持多选框 支持日期控件 支持开关 支持动态表格 支持上传图片 支持上传文件 支持标签 支持ht…...

怎么从0到1创建一个PHP框架-1?

写在前面 本人开发的框架在2021年年初开发完成,后面没有再做过任何维护和修改。是仅供大家参考交流的学习项目,请勿使用在生产环境,也勿用作商业用途。 框架地址: https://github.com/yijiebaiyi/fast_framework 整体思路 开发…...

Qt无边框青绿色主题

收费产品,学生党、闹眼子党勿扰 收费金额:500元 1 概述 最近因项目需要,写了一个炫酷的青绿色、无边框界面,和3DSMax的界面有点类似。 2 截图 首先看看3DSMax的界面 不知道大家看出来没,这个ui其实很简单&#xff…...

200 套基于Java开发的Java毕业设计实战项目(含源码+说明文档)

文章目录 简介前言第一部分第二部分部分截图源码咨询 简介 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 前言 对于java方向的毕业设计题目选题&#xf…...

Ansible学习笔记7

user模块: user模块用于管理用户账户和用户属性。 如果是windows要换一个win_user模块。 创建用户:present: [rootlocalhost ~]# ansible group1 -m user -a "nameaaa statepresent" 192.168.17.106 | CHANGED > {"ansi…...

Python3 对列表、字典以及二者的嵌套数据(JSON)格式排序

在 Python 中,列表和字典都是基础数据类型,这两种数据类型会通过相互嵌套和多个层级形成复杂的数据类型,类似 JSON 数据格式,对列表和字典排序其实可以类比是对 JSON 排序。 列表排序 列表可以使用 sorted() 函数排序&#xff1…...

如何在B站进行学习直播

诸神缄默不语-个人CSDN博文目录 会根据我使用的情况进行持续更新 文章目录 1. 电脑 - 哔哩哔哩直播姬1. 软件的基础使用2. 素材1. 摄像头2. 窗口捕捉3. 游戏进程图片文字浏览器多媒体 3. H5插件其他注意事项 2. 手机直播3. iPad直播 1. 电脑 - 哔哩哔哩直播姬 1. 软件的基础使…...

老卫带你学---windows上安装minikube

老卫带你学—windows上安装minikube 1. 下载minikube https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe2.安装好后,将对应的目录添加env path 3. minikube start --kubernetes-versionv1.23.8 --image-mirror-countrycn...

Neo-reGeorg隧道搭建

目录 Neo-regeorg前言 环境搭建 具体使用 kail安装Neo-reGeorg kail内生成webshell并设置密码 kail与win10连接 windows server内打开服务 kail虚拟机访问windows server以及所在的内网 Neo-regeorg前言 regeorg为reDuh的升级版,主要功能就是把内网服务器的…...

Elasticsearch 7.6 - API高阶操作篇

ES 7.6 - API高阶操作篇 分片和副本索引别名添加别名查询所有别名删除别名使用别名代替索引操作代替插入代替查询 场景实操 滚动索引索引模板创建索引模板查看模板删除模板 场景实操一把索引的生命周期数据迁移APIGEO(地理)API索引准备矩形查询圆形查询多边形查询 自定义分词器…...

软件第三方验收测评介绍

软件第三方验收测试 软件项目验收测试介绍: 软件项目验收测试是部署软件之前的最后一个测试操作,是对系统进行全面的测试,以验证其是否符合合同要求,出具第三方测试报告,为系统验收提供依据。 验收测试的目的是&…...

HarmonyOS—使用Web组件加载页面

页面加载是 Web 组件的基本功能。根据页面加载数据来源可以分为三种常用场景,包括加载网络页面、加载本地页面、加载 HTML 格式的富文本数据。 页面加载过程中,若涉及网络资源获取,需要配置ohos.permission.INTERNET网络访问权限。 加载网络…...

Redis 缓存穿透、击穿、雪崩

一、缓存穿透 1、含义 缓存穿透是指查询一个缓存中和数据库中都不存在的数据,导致每次查询这条数据都会透过缓存,直接查库,最后返回空。 2、解决方案 1)缓存空对象 就是当数据库中查不到数据的时候,我缓存一个空对象…...

设计模式-原型模式详解

文章目录 前言理论基础1. 原型模式定义2. 原型模式角色3. 原型模式工作过程4. 原型模式的优缺点 实战应用1. 原型模式适用场景2. 原型模式实现步骤3. 原型模式与单例模式的区别 原型模式的变体1. 带有原型管理器的原型模式2. 懒汉式单例模式的原型模式实现3. 细粒度原型模式 总…...

如何快速实现swagger-jsdoc与TypeScript的完美集成:完整指南

如何快速实现swagger-jsdoc与TypeScript的完美集成:完整指南 【免费下载链接】swagger-jsdoc Generates swagger/openapi specification based on jsDoc comments and YAML files. 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-jsdoc 在现代化的API…...

MySQL新手必看:Navicat导入SQL文件报错1046?三步搞定数据库选择问题

MySQL图形化工具避坑指南:彻底解决1046报错与数据库选择问题 刚接触MySQL的开发者,十有八九会在第一次导入SQL文件时遇到那个令人困惑的弹窗——"Error Code: 1046. No database selected"。这个看似简单的提示背后,其实隐藏着MySQ…...

Tunasync镜像同步工具:清华大学TUNA团队的高效解决方案

Tunasync镜像同步工具:清华大学TUNA团队的高效解决方案 【免费下载链接】tunasync Mirror job management tool. 项目地址: https://gitcode.com/gh_mirrors/tu/tunasync Tunasync是清华大学TUNA团队开发的一款专业镜像同步管理工具,为开源社区提…...

Python点云数据处理避坑指南:pypcd与pypcd4库在Ubuntu下的安装与实战对比

Python点云数据处理避坑指南:pypcd与pypcd4库在Ubuntu下的安装与实战对比 在3D视觉、自动驾驶和机器人开发领域,点云数据处理是基础而关键的环节。Ubuntu作为主流的开发环境,配合Python生态中的pypcd和pypcd4库,为工程师提供了高…...

八股整理之JUC篇

怎么保证多线程安全?synchronized关键字:可以使用synchronized关键字来同步代码块或方法,确保同一时刻只有一个线程可以访问这些代码。对象锁是通过synchronized关键字锁定对象的监视器(monitor)来实现的。volatile关键字:volatil…...

写给前端的 CANN-ops-transformer:昇腾Transformer进阶算子库到底是啥?

写给前端的 CANN-ops-transformer:昇腾Transformer进阶算子库到底是啥? 之前有兄弟跑大模型,问我:“哥,我想 用 FlashAttention,但 ATB 太重了,有没有轻量点的库?” 好问题。今天来说…...

告别MainTest!用XML+CAPL在CANoe里做可视化勾选测试(附.can文件避坑指南)

告别MainTest!用XMLCAPL在CANoe里构建可视化勾选测试系统 在车载电子测试领域,CAPL脚本一直是工程师们的得力工具,但传统基于MainTest的测试架构存在明显局限——每次修改测试用例组合都需要重新编译脚本,这在快速迭代的开发环境中…...

【万字文档+源码】基于SpringBoot+vue社区药房系统 -可用于毕设-课程设计-练手学习

【万字文档源码】基于SpringBootvue社区药房系统 -可用于毕设-课程设计-练手学习 【万字文档源码】基于SpringBootvue社区药房系【万字文档源码】基于SpringBootvue社区药房系统 -可用于毕设-课程设计-练手学习 1.项目简介 药品对于每个国家,每个家庭,…...

零代码脚本神器:熊猫精灵脚本助手V3.6.4 --Ai找图找色多窗口驱动点击键鼠录制适合游戏自动化办公操作

🛠️ 软件核心定位熊猫精灵脚本助手V3.6.4是一款零代码可视化的自动化工具,主打后台多窗口异步操作,无需编程基础就能实现复杂的自动化流程,覆盖办公、游戏、模拟器、手机投屏等多场景需求,兼容Win7及以上系统&#xf…...

告别Office风格审美疲劳:用SARibbon给你的Qt应用换个WPS范儿的清爽界面

告别Office风格审美疲劳:用SARibbon给你的Qt应用换个WPS范儿的清爽界面 在软件开发领域,界面设计往往决定了用户的第一印象。对于使用Qt框架开发桌面应用的程序员来说,Ribbon界面已经成为现代办公软件的标配。然而,传统的Office风…...