www.colben.cn/content/post/mysql-install.md
2022-03-28 19:50:06 +08:00

179 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "安装 Mysql"
date: 2019-10-30T13:00:28+08:00
lastmod: 2022-03-28T19:00:00+08:00
tags: ["centos", "yum", "mysql"]
categories: ["database"]
---
## CentOS7 yum 安装 Mysql5.7
### 环境
- CentOS 7.4 x86_64 最小安装
- MySQL 5.7.20
### 安装 mysql yum 源
- 下载 rpm 包
```bash
# repo 地址: https://repo.mysql.com/
cd /root/
curl -O https://repo.mysql.com/mysql57-community-release-el7.rpm
```
- 安装 mysql 源
```bash
rpm -ivh /root/mysql57-community-release-el7.rpm
```
- 更新 yum 缓存
```bash
yum clean all
yum makecache fast
```
### 安装 mysql
- yum 安装 mysql 包
```bash
yum install mysql-community-server
```
- 启动 mysql
```bash
systemctl start mysqld
```
- 查找 mysql 默认 root 密码
```bash
grep 'temporary password' /var/log/mysqld.log
```
- 修改 root 密码
```bash
mysqladmin -uroot -p password 'Pass-1234'
# 输入查找到的密码
```
## CentOS7 安装 MySQL8 通用二进制包
### 环境
- CentOS 7.9 x86_64 最小安装
- MySQL 8.0.28 多实例
- 普通用户 mortal
### 安装 mysql
- 创建普通用户 mortal切换到 mortal 用户下
```bash
useradd -m mortal
su - mortal
```
- 下载 MySQL8 通用二进制包
```bash
cd ~
curl -LO https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
```
- 解压
```bash
cd ~
tar xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql
```
- 创建三个实例的目录
```bash
cd ~
mkdir -p instance-{1..3}/{file,log}
```
- 创建各实例的配置文件 instance-{1..3}/my.cnf
```bash
cd ~
for i in {1..3}; do
cat > instance-$i/my.cnf <<-EOF
[mysqld]
mysqlx = OFF
port = 330$i
basedir = /home/mortal/mysql
datadir = /home/mortal/instance-$i/db
socket = /home/mortal/instance-$i/mysqld.sock
pid-file = /home/mortal/instance-$i/mysqld.pid
secure-file-priv = /home/mortal/instance-$i/file
log-timestamps = SYSTEM
log-error = /home/mortal/instance-$i/log/error.log
slow-query-log = TRUE
slow-query-log-file = /home/mortal/instance-$i/log/slow.log
character-set-server = utf8mb4
default-storage-engine = innodb
#default-authentication-plugin = mysql_native_password
authentication_policy = mysql_native_password
lower-case-table-names = 1
[client]
socket = /home/mortal/instance-$i/mysqld.sock
EOF
done
```
### 初始化基础数据
- 初始化每个实例的数据目录
```bash
cd ~
mysql/bin/mysqld \
--defaults-file=/home/mortal/instance-1/my.cnf \
--initialize-insecure
mysql/bin/mysqld \
--defaults-file=/home/mortal/instance-2/my.cnf \
--initialize-insecure
mysql/bin/mysqld \
--defaults-file=/home/mortal/instance-3/my.cnf \
--initialize-insecure
```
### 启动 mysql
- 启动每个实例的 mysql
```bash
cd ~
mysql/bin/mysqld_safe \
--defaults-file=/home/mortal/instance-1/my.cnf \
&>> instance-1/log/mysqld_safe.out
mysql/bin/mysqld_safe \
--defaults-file=/home/mortal/instance-2/my.cnf \
&>> instance-2/log/mysqld_safe.out
mysql/bin/mysqld_safe \
--defaults-file=/home/mortal/instance-3/my.cnf \
&>> instance-3/log/mysqld_safe.out
```
### 设置 root 密码
- 设置 mysql root 账户的密码
```bash
cd ~
mysql/bin/mysqladmin \
--defaults-file=/home/mortal/instance-1/my.cnf \
password
mysql/bin/mysqladmin \
--defaults-file=/home/mortal/instance-2/my.cnf \
password
mysql/bin/mysqladmin \
--defaults-file=/home/mortal/instance-3/my.cnf \
password
```
### 客户端链接
- 使用本机客户端链接 mysql
```bash
cd ~
mysql/bin/mysql \
--defaults-file=/home/mortal/instance-1/my.cnf \
-uroot \
-p
mysql/bin/mysql \
--defaults-file=/home/mortal/instance-2/my.cnf \
-uroot \
-p
mysql/bin/mysql \
--defaults-file=/home/mortal/instance-3/my.cnf \
-uroot \
-p
```