返回顶部
首页 > 资讯 > 数据库 >MySQL 8.0中如何管理端口
  • 147
分享到

MySQL 8.0中如何管理端口

2023-06-14 06:06:39 147人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关MySQL 8.0中如何管理端口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在Mysql 5.7

这篇文章将为大家详细讲解有关MySQL 8.0中如何管理端口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

前言

下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在Mysql 5.7及之前版本,出现“too many connection”报错,超级用户root也无法登录上去,除了重启实例,没有其他更好的解决办法;不过在mysql 8.0版本中,是对连接管理做了一些优化,下面我们就来看一下。

ERROR 1040 (HY000): Too many connections

连接管理

在Mysql 8.0版本中,对连接管理这一块,是先后做了两个比较大的改变:一个是允许额外连接,另一个是专用的管理端口。

额外连接

在MySQL 8.0版本中,在当前连接数达到最大连接数时,服务端允许1个额外连接,可以让具有CONNECTION_ADMIN权限的用户连接进来,下面简单测试一下。

(1)为了方便测试,先调整最大连接数

mysql> set global max_connections=3;Query OK, 0 rows affected (0.00 sec)

(2)多开几个会话,以达到最大连接数

mysql> show processlist;+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| Id | User  | Host  | db | Command | Time | State   | Info  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| 15 | event_scheduler | localhost | NULL | Daemon | 154190 | Waiting on empty queue | NULL  || 54 | root  | localhost | NULL | Query | 0 | starting  | show processlist || 55 | test  | 127.0.0.1:59120 | NULL | Sleep | 19 |   | NULL  || 56 | test  | 127.0.0.1:59136 | NULL | Sleep | 9 |   | NULL  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+4 rows in set (0.00 sec)mysql> show global status like 'threads_connected';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Threads_connected | 3 |+-------------------+-------+4 rows in set (0.01 sec)

(3)普通用户test尝试连接,报错too many connections

$ mysql -utest -p -h227.0.0.1 -P10080Enter passWord: ERROR 1040 (08004): Too many connections

(4)超级用户root尝试连接成功

$ mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 60Server version: 8.0.20 MySQL CommUnity Server - GPLCopyright (c) 2000, 2020, oracle and/or its affiliates. All rights reserved.Oracle is a reGIStered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

(5)再次查看当前连接数,为max_connections+1

+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| Id | User  | Host  | db | Command | Time | State   | Info  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| 15 | event_scheduler | localhost | NULL | Daemon | 155064 | Waiting on empty queue | NULL  || 54 | root  | localhost | NULL | Query | 0 | starting  | show processlist || 55 | test  | 127.0.0.1:59120 | NULL | Sleep | 893 |   | NULL  || 56 | test  | 127.0.0.1:59136 | NULL | Sleep | 883 |   | NULL  || 60 | root  | localhost | NULL | Sleep | 141 |   | NULL  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+5 rows in set (0.00 sec)mysql> show global status like 'threads_connected';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Threads_connected | 4 |+-------------------+-------+4 rows in set (0.00 sec)

(6)超级用户root再次尝试连接,也报错too many connections

$ mysql -uroot -pEnter password: ERROR 1040 (HY000): Too many connections

通过上面测试可知,在MySQL 8.0中,允许的连接数为max_connections+1,其中这1个额外连接,只允许具有CONNECTION_ADMIN权限的用户使用。通过这1个额外连接,DBA可以使用超级用户root连接,进行kill会话等管理操作,以避免直接重启实例,降低成本,提高效率。

管理端口

额外连接,在一定程度上,提供了出现too many connection问题时的临时解决手段,但额外数量只有1个,难免会有一些意外,出现类似"连接被抢用"、“终端异常掉线”等情况。因此,在MySQL 8.0.14版本中,又推出了一个非常重要的新特性——管理端口;它允许具有SERVICE_CONNECTION_ADMIN权限的用户,通过特定的IP和PORT连接上来,且没有连接数限制。

(1)先介绍下相关参数

admin_address:监听IP地址admin_port:监听端口create_admin_listener_thread:是否创建一个单独的线程来监听管理连接

(2)通过配置上述参数,即可启用管理端口

