Linux 下 MySQL 8 搭建教程

一、下载

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

二、环境准备

1. 查看 MySQL 是否存在

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

bash 复制代码
rpm -qa|grep -i mysql

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

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

bash 复制代码
[root@localhost ~]# rm -rf /etc/my.cnf

3. 删除 mariadb

使用 yum 命令删除 mariadb:

bash 复制代码
[root@localhost ~]# yum -y remove mariadb

4. 清空带有 mysql 的所有文件

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

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

5. 检查并安装依赖库

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

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

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

bash 复制代码
yum -y install libaio

6. 解压 MySQL 压缩包并更名

解压 MySQL 压缩包:

bash 复制代码
tar xvJf mysql-8.0.41-linux-glibc2.17-x86_64.tar.xz

附注:tar 命令参数解释:

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

重命名解压后的文件夹:

bash 复制代码
mv mysql-8.0.41-linux-glibc2.17-x86_64 mysql-8.0.41

7. 移动项目文件

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

bash 复制代码
[root@localhost ~]# cp -r mysql-8.0.41 /usr/local/mysql/mysql-8.0.411

8. 创建 mysql 组和用户

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

bash 复制代码
# 创建 mysql 组
groupadd mysql
# 创建 mysql 用户
useradd -g mysql mysql

示例:

bash 复制代码
[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql) 组=995(mysql)

创建一个文件:

bash 复制代码
[root@localhost ~]# mkdir /usr/local/mysql/mysql-8.0.411/mysql-files

修改权限:

bash 复制代码
[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 文件夹修改用户及用户组权限:

bash 复制代码
chown -R mysql:mysql /usr/local/soft/mysql/

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

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

bash 复制代码
[root@chen mysql]# vim /etc/my.cnf

配置内容如下:

ini 复制代码
[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 脚本进行初始化:

bash 复制代码
/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

示例:

bash 复制代码
[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

判断是否初始化成功

bash 复制代码
[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.4/

出现 data 表示初始化成功。

设置 ssl 安全加密连接

bash 复制代码
[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

其他配置

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

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

加入到系统服务并启动 mysql

bash 复制代码
cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/init.d/mysql

修改 mysql 自启服务配置

bash 复制代码
vim /etc/init.d/mysql

启动服务

bash 复制代码
service mysql start

登录 mysql

bash 复制代码
/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

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

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES;      # 刷新 

退出:

sql 复制代码
quit

重启服务:

bash 复制代码
service mysql restart

再次登陆:

bash 复制代码
/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

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

环境路径配置

bash 复制代码
[root@localhost ~]# vim /etc/profile

在文件中添加以下内容:

bash 复制代码
export PATH=$PATH:/usr/local/mysql/mysql-8.0.4/

使配置生效:

bash 复制代码
[root@localhost ~]# source /etc/profile

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

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

bash 复制代码
# 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 则执行以下命令:

bash 复制代码
chkconfig --level 345 mysqld on

重启计算机:

bash 复制代码
reboot
相关推荐
嵩山小老虎2 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模2 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a41324472 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
az44yao3 小时前
mysql 创建事件 每天17点执行一个存储过程
mysql
一只自律的鸡4 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)4 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
!chen4 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
秦老师Q4 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
REDcker4 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
蒹葭玉树5 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十八期)
linux·c++·面试