mysql 关闭已有的链接

博客提及了使用查看所有连接的操作,以及涉及要终止的进程的ID相关内容,与信息技术中系统操作相关。

1、使用SHOW PROCESSLIST查看所有连接;

2、KILL要终止的进程的ID。

<think>我们面对的是一个在已有MySQL 8.0的系统上再安装MySQL 5.7的需求。关键点是避免两个版本冲突,特别是配置文件和端口的隔离。 步骤思路: 1. 下载MySQL 5.7的二进制包(注意选择与系统兼容的版本)。 2. 准备独立的安装目录(如/usr/local/mysql5.7)和数据目录(如/usr/local/mysql5.7/data)。 3. 创建专用的mysql用户和组(如果已有mysql用户,可以共用,但注意目录权限)。 4. 初始化MySQL 5.7时指定新的数据目录和端口(避免与MySQL 8.0冲突,默认3306已被占用,需改为例如3307)。 5. 修改配置文件(指定新的端口、数据目录、socket文件路径等)。 6. 启动MySQL 5.7实例(使用独立的配置文件)。 7. 设置环境变量(可选,方便使用mysql客户端连接指定实例)。 注意:以下步骤假设你已经以root权限操作,并且当前系统已安装MySQL 8.0(可能已经占用了默认的3306端口和默认的配置文件/etc/my.cnf)。 具体步骤: 1. 下载MySQL 5.7压缩包 根据引用[2],前往MySQL官网下载或使用提供的百度网盘链接(如果适用)。这里以官网下载为例。 选择版本:MySQL Community Server 5.7.x,操作系统选择Linux - Generic,注意选择正确的架构(通常是x86_64)。 2. 解压并移动至安装目录 假设下载的压缩包为`mysql-5.7.xx-linux-glibc2.12-x86_64.tar.gz`(xx为具体版本号)。 ```bash # 将压缩包移动到/usr/local目录下 mv mysql-5.7.xx-linux-glibc2.12-x86_64.tar.gz /usr/local cd /usr/local # 解压 tar -zxvf mysql-5.7.xx-linux-glibc2.12-x86_64.tar.gz # 重命名解压后的目录为mysql5.7 mv mysql-5.7.xx-linux-glibc2.12-x86_64 mysql5.7 ``` 3. 创建mysql用户和组(如果已存在则跳过) ```bash # 检查是否存在mysql用户 id mysql # 如果不存在,则创建 groupadd mysql useradd -r -g mysql -s /bin/false mysql ``` 4. 创建数据目录并设置权限 ```bash mkdir -p /usr/local/mysql5.7/data chown -R mysql:mysql /usr/local/mysql5.7 ``` 5. 初始化MySQL 5.7 根据引用[1],使用`mysqld`初始化,注意指定basedir和datadir,同时要指定端口(因为默认3306已被MySQL8占用)和配置文件(如果已经有全局配置文件,则需要避免冲突,可以指定一个专属配置文件)。 首先,创建一个专属配置文件(例如:/etc/my5.7.cnf),内容至少包括: ``` [mysqld] port=3307 basedir=/usr/local/mysql5.7 datadir=/usr/local/mysql5.7/data socket=/tmp/mysql5.7.sock user=mysql ``` 然后,初始化(注意:初始化前确保数据目录为空): ```bash cd /usr/local/mysql5.7 ./bin/mysqld --defaults-file=/etc/my5.7.cnf --initialize --user=mysql ``` 注意:初始化完成后会生成一个临时密码,需要记录下来(在日志中,通常最后一行)。 6. 启动MySQL 5.7 可以使用`mysqld_safe`启动,或者配置为系统服务(如引用[4][5]所述)。 这里先使用手动启动: ```bash ./bin/mysqld_safe --defaults-file=/etc/my5.7.cnf & ``` 或者配置为系统服务(推荐): 复制mysql.server脚本到/etc/init.d/(并命名为mysql5.7): ```bash cp support-files/mysql.server /etc/init.d/mysql5.7 ``` 修改这个启动脚本,设置basedir和datadir等变量: ```bash vi /etc/init.d/mysql5.7 ``` 在文件开头添加: ```bash basedir=/usr/local/mysql5.7 datadir=/usr/local/mysql5.7/data conf=/etc/my5.7.cnf # 指定配置文件 ``` 然后在启动命令中增加`--defaults-file`选项,找到`mysqld_safe`启动的那一行,修改为: ```bash $bindir/mysqld_safe --defaults-file="$conf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & ``` 保存后,赋予执行权限并设置开机启动(可选): ```bash chmod +x /etc/init.d/mysql5.7 chkconfig --add mysql5.7 chkconfig mysql5.7 on ``` 现在可以用服务启动: ```bash service mysql5.7 start ``` 7. 修改root密码 使用生成的临时密码登录: ```bash ./bin/mysql --socket=/tmp/mysql5.7.sock -uroot -p ``` 输入临时密码后,执行: ```mysql SET PASSWORD = PASSWORD('新密码'); FLUSH PRIVILEGES; ``` 8. 创建软连接(可选,方便使用) 如引用[5]所述,创建软连接以便可以直接使用mysql命令(注意:如果已有MySQL8的mysql命令在/usr/bin/mysql,则这里可能会覆盖,建议使用不同的名称): ```bash ln -s /usr/local/mysql5.7/bin/mysql /usr/bin/mysql5 ``` 这样,就可以使用`mysql5 -uroot -p`来连接5.7实例(注意指定端口或socket,因为默认端口3306被占用,所以需要用-P 3307或--socket=/tmp/mysql5.7.sock)。 9. 停止服务命令 同样,停止服务可以使用: ```bash service mysql5.7 stop ``` 注意事项: - 两个MySQL实例的配置文件要分开,避免冲突。 - 端口必须不同(一个3306,另一个如3307)。 - socket文件路径也要不同(避免客户端连接时冲突)。 - 启动脚本要独立,并指定正确的配置文件。 如果遇到启动失败,查看错误日志(通常在数据目录下,以主机名.err结尾)来排查问题。 以上步骤应该能够在已安装MySQL 8.0的系统上成功安装MySQL 5.7。 生成相关问题: 1. 如何配置MySQL 5.7的配置文件以避免与MySQL 8.0冲突? 2. 如何同时管理多个MySQL实例的启动和停止? 3. MySQL 5.7和8.0的客户端连接方式有什么不同? 4. 如何设置MySQL 5.7的远程访问? </think>### 在已安装MySQL 8的Linux系统上安装MySQL 5.7的步骤 以下步骤实现MySQL 5.7和8.0共存,避免端口和服务冲突: #### 1. **下载MySQL 5.7二进制包** ```bash wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ``` 或从百度网盘提取(引用[2])[^2] #### 2. **解压并创建独立目录** ```bash tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ mv /usr/local/mysql-5.7.44 /usr/local/mysql5.7 mkdir -p /usr/local/mysql5.7/data chown -R mysql:mysql /usr/local/mysql5.7 ``` #### 3. **创建专用配置文件** 新建`/etc/my5.7.cnf`,避免与MySQL 8冲突: ```ini [mysqld] port=3307 # 使用不同端口 socket=/tmp/mysql5.7.sock # 独立socket文件 basedir=/usr/local/mysql5.7 datadir=/usr/local/mysql5.7/data user=mysql server-id=2 # 主从配置需唯一ID ``` #### 4. **初始化数据库** ```bash ./bin/mysqld --defaults-file=/etc/my5.7.cnf --initialize --user=mysql ``` 记录输出的临时密码(如`[Note] A temporary password is generated for root@localhost: JqfkR3!a`)[^1] #### 5. **创建独立启动脚本** 复制脚本并修改配置: ```bash cp support-files/mysql.server /etc/init.d/mysql5.7 sed -i 's|^basedir=|basedir=/usr/local/mysql5.7|' /etc/init.d/mysql5.7 sed -i 's|^datadir=|datadir=/usr/local/mysql5.7/data|' /etc/init.d/mysql5.7 ``` #### 6. **启动服务并设置自启** ```bash service mysql5.7 start chkconfig --add mysql5.7 chkconfig --level 345 mysql5.7 on # 引用[4] ``` #### 7. **登录并修改密码** ```bash /usr/local/mysql5.7/bin/mysql -S /tmp/mysql5.7.sock -uroot -p ``` ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!'; FLUSH PRIVILEGES; ``` #### 8. **创建快捷命令(可选)** ```bash ln -s /usr/local/mysql5.7/bin/mysql /usr/bin/mysql5 mysql5 -uroot -p -P3307 # 通过新端口连接 ``` ### 关键注意事项 1. **端口隔离**:MySQL 8默认用3306,5.7必须用其他端口(如3307) 2. **配置文件分离**:MySQL 5.7使用独立配置文件(如`my5.7.cnf`) 3. **数据目录独立**:避免与MySQL 8数据混用 4. **服务命名**:使用`mysql5.7`作为服务名(引用[5])[^5] 5. **SELinux问题**:如启动失败,执行`setenforce 0`临时关闭 ### 共存验证方法 ```bash netstat -tulnp | grep mysql # 输出应显示两个监听端口: # tcp6 0 0 :::3306 :::* LISTEN [MySQL8进程ID] # tcp6 0 0 :::3307 :::* LISTEN [mysql5.7进程ID] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值