mysql> show global variables like 'admin%';+---------------+-----------+| Variable_name | Value |+---------------+-----------+| admin_address | 127.0.0.1 || admin_port | 33062 |+---------------+-----------+2 rows in set (0.00 sec)# netstat -lntp | grep 33062tcp 0 0 127.0.0.1:33062  0.0.0.0:*  LISTEN 20042/mysqld

(3)接下来进行测试

mysql> show processlist;+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| Id | User  | Host  | db | Command | Time | State   | Info  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| 15 | event_scheduler | localhost | NULL | Daemon | 168750 | Waiting on empty queue | NULL  || 54 | root  | localhost | NULL | Query | 0 | starting  | show processlist || 55 | test  | 127.0.0.1:59120 | NULL | Sleep | 14579 |   | NULL  || 56 | test  | 127.0.0.1:59136 | NULL | Sleep | 14569 |   | NULL  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+4 rows in set (0.00 sec)mysql> show global status like 'threads_connected';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Threads_connected | 3 |+-------------------+-------+1 row in set (0.00 sec)

(4)普通用户test尝试连接,报错too many connections

$ mysql -utest -p -h227.0.0.1 -P10080Enter password: ERROR 1040 (08004): Too many connections

(5)超级用户root尝试通过管理端口连接成功

$ mysql -uroot -p -h227.0.0.1 -P33062Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 62Server version: 8.0.20 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

(6)继续多开几个会话,使用超级用户root,通过管理端口连接成功,不受最大连接数max_connections限制

mysql> show processlist;+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| Id | User  | Host  | db | Command | Time | State   | Info  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+| 15 | event_scheduler | localhost | NULL | Daemon | 169035 | Waiting on empty queue | NULL  || 54 | root  | localhost | NULL | Query | 0 | starting  | show processlist || 55 | test  | 127.0.0.1:59120 | NULL | Sleep | 14864 |   | NULL  || 56 | test  | 127.0.0.1:59136 | NULL | Sleep | 14854 |   | NULL  || 62 | root  | 127.0.0.1:47660 | NULL | Sleep | 151 |   | NULL  || 63 | root  | 127.0.0.1:47760 | NULL | Sleep | 52 |   | NULL  || 64 | root  | 127.0.0.1:47768 | NULL | Sleep | 43 |   | NULL  || 65 | root  | 127.0.0.1:47780 | NULL | Sleep | 35 |   | NULL  || 66 | root  | 127.0.0.1:47790 | NULL | Sleep | 24 |   | NULL  || 67 | root  | 127.0.0.1:47800 | NULL | Sleep | 16 |   | NULL  || 68 | root  | 127.0.0.1:47808 | NULL | Sleep | 8 |   | NULL  |+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+11 rows in set (0.00 sec)mysql> show global status like 'threads_connected';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Threads_connected | 10 |+-------------------+-------+1 row in set (0.00 sec)

可以说,有了管理端口这个新功能,DBA再也不用担心too many connections的问题。

在MySQL 8.0版本中,为了应对too many connections的场景,先后推出了额外连接和管理端口两个新功能,可以让DBA方便、快速地解决问题;不过,这始终是一个临时应急手段,最根本的原因还是要排查应用端的配置(并发限流、SQL性能、连接池配置等等),以彻底规避此类问题。

关于“MySQL 8.0中如何管理端口”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 8.0中如何管理端口

