本文由于是学习,所以使用tar包安装,Linux版本CentOS8,MySQL8,本次安装路径为/usr/local/mysql

下载&准备

官方下载地址注意选择对应的系统以及版本,本人选择的这个版本是通用的版本。

在这里插入图片描述
下载后将文件上传至Linux上面,使用mv命令移动至下面文件里面。
在这里插入图片描述

按照下面命令获取到文件里面的东西,上面为我自己操作的路径。

yum install -y libaio         # 安装所需依赖
xz -d mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz   # 解压xz文件,解压出来后是tar文件
tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar   # 解压tar文件
rm -rf mysql-8.0.27-linux-glibc2.12-x86_64.tar     # 删除安装包
ln -s mysql-8.0.27-linux-glibc2.12-x86_64/ mysql8  # 创建一个软连接,原名太长不方便
mkdir log    # 创建一个log文件夹,以后使用
mkdir data   # 创建一个存放数据库数据的文件夹,之后使用
touch /usr/local/mysql/log/mysql.log   # 创建一个log文件
chmod +777 /usr/local/mysql/log/mysql.log    # 给这个log文件权限

配置

配置MySQL,大部分使用默认配置即可

vim /etc/my.cnf   # 创建文件,并进行MySQL的配置

# 以下为文件里面的配置
[mysqld]
# 设置mysql的安装目录
basedir=/usr/local/mysql/mysql8
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 日志文件
log-error=/usr/local/mysql/log/mysql.log
# 设置最大连接数
max_connections=500
# 配置表名不区分大小写 1:不区分大小写 0:区分大小写  这行必须配置 默认表名是区分大小写的,不利于开发
lower_case_table_names=1
# 设置为默认编码为utf8
character-set-server=utf8mb4
# 密码插件配置
default_authentication_plugin=mysql_native_password

在这里插入图片描述

cd /usr/local/mysql/mysql8/bin/   # 进入MySQL文件
./mysqld --initialize --console --user=root   # 初始化MySQL
cat /usr/local/mysql/log/mysql.log     # 查看MySQL默认的密码

在这里插入图片描述
配置用户

groupadd mysql   # 创建MySQL组
useradd -r -g mysql mysql   # 创建MySQL用户
chown -R mysql.mysql /usr/local/mysql/data/   # 配置MySQL用户访问此文件的权限

优化启动

cp /usr/local/mysql/mysql8/support-files/mysql.server /etc/init.d/mysql   # 将启动文件复制到此文件中
chmod +x /etc/init.d/mysql   # 添加可执行权限
chkconfig --add mysql        # 注册启动服务(配置systemctl)
chkconfig --list             # 查看是否注册上

在这里插入图片描述
这样的话就可以使用systemctl命令进行启动了

ln -s /usr/local/mysql/mysql8/bin/mysql /usr/bin/  # 建立软连接,在系统中增加mysql指令  (配置快捷方式)
systemctl start mysql    # 使用systemctl命令启动MySQL,此处如果启动不了检查/tmp/目录下sock文件,将MySQL有关的都删除
systemctl status mysql   # 查看MySQL的状态
mysql -u root -p   # 启动MySQL,此处报错

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
在这里插入图片描述
解决

ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

进入MySQL后

问题:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
在这里插入图片描述
解决:
此处需要重置密码

alter user user() identified by "nKW=?rQDj6%<5";   # 重置密码
create user 'root'@'%' identified by "nKW=?rQDj6%<5";   # 创建一个远程账户 ‘%’
grant all on *.* to 'root'@'%';   # 权限分配
FLUSH PRIVILEGES;   # 权限刷新

这时可以使用图形化界面连接了,如果出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的错误,请查看这篇文章,我的navicat版本是15所以不会出现这种情况。

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘x.x.x.x:3306’ (113)

如果出现以上问题,请仔细检查自己的防火墙是否关闭firewalld,如果是云服务器需检查服务器控制台是否开启3306端口,同时注意关闭firewalld

自动化

本人将以上的所有命令与shell文件结合制作了一个自动安装的脚本,此脚本先清理本身的mysql然后再安装自己的,不过还是需要下载MySQL包的,看上面的流程先将MySQL下载上传到Linux上面,然后将脚本放在和MySQL包一个目录下面。
在这里插入图片描述
下面为执行自动化脚本的输出,资源下载
在这里插入图片描述

表空间

查询所有表空间

SELECT NAME, FILE_SIZE, ALLOCATED_SIZE, STATE FROM information_schema.INNODB_TABLESPACES ORDER BY NAME;

查询表空间是否存在

SELECT EXISTS(SELECT 1 FROM information_schema.INNODB_TABLESPACES WHERE NAME='ts_archive_202601') AS ts_exists;

创建表空间

CREATE TABLESPACE ts_archive_202601 ADD DATAFILE '/data1/mysql_ts/ts_archive_202601.ibd' ENGINE=InnoDB;

查看状态以及大小

SELECT SPACE, NAME, SPACE_TYPE, FILE_SIZE, ALLOCATED_SIZE, STATE FROM information_schema.INNODB_TABLESPACES WHERE NAME='ts_archive_202601';

创建普通表

CREATE TABLE IF NOT EXISTS order_info_20260126 LIKE order_info;

将普通表绑定表空间

ALTER TABLE order_info_20260126 TABLESPACE ts_archive_202601;

验证表是否绑定表空间

SHOW CREATE TABLE order_info_20260126;

查询某个表空间里有哪些表

SELECT t.NAME FROM information_schema.INNODB_TABLES t JOIN information_schema.INNODB_TABLESPACES ts ON t.SPACE = ts.SPACE WHERE ts.NAME='ts_archive_202601' ORDER BY t.NAME;

删除表空间(必须“空”才能删,不是空的先删除普通表)

DROP TABLESPACE ts_archive_202601;
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