Centos7二进制自定义部署mysql8

本文详细描述了如何在CentOS7上从官网下载并安全部署MySQL8.0.28,包括卸载旧版本、关闭SELINUX、配置my.cnf、创建用户及权限,以及使用mysqld_safe和shell脚本管理服务。最后还介绍了如何在Navicat中连接和管理数据库。
摘要由CSDN通过智能技术生成

 一、官网下载二进制文件

1.先去官网下载mysql-8.0.28的二进制文件,mysql官网MySQL

2.点击下载即可在浏览器下载,如果想下载速度更快可尝试复制下载链接到迅雷进行下载。

二、在Centos7上进行mysql自定义部署

1.检查服务器上是否有旧的mysql文件或mariadb,有的话建议卸载掉以防影响新的mysql数据库启动,如下所示:

rpm -qa | grep mysql         #输入内容为空说明不存在旧的mysql

rpm -qa | grep mariadb   #如果输出显示有mariadb执行以下命令进行mariadb卸载

yum remove -y mariadb-*     #卸载mariadb相关的rpm包

2.关闭SELINUX,执行以下命令,如下所示:

vim /etc/selinux/config

保存以后执行以下命令,如下所示:

setenforce 0 && sudo systemctl restart selinux-policyd

关闭以后,准备解压二进制文件,开始部署mysql服务

3.开始解压二进制文件,执行命令:

tar -xvf  mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

4.将解压后的目录名修改为mysql,如下所示:

5.新建mysql的数据存放目录和配置文件存放目录,如下所示:

mkdir data  etc

6.在服务器上新建mysql用户,看个人需求设置是否可登录。

useradd -M -s /sbin/nologin mysql    #创建一个名为 "mysql" 的用户,在创建过程中不会生成家目录,并且设置其登录 shell 为 /sbin/nologin,从而禁止该用户登录系统

useradd -m -s /bin/bash mysql     #系统将在home目录中创建一个名为mysql的用户,并自动为其分配一个与用户名相同的家目录。登录shell被设置为bash,允许该用户登录并使用bash终端。

7.先新建my.cnf,配置相关参数,如下所示:

[mysql]
default-character-set=utf8             #设置字符集为UTF-8编码
collation-server = utf8_unicode_ci   #设置服务器的排序规则(collation)为utf8_unicode_ci
init-connect='SET NAMES utf8'       #每次新建连接时自动设置字符集,确保连接始终使用正确的字符集进行操作

[mysqld]  
user=mysql            #通过创建一个名为 "mysql" 的用户,你可以为该用户指定登录数据库时所使用的用户名
basedir=/app/mysql    #设置MySQL的安装目录为/app/mysql
datadir=/app/data       #设置MySQL的数据目录为/app/data
pid-file=/app/data/mysql.pid   #设置MySQL的进程ID文件的路径为/app/data/mysql.pid

server-id=1       ##设置服务器的唯一标识符为1。这个标识符用于在同一台计算机上运行多个MySQL服务器实例时区分它们。每个实例都需要具有唯一的server-id,以便它们可以正常通信和同步数据。

                                                                                                                                                                    
innodb_data_home_dir=/app/data      #设置MySQL的InnoDB表空间数据目录的主目录为/app/data
log-error=/app/data/error.log     #设置MySQL的错误日志文件的路径为/app/data/error.log
port=3306                                #设置MySQL服务器监听的端口号为3306
socket=/app/data/mysql.sock  #设置MySQL服务器使用的Unix域套接字(Unix socket)的路径为/app/data/mysql.sock

[mysql]
default-character-set=utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'

[mysqld]
user=mysql
basedir=/app/mysql
datadir=/app/data
pid-file=/app/data/mysql.pid
server-id = 1
innodb_data_home_dir=/app/data
log-error=/app/data/error.log
port=3306
socket=/app/data/mysql.sock

8.将mysql的数据存放目录,启动服务目录,配置文件所在目录的用户以及用户组改为mysql,好让mysql用户拥有足够的权限,执行以下命令,如下所示:

chown -R  mysql:mysql  /app/data /app/etc  /app/mysql

9.到mysql目录执行数据库初始化操作,执行以后去error.log里面查看初始化是否成功,成功以后会出现数据库root用户的初始化密码。如下所示:

cd  /app/mysql
./bin/mysqld   --defaults-file=/app/etc/my.cnf --initialize   --basedir=/app/mysql --datadir=/app/data  --user=mysql 

tail -100f /app/data/error.log

9.使用mysql_safe拉起mysql进程的好处是可以避免因为MySQL进程异常退出而导致的数据丢失和系统崩溃,mysql_safe会先检查MySQL进程的状态,如果发现进程已经退出或者无法正常启动,就会尝试自动重启MySQL进程。在重启过程中,mysql_safe会执行一些必要的操作,比如清理临时文件、恢复数据表等,以确保MySQL进程能够正常启动并提供服务。

为了防止使用mysqld_safe拉起mysql进程在控制台卡住,建议写一个shell脚本进行启动,执行以下命令创建脚本,如下所示:

cd /app/mysql/bin
vim  mysqld_safe.sh

 

#!/bin/bash
./mysqld_safe  --defaults-file=/app/etc/my.cnf --basedir=/app/mysql --datadir=/app/data --pid-file=/app/data/mysql.pid --user=mysql >nohup.out 2>&1 & 
chmod +x  mysqld_safe.sh
./mysqld_safe.sh

10.配置mysql命令可全局使用,如下所示:

vim /etc/profile
export PATH=$PATH:/app/mysql/bin   #加在/etc/profile内容的末尾一行
source /etc/profile                #重新加载配置文件

执行mysql -uroot  -p 进行登录,输入error.log中的root用户初始化密码

出现以上报错,执行以下命令以后,重新登录即可正常登录,如下所示:

ln -s  /app/data/mysql.sock   /tmp   #建立mysql.sock文件的软链接到/tmp下

11.登录到mysql命令模式以后,先修改root用户的初始化密码。

ALTER USER'root'@'localhost' IDENTIFIED BY'password';  --密码根据自己需要将password修改为自己需要的
FLUSH PRIVILEGES;   --刷新权限缓存,使新的权限更改生效

创建一个ai用户,用于远程客户端连接使用。如下所示:

CREATE USER'ai'@'%' IDENTIFIED BY'ai123';   --创建ai用户并设置它的密码
GRANT ALL PRIVILEGES ON *.* TO 'ai'@'%';    --赋予ai用户所有库修改权限并放开远程客户端访问权限
SELECT Host, User FROM user;       --查看user表里关于ai用户Host那一列是否为通配符,是代表允许所有远程客户端访问
FLUSH PRIVILEGES;       ----刷新权限缓存,使新的权限更改生效

12.打开navicat,尝试使用ai用户访问mysql服务器。如下所示:

如果连接被拒查看下是否网络不通,检查下是服务器上的防火墙没关闭或是没放开3306端口。

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值