本文链接: https://lsjlt.com/news/268668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 8.0中如何管理端口
    这篇文章将为大家详细讲解有关MySQL 8.0中如何管理端口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7...
    99+
    2023-06-14
  • MySQL 8.0新特性 — 管理端口的使用简介
    前言 下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现“too many connection”报错,超级用户root也无法登录上去,除了重启实例,没有...
    99+
    2022-05-27
    MySQL 8.0新特性 MySQL 管理端口
  • 如何使用MySQL 8.0用户和角色管理
    这篇文章主要为大家展示了如何使用MySQL 8.0用户和角色管理,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。MySQL8.0新加了很多功能,其中在用户管理中...
    99+
    2024-04-02
  • 译文 | MySQL 8.0 密码管理策略(一)
    作者:Sri Sakthivel 原文链接:https://www.percona.com/blog/enhanced-password-management-systems-in-mysql-8-part-1 MySQL 8.0 在...
    99+
    2019-02-21
    译文 | MySQL 8.0 密码管理策略(一)
  • mysql如何查询端口
    本文将为大家详细介绍“mysql如何查询端口”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“mysql如何查询端口”能够给你意想不到的收获,请大家...
    99+
    2024-04-02
  • mysql端口如何查看
    可通过三种方法查看 mysql 端口:使用 show variables 命令查看 port 变量;检查 mysql 配置文件中的 port = 行;使用 netstat 命令 gre...
    99+
    2024-06-14
    mysql linux macos
  • 如何在MySQL 8.0中隐藏字段
    这篇文章主要介绍了如何在MySQL 8.0中隐藏字段,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!基本概念隐藏字段需要在查询中进行显式引用,否则对查询而言是不可见的。MySQL 8.0.23 开始支持隐...
    99+
    2023-06-06
  • 如何安全管理阿里云服务器端口
    阿里云服务器作为企业级云服务提供商,为用户提供了一种安全可靠的云端运行环境。但同时,为了防止潜在的安全威胁,用户需要对服务器端口进行安全管理。本篇文章将详细介绍如何安全管理阿里云服务器端口,确保服务器运行的安全性。 一、了解端口端口是指网络...
    99+
    2023-12-17
    阿里 端口 安全管理
  • 如何理解MySQL 8.0中的全局参数持久化
    本篇内容介绍了“如何理解MySQL 8.0中的全局参数持久化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Linux系统中如何查看mysql端口
    这篇“Linux系统中如何查看mysql端口”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“Linux系统中如何查看mysql端口”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章...
    99+
    2023-06-28
  • linux如何查询mysql端口
    这篇文章主要介绍了linux如何查询mysql端口的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux如何查询mysql端口文章都会有所收获,下面我们一起来看看吧。两种查询方法:1、打开终端,直接执行“ne...
    99+
    2023-07-02
  • mysql端口号如何更改
    要更改MySQL的端口号,可以按照以下步骤进行操作: 打开MySQL配置文件 my.cnf(在Linux系统中通常位于 /etc...
    99+
    2024-04-24
    mysql
  • 阿里云 ECS 连接端口:如何配置和管理
    简介 阿里云 ECS(Elastic Compute Service)是一种弹性计算服务,提供了可扩展的云计算能力。在使用 ECS 进行应用程序部署时,连接端口的配置和管理是非常重要的一步。本文将介绍如何配置和管理阿里云 ECS 的连接端口...
    99+
    2024-01-31
    阿里 端口 ECS
  • 如何在Linux系统中安装mysql 8.0
    这期内容当中小编将会给大家带来有关如何在Linux系统中安装mysql 8.0,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。准备工作:mysql8.0 rpm文件测试工具...
    99+
    2024-04-02
  • MySQL 8.0用户和角色管理原理与用法详解
    本文实例讲述了MySQL 8.0用户和角色管理。分享给大家供大家参考,具体如下: MySQL8.0新加了很多功能,其中在用户管理中增加了角色的管理, 默认的密码加密方式也做了调整,由之前的sha1改为了sha2,同时...
    99+
    2022-05-31
    MySQL 8.0 用户 角色管理
  • 如何申请云服务器开通权限管理端口
    要申请云服务器开通管理端口,你需要首先了解管理端口的相关规定和限制。以下是详细的步骤: 在云服务供应商的官网上申请管理端口:进入云服务供应商的官网,如 http://www.cloudflare.com/,或者在其主页上的“常见问题”部...
    99+
    2023-10-26
    端口 权限 服务器
  • mysql服务器端口如何改
    本篇文章给大家分享的是有关mysql服务器端口如何改,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql服务器端口如何改1.在MySQL安...
    99+
    2024-04-02
  • Linux下如何查看MySQL端口
    本文小编为大家详细介绍“Linux下如何查看MySQL端口”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux下如何查看MySQL端口”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2023-04-21
    linux mysql
  • ubuntu如何查mysql的端口号
    这篇文章主要介绍“ubuntu如何查mysql的端口号”,在日常操作中,相信很多人在ubuntu如何查mysql的端口号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ubuntu如何查mysql的端口号”的疑...
    99+
    2023-07-04
  • ubuntu中如何ping端口
    这篇文章主要讲解了“ubuntu中如何ping端口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ubuntu中如何ping端口”吧!1.快捷键【Ctrl+Alt+T】打开终端。2.输入以下命...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作