CentoOS7安装mysql 8.0.46

1.前期准备

1.1 查看glibc版本

复制代码
ldd --version
# 下载mysql时,需要下载对应版本

1.2 查看OS版本信息

复制代码
cat /etc/os-release

1.3查看OS架构信息

复制代码
arch

1.4 卸载mariadb

复制代码
yum remove mariadb* -y

1.5 安装相关路径规划

1.安装包上传至/apps/scripts/目录下

2.数据库安装至/apps/目录下

2.数据库安装

2.1 安装包下载及上传至服务器

数据库下载地址:https://dev.mysql.com/downloads/mysql/

2.2 解压及更名

复制代码
# 解压
tar -xf mysql-8.0.46-linux-glibc2.17-x86_64.tar.xz -C /apps/
# 切换目录
cd ..
# 文件夹更名
mv mysql-8.0.46-linux-glibc2.17-x86_64 mysql

2.3 创建用户、组

复制代码
# 创建组
groupadd mysql
# 创建用户并指定组
useradd -r -g mysql -s /bin/false mysql

2.4 创建配置文件

复制代码
# 在/apps/mysql/目录下创建mysql配置文件
vim my.cnf
复制代码
# 配置文件内容如下:
[client]
port=3306
default-character-set=utf8mb4
socket=/apps/mysql/data/mysql.sock

[mysql]
default-character-set=utf8mb4
socket=/apps/mysql/data/mysql.sock

[mysqld]
port=3306
character-set-server=utf8mb4
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=true
basedir=/apps/mysql
datadir=/apps/mysql/data
pid-file=/apps/mysql/data/mysqld.pid
user=mysql
slow_query_log=OFF
lower_case_table_names=1
socket=/apps/mysql/data/mysql.sock
default-storage-engine=InnoDB
max_connections=600
max_connect_errors=1000
tmp_table_size=1024M
max_heap_table_size=1024M
join_buffer_size=1024M
thread_cache_size=32
key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=128M
default_authentication_plugin=caching_sha2_password
sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"
max_allowed_packet=256M
innodb_log_file_size=256M
innodb_log_buffer_size=512M
innodb_buffer_pool_size=1638M
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_file_per_table=1
innodb_page_size=16K
group_concat_max_len=1024000
transaction-isolation=READ-COMMITTED
default-time-zone='+8:00'
max_connect_errors=1000

[mysqld_safe]
log-error=/apps/mysql/logs/error.log

[mysql.server]
basedir=/apps/mysql

2.5 数据库目录创建

复制代码
# 创建数据目录
mkdir {data,logs}
pwd
ls

2.6 安装目录授权

复制代码
# 授权
chown -R mysql:mysql /apps/mysql/

2.7 依赖安装

复制代码
# 安装MySQL依赖软件
yum install -y iproute ncurses-libs perl perl-Data-Dumper libaio util-linux tar gzip numactl libatomic

2.8 初始化数据库

复制代码
# 初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/apps/mysql --datadir=/apps/mysql/data --lower_case_table_names=1

# --lower_case_table_names=1在初始化时候,添加该参数是因为在my.cnf中存在该参数,不加会报错

# A temporary password is generated for root@localhost: s9:TUF03K)f_
s9:TUF03K)f_为自动生成的root密码,需要记录

3.系统服务注册

3.1 系统服务文件编写

复制代码
# 注册MySQL启动服务
vim /etc/systemd/system/mysqld.service
复制代码
# mysqld.service文件详细内容
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Start main service
ExecStart=/apps/mysql/support-files/mysql.server start
# Sets open_files_limit
LimitNOFILE = 65535
Restart=on-failure
RestartPreventExitStatus=1
# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false

3.2 数据库配置文件修改

复制代码
# 修改/apps/mysql/support-files/mysql.server文件中basedir和datadir,其他内容无需修改
vim /apps/mysql/support-files/mysql.server

修改内容如下:

复制代码
basedir=/apps/mysql
datadir=/apps/mysql/data

3.3 测试系统服务注册是否正常

复制代码
# 重载服务
systemctl daemon-reload
# 启动mysql服务
systemctl start mysqld
# 下图显示为服务正常、端口正常

4.连接测试

复制代码
# 测试连接
bin/mysql -h127.0.0.1 -uroot -p
Enter password:    # 输入2.8中生成 的密码


相关SQL

复制代码
# 默认密码修改
mysql> alter user root@localhost identified by 'Abc123';
# 修改数据库允许任意地址连接
mysql> update user set Host="%" where user="root";
# 创建数据库
mysql> create database test default character set utf8mb4;
# 刷新
mysql> flush privileges;

5.环境变量设置及测试

5.1 环境变量设置

复制代码
# 添加环境变量
vim /etc/profile
# 在最后添加以下两行
export MYSQL_HOME=/apps/mysql
export PATH=$PATH:$MYSQL_HOME/bin
# 重新加载配置
source /etc/profile

5.2 验证环境变量设置是否成功

复制代码
# 服务器任意位置执行:
mysql -h127.0.0.1 -uroot -pAbc123

6.常见问题

运行SQL后报错:
1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.


修改方法:
在my.cnf配置文件的mysqld板块中,新增参数:innodb_strict_mode=OFF
然后重启mysql服务


mysql重启后,此前报错的sql已经能够正常运行。

相关推荐
唐青枫2 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8782 天前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H3 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶4 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵4 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
SamDeepThinking4 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
李白客6 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
Jim6008 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL8 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql