文章

MySQL8安装部署

MySQL8安装部署

服务器参数优化

/etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 681574400
kernel.shmmax = 137438953472
kernel.shmmni = 4096
kernel.sem = 250 32000 100 200
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

/etc/security/limits.conf

mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536

/etc/profile

if [ $USER = "mysql" ]; then
ulimit -u 16384 -n 65536
fi

rpm包安装

Red Hat 和 CentOS 上通常已经安装了 mariadb-libs 的包,需要先卸载

rpm -qa | grep mariadb-libs*
rpm -e mariadb-libs

下载安装

下载对应的安装包

rpm 包说明:对于标准安装,必须至少安装 common、server 和 client 包

包名说明
server数据库服务器和相关工具
common服务器和客户端库的通用文件
clientMySQL 客户端应用程序和工具
develMySQL 数据库客户端应用程序的开发头文件和库
embedded-compatMySQL 服务器作为嵌入式库,兼容使用库版本的应用程序
libsMySQL 数据库客户端应用程序的共享库
libs-compat以前 MySQL 安装的共享兼容性库
testMySQL 服务器的测试套件
router轻量级中间件,在 InnoDB 集群中提供透明路由
backupMySQL 企业备份(仅限商业)
rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm

修改 my.cnf

自行修改其他配置参数,添加下面两个参数:

default_time_zone='+8:00'
lower_case_table_names=1

查看初始密码

cat /var/log/mysqld.log | grep password

忘记密码

#在my.cnf文件夹[mysqld]下添加
skip-grant-tables
#重启mysql服务

首次登录修改密码

ALTER USER root@localhost IDENTIFIED BY 'Xxy#2023';

允许远程连接

use mysql;
update user set host='%' where user='root';
flush privileges;

备份脚本

#!/bin/bash

# 定义备份目录
backup_dir="/path/to/backup/directory"

# 定义备份文件名
backup_file="${backup_dir}/$(date +%Y-%m-%d-%H-%M-%S).sql"

# 定义MySQL用户名、密码、主机名和数据库名
mysql_user="your_mysql_username"
mysql_password="your_mysql_password"
mysql_host="localhost"
mysql_database="your_mysql_database_name"

# 执行备份命令并将输出写入备份文件
mysqldump --user=${mysql_user} --password=${mysql_password} --host=${mysql_host} ${mysql_database} > ${backup_file}

# 检查备份文件是否创建成功
if [ -f ${backup_file} ]; then
  echo "Backup succeeded!"
else
  echo "Backup failed."
fi
#添加定时任务
crontab -e
0 3 * * * /opt/backup/backup-script.sh

更新

MySQL 8.0.16 之前,必须运行 mysql_upgrade

下载新包

#停止 MySQL
systemctl stop mysqld
#进入目录执行安装
rpm -Uvh ./*.rpm
#启动 MySQL
systemctl start mysqld

二进制安装

下载二进制zip文件

1.创建用户、用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.安装

解压

mkdir /usr/local/mysql-8.0.x/
chown mysql:mysql /usr/local/mysql-8.0.x
cd /usr/local/mysql-8.0.x
tar zxvf ~/mysql-8.0-linux-glibc2.12-x86_tar.gz

创建初始配置文件

将 mydefault.cnf 复制到 /etc/my.cnf。 编辑 datadir 设置以指向数据目录。 编辑 basedir 设置以指向安装目录。 编辑任何其他所需的设置,例如:日志文件设置、TCP 端口。 添加下面两个参数:

default_time_zone='+8:00'
lower_case_table_names=1

初始化数据目录并记下生成的临时密码

#进入mysql bin文件夹
mysqld initialize user=mysql

启动

mysqld_safe user=mysql &

使用临时密码连接到 MySQL 服务器

mysql -u root -p

更改用户密码

alter user xxx identified by 'new password';

(可选)填充时区表

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p

chkconfig 设置 MySQL 自动启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --list
License:  CC BY 4.0