Linux 下 MySQL 8 搭建教程

ops/2025/3/17 3:46:43/

一、下载

你可以从 MySQL 官方下载地址 下载所需的 MySQL 安装包。

image-20250314104819877

image-20250314104850599

二、环境准备

1. 查看 MySQL 是否存在

使用以下命令查看系统中是否已经安装了 MySQL:

rpm -qa|grep -i mysql

2. 清空 /etc/ 目录下的 my.cnf

执行以下命令删除 my.cnf 文件:

[root@localhost ~]# rm -rf /etc/my.cnf

adb_20">3. 删除 mariadb

使用 yum 命令删除 mariadb

[root@localhost ~]# yum -y remove mariadb

mysql__26">4. 清空带有 mysql 的所有文件

使用 find 命令查找并删除所有包含 mysql 的文件:

[root@localhost ~]# find / -name "*mysql*" -exec rm -rf {} \;

5. 检查并安装依赖库

查看是否安装了 MySQL 依赖库 libaio,如果没有安装则进行安装:

[root@localhost ~]# yum list installed |grep libaio
libaio.x86_64                         0.3.109-13.el7                   @anaconda

若未安装,执行以下命令安装:

yum -y install libaio

6. 解压 MySQL 压缩包并更名

解压 MySQL 压缩包:

tar xvJf mysql-8.0.41-linux-glibc2.17-x86_64.tar.xz

附注:tar 命令参数解释:

  • -x:解开已有的归档文件
  • -v:显示详细的过程
  • -J:使用 xz 压缩或解压归档文件
  • -f:指定归档文件名

重命名解压后的文件夹:

mv mysql-8.0.41-linux-glibc2.17-x86_64 mysql-8.0.41

7. 移动项目文件

将解压并重命名后的 MySQL 文件夹移动到 /usr/local/mysql/ 目录下:

[root@localhost ~]# cp -r mysql-8.0.41 /usr/local/mysql/mysql-8.0.411

mysql__67">8. 创建 mysql 组和用户

为了满足生产环境服务器对 root 用户的限制,需要创建 mysql 组和用户:

# 创建 mysql
groupadd mysql
# 创建 mysql 用户
useradd -g mysql mysql

示例:

[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql)=995(mysql)

创建一个文件:

[root@localhost ~]# mkdir /usr/local/mysql/mysql-8.0.411/mysql-files

修改权限:

[root@localhost ~]# chown mysql:mysql /usr/local/mysql/mysql-8.0.411/mysql-files
[root@localhost ~]# chmod 750 /usr/local/mysql/mysql-8.0.411/mysql-files/

给解压的 MySQL 文件夹及创建的 data 文件夹修改用户及用户组权限:

chown -R mysql:mysql /usr/local/soft/mysql/

三、设置 MySQL 配置文件 my.cnf

使用 vim 编辑器打开并编辑 /etc/my.cnf 文件:

[root@chen mysql]# vim /etc/my.cnf

配置内容如下:

[mysqld]
# 设置 MySQL 服务监听端口,默认 3306
port=3306
# 设置 MySQL 服务器绑定的 IP 地址,可以设置为自己本机 IP
bind-address=0.0.0.0
# 设置 MySQL 数据库用户
user=mysql
# 数据库文件路径
basedir=/usr/local/mysql/mysql-8.0.41
# 数据库数据目录,存储数据库文件的路径
datadir=/usr/local/mysql/mysql-8.0.41/data
# 设置 MySQL 服务器使用的套接字文件路径
socket=/usr/local/mysql/mysql-8.0.41/mysql.sock
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# 设置每个连接的默认字符集
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
lower_case_table_names = 1
# 配置 MySQL 的自动扩展参数
innodb_autoextend_increment=64
log-error=/usr/local/mysql/mysql-8.0.41/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.41/mysql.pid[mysqld_safe]
# 设置指定存放进程 ID 的文件
log-error=/usr/local/mysql/mysql-8.0.4/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.4/mysql.pid
# log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid
[client]
socket = /usr/local/mysql/mysql-8.0.4/mysql.sock
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

四、Mysql 初始化

Linux 中的 MySQL 默认是区分表名大小写的,如果你安装的是 MySQL 8,需要在数据库初始化时设置不区分大小写,否则初始化后在配置文件中设置并重启时会报错。

使用 mysqlbin 下面的 mysqld 脚本进行初始化:

/usr/local/mysql/mysql-8.0.41
/bin/mysqld --defaults-file=/usr/local/soft/mysql/my.cnf --user=mysql --basedir=/usr/local/mysql/mysql-8.0.41 --datadir=/usr/local/soft/mysql/data --lower-case-table-names=1 --initialize

示例:

[root@localhost ~]# /usr/local/mysql/mysql-8.0.4/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-8.0.4/mysql-8.0.40
2024-08-05T02:12:23.829793Z 0 [System] [MY-013169] [Server] /usr/local/mysql/mysql-8.0.4/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 3849
2024-08-05T02:12:23.841538Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-05T02:12:24.709625Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-05T02:12:25.810204Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: v,es=69BKU25

判断是否初始化成功

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.4/

出现 data 表示初始化成功。

设置 ssl 安全加密连接

[root@localhost ~]# cd /usr/local/mysql/mysql-8.0.41/
[root@localhost mysql]# ls ./bin/*ssl*
./bin/mysql_ssl_rsa_setup
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/mysql-8.0.4/data
[root@localhost mysql]# ls ./data/
auto.cnf         #ib_16384_0.dblwr  #innodb_temp        public_key.pem   undo_002
ca-key.pem       #ib_16384_1.dblwr  mysql               server-cert.pem
ca.pem           ib_buffer_pool     mysql.ibd           server-key.pem
client-cert.pem  ibdata1            performance_schema  sys
client-key.pem   #innodb_redo       private_key.pem     undo_001

其他配置

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.41/support-files
mysqld_multi.server  mysql-log-rotate  mysql.server

五、启动并登录 MySQL,设置 MySQL 开机自启动

mysql_191">加入到系统服务并启动 mysql

cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/init.d/mysql

mysql__196">修改 mysql 自启服务配置

vim /etc/init.d/mysql

启动服务

service mysql start

mysql_206">登录 mysql

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

登录成功后会提示你重置密码,修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES;      # 刷新 

退出:

quit

重启服务:

service mysql restart

再次登陆:

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

输入刚修改的密码,按回车键。到此,MySQL 已经安装完成。

环境路径配置

[root@localhost ~]# vim /etc/profile

在文件中添加以下内容:

export PATH=$PATH:/usr/local/mysql/mysql-8.0.4/

使配置生效:

[root@localhost ~]# source /etc/profile

设置开机自启动(方法一)

添加服务列表的方式,放置到 /etc/rc.d/init.d 中:

# copy 并重命名
cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/rc.d/init.d/mysql
# 复制成功后我们需要给赋予权限
chmod +x /etc/init.d/mysql
# 添加为服务:
chkconfig --add mysql
# 查看服务列表 
chkconfig --list

看到 mysql 服务的 3、4、5 状态为开或者为 on 则表示成功。如果是关或者 off 则执行以下命令:

chkconfig --level 345 mysqld on

重启计算机:

reboot

http://www.ppmy.cn/ops/166389.html

相关文章

Docker配置代理,以保证可以快速拉取镜像

序言 本来不想写了,然后记笔记了,但是今天遇到这个问题了再一次,还是写一写吧,加深一下印象 因为Docker被墙了,所以拉取Docker镜像的时候,需要通过代理的方式 xxxxxxxxxx,此处省略十几个字,然…

解决启动Vue项目时遇到的 error:0308010C:digital envelope routines::unsupported 错误

问题描述 最近,在启动一个遗留前端(Vue)项目时,遇到了error:0308010C:digital envelope routines::unsupported错误。 95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported Error: error:0308010C:d…

手势调控屏幕亮度:Python + OpenCV + Mediapipe 打造智能交互体验

前言 你有没有遇到过这样的情况? 夜晚玩电脑,屏幕亮得像个小太阳,晃得眼泪直流,想调暗一点,却在键盘上盲摸半天,结果误触关机键,直接黑屏;白天屏幕暗得像熄火的煤油灯,想调亮点,鼠标点来点去,调节条藏得像猫一样不见踪影。这年头,我们的设备都快能听懂人话了,怎…

系统分析师论文《论系统运维方法及其应用》

【摘要】 2022年4月,我公司承接了某大型国有企业"智能办公自动化系统"的运维优化项目,我担任系统分析师并负责运维体系建设工作。该系统涉及流程审批、数据报表、移动端接入等核心功能模块,支撑1300余名员工的日常办公。由于历史遗…

golang开发支持onlyoffice的token功能

一直都没去弄token这块,想着反正docker run的时候将jwt置为false即可。 看了好多文章,感觉可以试试,但是所有文件几乎都没说思路。 根据我的理解和成功的调试,思路是: 我们先定义2个概念,一个是文档下载…

vscode编译器的一些使用问题

目录 解决pip不可用问题 检查VSCode的终端配置 解决pip不可用问题 eg: C:\Users\student>pip pip 不是内部或外部命令,也不是可运行的程序或批处理文件。 先找到系统环境变量 高级->环境变量 系统属性->Path 变量名随意,自己后续知道…

【设计模式】从事件驱动到即时更新:掌握观察者模式的核心技巧

概述 定义:又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够…

水雷探测用水下航行器侧扫声纳成像数据之论文阅读

摘要 在过去的十年中,无人驾驶车辆在水下领域变得越来越普及,因为它们通过减少人类参与来提高操作可靠性。在水下操作时,环境感知对于安全以及导航和轨迹控制等任务至关重要。水雷探测是最危险的操作之一,因为这些系统可能会损坏…